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:
@ -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
18
usage.c
@ -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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user