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 (*die_routine
)(const char *err
, va_list params
) NORETURN
= die_builtin
;
45 static void (*error_routine
)(const char *err
, va_list params
) = error_builtin
;
46 static void (*warn_routine
)(const char *err
, va_list params
) = warn_builtin
;
48 void set_die_routine(void (*routine
)(const char *err
, va_list params
) NORETURN
)
50 die_routine
= routine
;
53 void usage(const char *err
)
58 void die(const char *err
, ...)
62 va_start(params
, err
);
63 die_routine(err
, params
);
67 int error(const char *err
, ...)
71 va_start(params
, err
);
72 error_routine(err
, params
);
77 void warning(const char *warn
, ...)
81 va_start(params
, warn
);
82 warn_routine(warn
, params
);