Merge branch 'jk/report-fn-typedef'

Code clean-up.

* jk/report-fn-typedef:
  usage: define a type for a reporting function
This commit is contained in:
Junio C Hamano
2020-11-02 13:17:42 -08:00
2 changed files with 16 additions and 14 deletions

View File

@ -489,11 +489,13 @@ static inline int const_error(void)
#define error_errno(...) (error_errno(__VA_ARGS__), const_error()) #define error_errno(...) (error_errno(__VA_ARGS__), const_error())
#endif #endif
void set_die_routine(NORETURN_PTR void (*routine)(const char *err, va_list params)); typedef void (*report_fn)(const char *, va_list params);
void set_error_routine(void (*routine)(const char *err, va_list params));
extern void (*get_error_routine(void))(const char *err, va_list params); void set_die_routine(NORETURN_PTR report_fn routine);
void set_warn_routine(void (*routine)(const char *warn, va_list params)); void set_error_routine(report_fn routine);
extern void (*get_warn_routine(void))(const char *warn, va_list params); report_fn get_error_routine(void);
void set_warn_routine(report_fn routine);
report_fn get_warn_routine(void);
void set_die_is_recursing_routine(int (*routine)(void)); void set_die_is_recursing_routine(int (*routine)(void));
int starts_with(const char *str, const char *prefix); int starts_with(const char *str, const char *prefix);

18
usage.c
View File

@ -108,33 +108,33 @@ static int die_is_recursing_builtin(void)
/* If we are in a dlopen()ed .so write to a global variable would segfault /* If we are in a dlopen()ed .so write to a global variable would segfault
* (ugh), so keep things static. */ * (ugh), so keep things static. */
static NORETURN_PTR void (*usage_routine)(const char *err, va_list params) = usage_builtin; static NORETURN_PTR report_fn usage_routine = usage_builtin;
static NORETURN_PTR void (*die_routine)(const char *err, va_list params) = die_builtin; static NORETURN_PTR report_fn die_routine = die_builtin;
static void (*error_routine)(const char *err, va_list params) = error_builtin; static report_fn error_routine = error_builtin;
static void (*warn_routine)(const char *err, va_list params) = warn_builtin; static report_fn warn_routine = warn_builtin;
static int (*die_is_recursing)(void) = die_is_recursing_builtin; static int (*die_is_recursing)(void) = die_is_recursing_builtin;
void set_die_routine(NORETURN_PTR void (*routine)(const char *err, va_list params)) void set_die_routine(NORETURN_PTR report_fn routine)
{ {
die_routine = routine; die_routine = routine;
} }
void set_error_routine(void (*routine)(const char *err, va_list params)) void set_error_routine(report_fn routine)
{ {
error_routine = routine; error_routine = routine;
} }
void (*get_error_routine(void))(const char *err, va_list params) report_fn get_error_routine(void)
{ {
return error_routine; return error_routine;
} }
void set_warn_routine(void (*routine)(const char *warn, va_list params)) void set_warn_routine(report_fn routine)
{ {
warn_routine = routine; warn_routine = routine;
} }
void (*get_warn_routine(void))(const char *warn, va_list params) report_fn get_warn_routine(void)
{ {
return warn_routine; return warn_routine;
} }