4 * Various reporting routines.
5 * Originally copied from GIT source.
7 * Copyright (C) Linus Torvalds, 2005
11 static void report(const char *prefix
, const char *err
, va_list params
)
14 vsnprintf(msg
, sizeof(msg
), err
, params
);
15 fprintf(stderr
, " %s%s\n", prefix
, msg
);
18 static NORETURN
void usage_builtin(const char *err
)
20 fprintf(stderr
, "\n Usage: %s\n", err
);
24 static NORETURN
void die_builtin(const char *err
, va_list params
)
26 report(" Fatal: ", err
, params
);
30 static void error_builtin(const char *err
, va_list params
)
32 report(" Error: ", err
, params
);
35 static void warn_builtin(const char *warn
, va_list params
)
37 report(" Warning: ", warn
, params
);
40 /* If we are in a dlopen()ed .so write to a global variable would segfault
41 * (ugh), so keep things static. */
42 static void (*usage_routine
)(const char *err
) NORETURN
= usage_builtin
;
43 static void (*die_routine
)(const char *err
, va_list params
) NORETURN
= die_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_die_routine(void (*routine
)(const char *err
, va_list params
) NORETURN
)
49 die_routine
= routine
;
52 void usage(const char *err
)
57 void die(const char *err
, ...)
61 va_start(params
, err
);
62 die_routine(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
);