]> granicus.if.org Git - nethack/commitdiff
adjust sample config file when STATUS_HILITES isn't defined
authornhmall <nhmall@nethack.org>
Sun, 25 Nov 2018 04:14:20 +0000 (23:14 -0500)
committernhmall <nhmall@nethack.org>
Sun, 25 Nov 2018 04:14:20 +0000 (23:14 -0500)
On Windows, if you build without STATUS_HILITES defined,
you'll be greeted by the following barrage of errors when
you start the game.

On Windows, use makedefs to detect that STATUS_HILITES
isn't defined, and comment out the offending lines in
the sample config file.

Errors received before this change:

OPTIONS=statushilites
  * Line 197: 'statushilites' is not supported.

 OPTIONS=hilite_status:hitpoints/100%/gray&normal
  * Line 200: 'hilite_status' is not supported.

 OPTIONS=hilite_status:hitpoints/<100%/green&normal
  * Line 201: 'hilite_status' is not supported.

 OPTIONS=hilite_status:hitpoints/<66%/yellow&normal
  * Line 202: 'hilite_status' is not supported.

 OPTIONS=hilite_status:hitpoints/<50%/orange&normal
  * Line 203: 'hilite_status' is not supported.

 OPTIONS=hilite_status:hitpoints/<33%/red&bold
  * Line 204: 'hilite_status' is not supported.

 OPTIONS=hilite_status:hitpoints/<15%/red&inverse
  * Line 205: 'hilite_status' is not supported.

 OPTIONS=hilite_status:power/100%/gray&normal
  * Line 208: 'hilite_status' is not supported.

 OPTIONS=hilite_status:power/<100%/green&normal
  * Line 209: 'hilite_status' is not supported.

 OPTIONS=hilite_status:power/<66%/yellow&normal
  * Line 210: 'hilite_status' is not supported.

 OPTIONS=hilite_status:power/<50%/orange&normal
  * Line 211: 'hilite_status' is not supported.

 OPTIONS=hilite_status:power/<33%/red&bold
  * Line 212: 'hilite_status' is not supported.

 OPTIONS=hilite_status:cap/burdened/yellow/stressed/orange/strained/red&bold/ove
 rtaxed/red&inverse/overloaded/red&inverse&blink
  * Line 215: 'hilite_status' is not supported.

 OPTIONS=hilite_status:hunger/satiated/yellow/hungry/orange/weak/red&bold/fainti
 ng/red&inverse/fainted/red&inverse&blink
  * Line 218: 'hilite_status' is not supported.
 Hit <Enter> to continue.

sys/winnt/Makefile.msc
util/makedefs.c

index 926eed8ad16d30e5ad83906631e4b9f0e36c55eb..3f2c76fd53ca928281621599814652490c82db31 100644 (file)
@@ -686,7 +686,8 @@ $(O)install.tag:    $(DAT)\data     $(DAT)\rumors    $(DAT)\dungeon \
        if exist $(DOC)\nethack.txt copy $(DOC)\nethack.txt $(GAMEDIR)\NetHack.txt
        @if exist $(GAMEDIR)\NetHack.PDB echo NOTE: You may want to remove $(GAMEDIR:\=/)/NetHack.PDB to conserve space
        @if exist $(GAMEDIR)\NetHackW.PDB echo NOTE: You may want to remove $(GAMEDIR:\=/)/NetHackW.PDB to conserve space
-       -if not exist $(GAMEDIR)\defaults.nh copy $(MSWSYS)\defaults.nh   $(GAMEDIR)\defaults.nh
+       $(U)makedefs -c
+       -if not exist $(GAMEDIR)\defaults.nh copy fixed_defaults.nh   $(GAMEDIR)\defaults.nh
        -if not exist $(GAMEDIR)\record. goto>$(GAMEDIR)\record.
        echo install done > $@
 
@@ -1359,6 +1360,7 @@ clean:
        if exist $(U)dgncomp.exe   del $(U)dgncomp.exe
        if exist $(SRC)\*.lnk      del $(SRC)\*.lnk
        if exist $(SRC)\*.map      del $(SRC)\*.map
+       if exist $(SRC)\fixed_defaults.nh del $(SRC)\fixed_defaults.nh
        if exist $(O)install.tag   del $(O)install.tag
        if exist $(O)console.res  del $(O)console.res
        if exist $(O)dgncomp.MAP  del $(O)dgncomp.MAP
index 0b97a8bcbce23ee53024138481144724835c8bc6..29a528f0158e275d71d8ff6fa187d3757b398a2e 100644 (file)
@@ -111,6 +111,15 @@ static const char SCCS_Id[] UNUSED = "@(#)makedefs.c\t3.6\t2018/03/02";
 #endif /* else !MAC */
 #endif /* else !AMIGA */
 
+#if !defined(STATUS_HILITES) && defined(WIN32)
+#define FIX_SAMPLECONFIG
+#endif
+
+#ifdef WIN32
+#define SAMPLE_CONFIGFILE "../sys/winnt/defaults.nh"
+#define FIXED_CONFIGFILE "./fixed_defaults.nh"
+#endif
+
 static const char
     *Dont_Edit_Code =
         "/* This source file is generated by 'makedefs'.  Do not edit. */\n",
@@ -162,6 +171,9 @@ void NDECL(do_questtxt);
 void NDECL(do_rumors);
 void NDECL(do_oracles);
 void NDECL(do_vision);
+#ifdef WIN32
+void NDECL(do_fix_sampleconfig);
+#endif
 
 extern void NDECL(monst_init);   /* monst.c */
 extern void NDECL(objects_init); /* objects.c */
@@ -364,7 +376,12 @@ char *options;
         case 'Z':
             do_vision();
             break;
-
+#ifdef WIN32
+        case 'c':
+        case 'C':
+            do_fix_sampleconfig();
+            break;
+#endif
         default:
             Fprintf(stderr, "Unknown option '%c'.\n", *options);
             (void) fflush(stderr);
@@ -1457,6 +1474,45 @@ char *githash, *gitbranch;
     return FALSE;
 }
 
+#ifdef WIN32
+void
+do_fix_sampleconfig()
+{
+    FILE *scfp, *ofcfp;
+    char fixedline[600];
+    char *line;
+
+    if (!(scfp = fopen(SAMPLE_CONFIGFILE, RDTMODE))) {
+        return;
+    }
+    if (!(ofcfp = fopen(FIXED_CONFIGFILE, WRTMODE))) {
+        return;
+    }
+
+    /* read the sample config file */
+    while ((line = fgetline(scfp)) != 0) {
+        /* comment out the STATUS_HILITES related lines */
+        if (strlen(line) < (600 - 1)) {
+            if (strstr(line, "statushilites") || strstr(line, "hilite_status:")) {
+#ifdef FIX_SAMPLECONFIG
+                fixedline[0] = '#';
+                Strcpy(&fixedline[1], line);
+#else
+                Strcpy(fixedline, line);
+#endif
+                fputs(fixedline, ofcfp);
+           } else {
+                fputs(line, ofcfp);            
+           }
+       }
+        free(line);
+    }
+    Fclose(scfp);
+    Fclose(ofcfp);
+    return;
+}
+#endif /* WIN32 */
+
 static int
 case_insensitive_comp(s1, s2)
 const char *s1;