2 * GIT - The information manager from hell
4 * Copyright (C) Linus Torvalds, 2005
6 #include "git-compat-util.h"
8 static void report(const char *prefix
, const char *err
, va_list params
)
10 fputs(prefix
, stderr
);
11 vfprintf(stderr
, err
, params
);
15 static NORETURN
void usage_builtin(const char *err
)
17 fprintf(stderr
, "usage: %s\n", err
);
21 static NORETURN
void die_builtin(const char *err
, va_list params
)
23 report("fatal: ", err
, params
);
27 static void error_builtin(const char *err
, va_list params
)
29 report("error: ", err
, params
);
33 /* If we are in a dlopen()ed .so write to a global variable would segfault
34 * (ugh), so keep things static. */
35 static void (*usage_routine
)(const char *err
) NORETURN
= usage_builtin
;
36 static void (*die_routine
)(const char *err
, va_list params
) NORETURN
= die_builtin
;
37 static void (*error_routine
)(const char *err
, va_list params
) = error_builtin
;
39 void set_usage_routine(void (*routine
)(const char *err
) NORETURN
)
41 usage_routine
= routine
;
44 void set_die_routine(void (*routine
)(const char *err
, va_list params
) NORETURN
)
46 die_routine
= routine
;
49 void set_error_routine(void (*routine
)(const char *err
, va_list params
))
51 error_routine
= routine
;
55 void usage(const char *err
)
60 void die(const char *err
, ...)
64 va_start(params
, err
);
65 die_routine(err
, params
);
69 int error(const char *err
, ...)
73 va_start(params
, err
);
74 error_routine(err
, params
);