error.h 1.11 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
/*
 * Copyright (C) the libgit2 contributors. All rights reserved.
 *
 * This file is part of libgit2, distributed under the GNU GPL v2 with
 * a Linking Exception. For full terms see the included COPYING file.
 */

#ifndef CLI_error_h__
#define CLI_error_h__

11
#include "common.h"
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
#include <stdio.h>

#define CLI_EXIT_OK      0
#define CLI_EXIT_ERROR   1
#define CLI_EXIT_OS    128
#define CLI_EXIT_GIT   128
#define CLI_EXIT_USAGE 129

#define cli_error__print(fmt) do { \
		va_list ap; \
		va_start(ap, fmt); \
		fprintf(stderr, "%s: ", PROGRAM_NAME); \
		vfprintf(stderr, fmt, ap); \
		fprintf(stderr, "\n"); \
		va_end(ap); \
	} while(0)

GIT_INLINE(int) cli_error(const char *fmt, ...)
{
	cli_error__print(fmt);
	return CLI_EXIT_ERROR;
}

GIT_INLINE(int) cli_error_usage(const char *fmt, ...)
{
	cli_error__print(fmt);
	return CLI_EXIT_USAGE;
}

GIT_INLINE(int) cli_error_git(void)
{
	const git_error *err = git_error_last();
	fprintf(stderr, "%s: %s\n", PROGRAM_NAME,
	        err ? err->message : "unknown error");
	return CLI_EXIT_GIT;
}

#define cli_error_os() (perror(PROGRAM_NAME), CLI_EXIT_OS)

#endif /* CLI_error_h__ */