]> granicus.if.org Git - nethack/commitdiff
more ATTNORETURN
authornhmall <nhmall@nethack.org>
Thu, 12 Jan 2023 20:38:15 +0000 (15:38 -0500)
committernhmall <nhmall@nethack.org>
Thu, 12 Jan 2023 20:38:15 +0000 (15:38 -0500)
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.

include/windconf.h
src/end.c
sys/share/pcmain.c
sys/share/pcsys.c
sys/unix/unixmain.c
sys/windows/windmain.c
util/dlb_main.c
util/makedefs.c
win/win32/NetHackW.c

index 2cebcc7ca0251eba80700c2dea184d4c505a23ab..69a4a81f1e63cee8781da72837c542223436d8d3 100644 (file)
@@ -288,7 +288,7 @@ extern int alternative_palette(char *);
 #endif
 
 #define nethack_enter(argc, argv) nethack_enter_windows()
-extern void nethack_exit(int) NORETURN;
+ATTRNORETURN extern void nethack_exit(int) NORETURN;
 extern boolean file_exists(const char *);
 extern boolean file_newer(const char *, const char *);
 #ifndef SYSTEM_H
index 3f2f561d2e72bf6fbecfb9a20380c95ab8fb426c..856de1e600c85490b1ca6850274a909fd460fb77 100644 (file)
--- a/src/end.c
+++ b/src/end.c
@@ -29,7 +29,7 @@ static void disclose(int, boolean);
 static void get_valuables(struct obj *);
 static void sort_valuables(struct valuable_data *, int);
 static void artifact_score(struct obj *, boolean, winid);
-static void really_done(int) NORETURN;
+ATTRNORETURN static void really_done(int) NORETURN;
 static void savelife(int);
 static boolean should_query_disclose_option(int, char *);
 #ifdef DUMPLOG
@@ -38,7 +38,7 @@ static void dump_plines(void);
 static void dump_everything(int, time_t);
 
 #if defined(__BEOS__) || defined(MICRO) || defined(OS2) || defined(WIN32)
-extern void nethack_exit(int) NORETURN;
+ATTRNORETURN extern void nethack_exit(int) NORETURN;
 #else
 #define nethack_exit exit
 #endif
index a82844dde5fb630205c0b4c00d8503fda547996e..764ae8f9474ffe0b81642f8b271f3d795a95311b 100644 (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
index fc2a7d78919d997201627ef218779402aa619daa..482133ee2feb366f03d8d1afa6334c166869aa4b 100644 (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
index 796c6fedc43d24a96cf36bbb6ee90d3fc2d247b8..c9dc92f3f0f153b0f50a16ff0133ed9924e834b6 100644 (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
index e9330b120c58cd8ecf013c68f8e00a15c69cee28..ef8b8517e21d87ca44ba6483af6f891e711c9025 100644 (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[])
 {
index d1a4b41e2b6cd75dc8567013adc3de3769b33afa..137260d190047bcf88223c6f04970b64d673fcf8 100644 (file)
@@ -14,8 +14,8 @@
 #include <string.h>
 #endif
 
-static void xexit(int) NORETURN;
-extern void panic(const char *, ...) NORETURN;
+ATTRNORETURN static void xexit(int) NORETURN;
+ATTRNORETURN extern void panic(const char *, ...) NORETURN;
 char *eos(char *); /* also used by dlb.c */
 FILE *fopen_datafile(const char *, const char *);
 unsigned FITSuint_(unsigned long long, const char *, int);
@@ -33,8 +33,8 @@ extern boolean open_library(const char *, library *);
 extern void close_library(library *);
 
 static void Write(int, char *, long);
-static void usage(void) NORETURN;
-static void verbose_help(void) NORETURN;
+ATTRNORETURN static void usage(void) NORETURN;
+ATTRNORETURN static void verbose_help(void) NORETURN;
 static void write_dlb_directory(int, int, libdir *, long, long, long);
 
 static char default_progname[] = "dlb";
@@ -78,7 +78,7 @@ static char origdir[255] = "";
  *  C dir      chdir to dir (used ONCE, not like tar's -C)
  */
 
-static void
+ATTRNORETURN static void
 usage(void)
 {
     (void) printf("Usage: %s [ctxCIfv] arguments... [files...]\n", progname);
@@ -88,7 +88,7 @@ usage(void)
     /*NOTREACHED*/
 }
 
-static void
+ATTRNORETURN static void
 verbose_help(void)
 {
     static const char *const long_help[] = {
@@ -537,7 +537,7 @@ write_dlb_directory(int out, int nfiles, libdir *ld,
 #endif /* DLBLIB */
 #endif /* DLB */
 
-static void
+ATTRNORETURN static void
 xexit(int retcd)
 {
 #ifdef DLB
index e123a074026ce4bb06d62fc53f81e2ee5fd37803..48ecc06587d35b7862919e86caa9c81bebed07f3 100644 (file)
@@ -179,9 +179,9 @@ unsigned FITSuint_(unsigned long long, const char *, int);
 
 #include "../src/mdlib.c"
 
-static void makedefs_exit(int) NORETURN;
+ATTRNORETURN static void makedefs_exit(int) NORETURN;
 
-static void
+ATTRNORETURN static void
 makedefs_exit(int how)
 {
 #if 0   /* makedefs doesn't need to do this */
index 35828011fab9d9c72fa81886c8c6728c934399a5..632c0595e6471953d8496d8b2b10dfdb2e8b5100 100644 (file)
@@ -53,7 +53,7 @@ Version     _WIN_32IE   Platform/IE
 /*#define COMCTL_URL
  * "http://www.microsoft.com/msdownload/ieplatform/ie/comctrlx86.asp"*/
 
-extern void nethack_exit(int) NORETURN;
+ATTRNORETURN extern void nethack_exit(int) NORETURN;
 static TCHAR *_get_cmd_arg(TCHAR *pCmdLine);
 static HRESULT GetComCtlVersion(LPDWORD pdwMajor, LPDWORD pdwMinor);
 BOOL WINAPI