Add warning_gettext() wrapper function that changes to the user locale,

then calls gettext().
Add U_ macro that calls warning_gettext() instead of gettext().
Rename warning2()/error2() back to warning_nodebug()/error_nodebug().
This commit is contained in:
Todd C. Miller
2013-11-18 08:59:57 -07:00
parent 99b7351de0
commit 96eb2c4f8f
50 changed files with 445 additions and 492 deletions

View File

@@ -120,82 +120,23 @@
} while (0)
#endif /* SUDO_ERROR_WRAP */
#if defined(__GNUC__) && __GNUC__ == 2
# define fatal_nodebug(fmt...) do { \
warning_set_locale(); \
fatal2(fmt); \
} while (0)
# define fatalx_nodebug(fmt...) do { \
warning_set_locale(); \
fatalx2(fmt); \
} while (0)
# define warning_nodebug(fmt...) do { \
warning_set_locale(); \
warning2(fmt); \
warning_restore_locale(); \
} while (0)
# define warningx_nodebug(fmt...) do { \
warning_set_locale(); \
warningx2(fmt); \
warning_restore_locale(); \
} while (0)
#else
# define fatal_nodebug(...) do { \
warning_set_locale(); \
fatal2(__VA_ARGS__); \
} while (0)
# define fatalx_nodebug(...) do { \
warning_set_locale(); \
fatalx2(__VA_ARGS__); \
} while (0)
# define warning_nodebug(...) do { \
warning_set_locale(); \
warning2(__VA_ARGS__); \
warning_restore_locale(); \
} while (0)
# define warningx_nodebug(...) do { \
warning_set_locale(); \
warningx2(__VA_ARGS__); \
warning_restore_locale(); \
} while (0)
#endif /* __GNUC__ == 2 */
#define vfatal_nodebug(fmt, ap) do { \
warning_set_locale(); \
vfatal2((fmt), (ap)); \
} while (0)
#define vfatalx_nodebug(fmt, ap) do { \
warning_set_locale(); \
vfatalx2((fmt), (ap)); \
} while (0)
#define vwarning_nodebug(fmt, ap) do { \
warning_set_locale(); \
vwarning2((fmt), (ap)); \
warning_restore_locale(); \
} while (0)
#define vwarningx_nodebug(fmt, ap) do { \
warning_set_locale(); \
vwarningx2((fmt), (ap)); \
warning_restore_locale(); \
} while (0)
#define fatal_setjmp() (fatal_enable_setjmp(), sigsetjmp(fatal_jmp, 1))
#define fatal_longjmp(val) siglongjmp(fatal_jmp, val)
extern int (*sudo_printf)(int msg_type, const char *fmt, ...);
extern sigjmp_buf fatal_jmp;
int fatal_callback_register(void (*func)(void));
int fatal_callback_register(void (*func)(void));
char *warning_gettext(const char *msgid) __format_arg(1);
void fatal_disable_setjmp(void);
void fatal_enable_setjmp(void);
void fatal2(const char *, ...) __printf0like(1, 2) __attribute__((__noreturn__));
void fatalx2(const char *, ...) __printflike(1, 2) __attribute__((__noreturn__));
void vfatal2(const char *, va_list ap) __printf0like(1, 0) __attribute__((__noreturn__));
void vfatalx2(const char *, va_list ap) __printflike(1, 0) __attribute__((__noreturn__));
void warning2(const char *, ...) __printf0like(1, 2);
void warningx2(const char *, ...) __printflike(1, 2);
void vwarning2(const char *, va_list ap) __printf0like(1, 0);
void vwarningx2(const char *, va_list ap) __printflike(1, 0);
void warning_set_locale(void);
void warning_restore_locale(void);
void fatal_nodebug(const char *, ...) __printf0like(1, 2) __attribute__((__noreturn__));
void fatalx_nodebug(const char *, ...) __printflike(1, 2) __attribute__((__noreturn__));
void vfatal_nodebug(const char *, va_list ap) __printf0like(1, 0) __attribute__((__noreturn__));
void vfatalx_nodebug(const char *, va_list ap) __printflike(1, 0) __attribute__((__noreturn__));
void warning_nodebug(const char *, ...) __printf0like(1, 2);
void warningx_nodebug(const char *, ...) __printflike(1, 2);
void vwarning_nodebug(const char *, va_list ap) __printf0like(1, 0);
void vwarningx_nodebug(const char *, va_list ap) __printflike(1, 0);
#endif /* _SUDO_FATAL_H_ */