more ATTNORETURN

A recent commit to alloc.c by Keni drew attention to the fact that
there are extern prototypes scattered around in various .c files.
Those can make use of ATTRNORETURN (non-gcc compilers and C23) the
same way the prototypes in extern.h can, and they were overlooked
when ATTRNORETURN was first added.
This commit is contained in:
nhmall
2023-01-12 15:38:15 -05:00
parent 1b4161c168
commit 6e136c6f7d
9 changed files with 26 additions and 22 deletions

View File

@@ -25,7 +25,7 @@
#endif
#if defined(MICRO) || defined(OS2)
void nethack_exit(int) NORETURN;
ATTRNORETURN void nethack_exit(int) NORETURN;
#else
#define nethack_exit exit
#endif

View File

@@ -29,7 +29,7 @@
#endif
#if defined(MICRO) || defined(OS2)
void nethack_exit(int) NORETURN;
ATTRNORETURN void nethack_exit(int) NORETURN;
#else
#define nethack_exit exit
#endif

View File

@@ -35,10 +35,10 @@ static void process_options(int, char **);
static void consume_arg(int, int *, char ***);
static void consume_two_args(int, int *, char ***);
static void early_options(int *, char ***, char **);
static void opt_terminate(void) NORETURN;
static void opt_usage(const char *) NORETURN;
ATTRNORETURN static void opt_terminate(void) NORETURN;
ATTRNORETURN static void opt_usage(const char *) NORETURN;
static void opt_showpaths(const char *);
static void scores_only(int, char **, const char *) NORETURN;
ATTRNORETURN static void scores_only(int, char **, const char *) NORETURN;
#ifdef _M_UNIX
extern void check_sco_console(void);
@@ -702,7 +702,7 @@ early_options(int *argc_p, char ***argv_p, char **hackdir_p)
/* for command-line options that perform some immediate action and then
terminate the program without starting play, like 'nethack --version'
or 'nethack -s Zelda'; do some cleanup before that termination */
static void
ATTRNORETURN static void
opt_terminate(void)
{
config_error_done(); /* free memory allocated by config_error_init() */
@@ -711,7 +711,7 @@ opt_terminate(void)
/*NOTREACHED*/
}
static void
ATTRNORETURN static void
opt_usage(const char *hackdir)
{
#ifdef CHDIR
@@ -744,7 +744,7 @@ opt_showpaths(const char *dir)
/* handle "-s <score options> [character-names]" to show all the entries
in the high scores file ('record') belonging to particular characters;
nethack will end after doing so without starting play */
static void
ATTRNORETURN static void
scores_only(int argc, char **argv, const char *dir)
{
/* do this now rather than waiting for final termination, in case there

View File

@@ -27,7 +27,7 @@ char *translate_path_variables(const char *, char *);
char *exename(void);
boolean fakeconsole(void);
void freefakeconsole(void);
extern void nethack_exit(int) NORETURN;
ATTRNORETURN extern void nethack_exit(int) NORETURN;
#if defined(MSWIN_GRAPHICS)
extern void mswin_destroy_reg(void);
#endif
@@ -454,6 +454,8 @@ extern const char *known_restrictions[]; /* symbols.c */
* WinMain exist, the resulting executable won't work correctly.
*/
DISABLE_WARNING_UNREACHABLE_CODE
#if defined(__MINGW32__) && defined(MSWIN_GRAPHICS)
#define MAIN mingw_main
#else
@@ -735,6 +737,8 @@ attempt_restore:
return 0;
}
RESTORE_WARNING_UNREACHABLE_CODE
static void
process_options(int argc, char * argv[])
{