From: Todd C. Miller Date: Thu, 30 Sep 2004 17:55:21 +0000 (+0000) Subject: Use __attribute__((__noreturn__)) X-Git-Tag: SUDO_1_7_0~913 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8a3302598677b348037c6a46a832884dca8f3d14;p=sudo Use __attribute__((__noreturn__)) --- 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