4 * Various reporting routines.
5 * Originally copied from GIT source.
7 * Copyright (C) Linus Torvalds, 2005
12 static void report(const char *prefix
, const char *err
, va_list params
)
15 vsnprintf(msg
, sizeof(msg
), err
, params
);
16 fprintf(stderr
, " %s%s\n", prefix
, msg
);
19 static NORETURN
void usage_builtin(const char *err
)
21 fprintf(stderr
, "\n Usage: %s\n", err
);
25 static NORETURN
void die_builtin(const char *err
, va_list params
)
27 report(" Fatal: ", err
, params
);
31 static void error_builtin(const char *err
, va_list params
)
33 report(" Error: ", err
, params
);
36 static void warn_builtin(const char *warn
, va_list params
)
38 report(" Warning: ", warn
, params
);
41 /* If we are in a dlopen()ed .so write to a global variable would segfault
42 * (ugh), so keep things static. */
43 static void (*usage_routine
)(const char *err
) NORETURN
= usage_builtin
;
44 static void (*error_routine
)(const char *err
, va_list params
) = error_builtin
;
45 static void (*warn_routine
)(const char *err
, va_list params
) = warn_builtin
;
47 void set_warning_routine(void (*routine
)(const char *err
, va_list params
))
49 warn_routine
= routine
;
52 void usage(const char *err
)
57 void die(const char *err
, ...)
61 va_start(params
, err
);
62 die_builtin(err
, params
);
66 int error(const char *err
, ...)
70 va_start(params
, err
);
71 error_routine(err
, params
);
76 void warning(const char *warn
, ...)
80 va_start(params
, warn
);
81 warn_routine(warn
, params
);