From 8a3302598677b348037c6a46a832884dca8f3d14 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Thu, 30 Sep 2004 17:55:21 +0000 Subject: [PATCH] Use __attribute__((__noreturn__)) --- compat.h | 5 +++++ sudo.c | 6 ++++-- visudo.c | 12 ++++++++---- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/compat.h b/compat.h index a049a1a32..c4eaeee05 100644 --- a/compat.h +++ b/compat.h @@ -36,6 +36,11 @@ # endif #endif /* __P */ +/* Define away __attribute__ for non-gcc or old gcc */ +#if !defined(__GNUC__) || __GNUC__ < 2 || __GNUC__ == 2 && __GNUC_MINOR__ < 5 +#define __attribute__(x) +#endif + /* * Some systems lack full limit definitions. */ diff --git a/sudo.c b/sudo.c index e43144238..ed4e01c54 100644 --- a/sudo.c +++ b/sudo.c @@ -103,8 +103,10 @@ static int init_vars __P((int)); static int parse_args __P((int, char **)); static void initial_setup __P((void)); static void set_loginclass __P((struct passwd *)); -static void usage __P((int)); -static void usage_excl __P((int)); +static void usage __P((int)) + __attribute__((__noreturn__)); +static void usage_excl __P((int)) + __attribute__((__noreturn__)); static struct passwd *get_authpw __P((void)); extern int sudo_edit __P((int, char **)); extern void list_matches __P((void)); diff --git a/visudo.c b/visudo.c index 257390742..47b235325 100644 --- a/visudo.c +++ b/visudo.c @@ -94,9 +94,11 @@ struct sudoersfile { /* * Function prototypes */ -static void usage __P((void)); +static void usage __P((void)) + __attribute__((__noreturn__)); static char whatnow __P((void)); -static RETSIGTYPE Exit __P((int)); +static RETSIGTYPE Exit __P((int)) + __attribute__((__noreturn__)); static void setup_signals __P((void)); static int run_command __P((char *, char **)); static int check_syntax __P((char *)); @@ -112,8 +114,10 @@ int usergr_matches __P((char *, char *, struct passwd *)); int userpw_matches __P((char *, char *, struct passwd *)); void yyerror __P((const char *)); void yyrestart __P((FILE *)); -void Err __P((int, const char *, ...)); -void Errx __P((int, const char *, ...)); +void Err __P((int, const char *, ...)) + __attribute__((__noreturn__)); +void Errx __P((int, const char *, ...)) + __attribute__((__noreturn__)); /* * External globals exported by the parser -- 2.40.0