Define sudo_warn_setlocale_t and use sudo_conv_t in sudo_fatal.h.
Works around a bug in older versions of the HP ANSI C compiler and results in more readable code.
This commit is contained in:
@@ -26,6 +26,8 @@
|
||||
# include "compat/stdbool.h"
|
||||
#endif /* HAVE_STDBOOL_H */
|
||||
|
||||
#include "sudo_plugin.h" /* for conversation function */
|
||||
|
||||
/*
|
||||
* We wrap fatal/fatalx and warn/warnx so that the same output can
|
||||
* go to the debug file, if there is one.
|
||||
@@ -158,15 +160,12 @@
|
||||
#endif /* SUDO_ERROR_WRAP */
|
||||
|
||||
typedef void (*sudo_fatal_callback_t)(void);
|
||||
|
||||
struct sudo_conv_message;
|
||||
struct sudo_conv_reply;
|
||||
struct sudo_conv_callback;
|
||||
typedef bool (*sudo_warn_setlocale_t)(bool, int *);
|
||||
|
||||
sudo_dso_public int sudo_fatal_callback_deregister_v1(sudo_fatal_callback_t func);
|
||||
sudo_dso_public int sudo_fatal_callback_register_v1(sudo_fatal_callback_t func);
|
||||
sudo_dso_public char *sudo_warn_gettext_v1(const char *domainname, const char *msgid) __format_arg(2);
|
||||
sudo_dso_public void sudo_warn_set_locale_func_v1(bool (*func)(bool, int *));
|
||||
sudo_dso_public void sudo_warn_set_locale_func_v1(sudo_warn_setlocale_t func);
|
||||
sudo_dso_public void sudo_fatal_nodebug_v1(const char *fmt, ...) __printf0like(1, 2) __attribute__((__noreturn__));
|
||||
sudo_dso_public void sudo_fatalx_nodebug_v1(const char *fmt, ...) __printflike(1, 2) __attribute__((__noreturn__));
|
||||
sudo_dso_public void sudo_gai_fatal_nodebug_v1(int errnum, const char *fmt, ...) __printflike(2, 3) __attribute__((__noreturn__));
|
||||
@@ -179,7 +178,7 @@ sudo_dso_public void sudo_gai_warn_nodebug_v1(int errnum, const char *fmt, ...)
|
||||
sudo_dso_public void sudo_vwarn_nodebug_v1(const char *fmt, va_list ap) __printf0like(1, 0);
|
||||
sudo_dso_public void sudo_vwarnx_nodebug_v1(const char *fmt, va_list ap) __printflike(1, 0);
|
||||
sudo_dso_public void sudo_gai_vwarn_nodebug_v1(int errnum, const char *fmt, va_list ap) __printflike(2, 0);
|
||||
sudo_dso_public void sudo_warn_set_conversation_v1(int (*conv)(int num_msgs, const struct sudo_conv_message *msgs, struct sudo_conv_reply *replies, struct sudo_conv_callback *callback));
|
||||
sudo_dso_public void sudo_warn_set_conversation_v1(sudo_conv_t conv);
|
||||
|
||||
#define sudo_fatal_callback_deregister(_a) sudo_fatal_callback_deregister_v1((_a))
|
||||
#define sudo_fatal_callback_register(_a) sudo_fatal_callback_register_v1((_a))
|
||||
|
@@ -54,8 +54,8 @@ SLIST_HEAD(sudo_fatal_callback_list, sudo_fatal_callback);
|
||||
|
||||
static struct sudo_fatal_callback_list callbacks = SLIST_HEAD_INITIALIZER(&callbacks);
|
||||
static sudo_conv_t sudo_warn_conversation;
|
||||
static bool (*sudo_warn_setlocale)(bool, int *);
|
||||
static bool (*sudo_warn_setlocale_prev)(bool, int *);
|
||||
static sudo_warn_setlocale_t sudo_warn_setlocale;
|
||||
static sudo_warn_setlocale_t sudo_warn_setlocale_prev;
|
||||
|
||||
static void warning(const char *errstr, const char *fmt, va_list ap);
|
||||
|
||||
@@ -310,7 +310,7 @@ sudo_warn_set_conversation_v1(sudo_conv_t conv)
|
||||
* locale for user warnings.
|
||||
*/
|
||||
void
|
||||
sudo_warn_set_locale_func_v1(bool (*func)(bool, int *))
|
||||
sudo_warn_set_locale_func_v1(sudo_warn_setlocale_t func)
|
||||
{
|
||||
sudo_warn_setlocale_prev = sudo_warn_setlocale;
|
||||
sudo_warn_setlocale = func;
|
||||
|
Reference in New Issue
Block a user