diff --git a/include/decl.h b/include/decl.h index 1ff73009c..05aa7f895 100644 --- a/include/decl.h +++ b/include/decl.h @@ -7,13 +7,13 @@ #define DECL_H #define E extern -#if !defined(MFLOPPY) && !defined(VMS) && !defined(WIN32) +#if !defined(MICRO) && !defined(VMS) && !defined(WIN32) #define LOCKNAMESIZE (PL_NSIZ + 14) /* long enough for uid+name+.99 */ #define LOCKNAMEINIT "1lock" #define BONESINIT "bonesnn.xxx" #define BONESSIZE sizeof(BONESINIT) #else -#if defined(MFLOPPY) +#if defined(MICRO) #define LOCKNAMESIZE FILENAME #define LOCKNAMEINIT "" #define BONESINIT "" @@ -52,7 +52,7 @@ #define SAVEX "" #if !defined(SAVE_EXTENSION) #ifdef MICRO -#define SAVE_EXTENSION ".sav" +#define SAVE_EXTENSION ".svh" #endif #ifdef WIN32 #define SAVE_EXTENSION ".NetHack-saved-game" diff --git a/src/files.c b/src/files.c index 7e3748b44..2e8745fe3 100644 --- a/src/files.c +++ b/src/files.c @@ -1045,7 +1045,14 @@ boolean regularize_it; regoffset = 5; indicator_spot = 2; #endif -#if defined(MICRO) && !defined(VMS) && !defined(WIN32) +#if defined(MSDOS) + if (strlen(g.SAVEP) < (SAVESIZE - 1)) + Strcpy(g.SAVEF, g.SAVEP); + if (strlen(g.SAVEF) < (SAVESIZE - 1)) + (void) strncat(g.SAVEF, g.plname, + (SAVESIZE - strlen(g.SAVEF))); +#endif +#if defined(MICRO) && !defined(VMS) && !defined(WIN32) && !defined(MSDOS) if (strlen(g.SAVEP) < (SAVESIZE - 1)) Strcpy(g.SAVEF, g.SAVEP); else @@ -1076,9 +1083,20 @@ boolean regularize_it; } #ifdef SAVE_EXTENSION if (strlen(SAVE_EXTENSION) > 0 && !overflow) { - if (strlen(g.SAVEF) + strlen(SAVE_EXTENSION) < (SAVESIZE - 1)) + if (strlen(g.SAVEF) + strlen(SAVE_EXTENSION) < (SAVESIZE - 1)) { Strcat(g.SAVEF, SAVE_EXTENSION); - else +#ifdef MSDOS +#ifdef SYSCF + if (idx >= historical && idx <= ascii) { + /* we did leave room for the extra char in SAVE_EXTENSION */ + g.SAVEF[strlen(g.SAVEF)-1] = + (idx == lendian) ? 'l' : + (idx == ascii) ? 'a' : '\0'; + } + sfindicator = sfoprocs[idx].ext; +#endif +#endif + } else overflow = 3; } #endif diff --git a/sys/msdos/vidvesa.c b/sys/msdos/vidvesa.c index e9b7bb183..65ae2e845 100644 --- a/sys/msdos/vidvesa.c +++ b/sys/msdos/vidvesa.c @@ -62,7 +62,7 @@ extern int attrib_text_normal; /* text mode normal attribute */ extern int attrib_gr_normal; /* graphics mode normal attribute */ extern int attrib_gr_intense; /* graphics mode intense attribute */ extern boolean inmap; /* in the map window */ -extern boolean restoring; +/* extern boolean g.restoring; */ /* * Global Variables @@ -609,7 +609,7 @@ int x, y; clipx = clipxmax - (viewport_size - 1); } if (clipx != oldx) { - if (on_level(&u.uz0, &u.uz) && !restoring) + if (on_level(&u.uz0, &u.uz) && !g.restoring) /* (void) doredraw(); */ vesa_redrawmap(); } diff --git a/sys/msdos/vidvga.c b/sys/msdos/vidvga.c index 4e8a18206..13c873737 100644 --- a/sys/msdos/vidvga.c +++ b/sys/msdos/vidvga.c @@ -435,7 +435,7 @@ static void vga_cliparound(x, y) int x, y; { - extern boolean restoring; +/* extern boolean g.restoring; */ int oldx = clipx; if (!iflags.tile_view || iflags.over_view || iflags.traditional_view) @@ -449,7 +449,7 @@ int x, y; clipx = clipxmax - (viewport_size - 1); } if (clipx != oldx) { - if (on_level(&u.uz0, &u.uz) && !restoring) + if (on_level(&u.uz0, &u.uz) && !g.restoring) /* (void) doredraw(); */ vga_redrawmap(1); } diff --git a/sys/share/pcmain.c b/sys/share/pcmain.c index 6c59b8c00..a48f974b3 100644 --- a/sys/share/pcmain.c +++ b/sys/share/pcmain.c @@ -7,6 +7,7 @@ #include "hack.h" #include "dlb.h" +#include "sfproto.h" #ifndef NO_SIGNAL #include @@ -185,17 +186,17 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/ int fd; boolean have_syscf = FALSE; - (void) strncpy(hackdir, dir, PATHLEN - 1); - hackdir[PATHLEN - 1] = '\0'; + (void) strncpy(g.hackdir, dir, PATHLEN - 1); + g.hackdir[PATHLEN - 1] = '\0'; #ifdef NOCWD_ASSUMPTIONS { int prefcnt; - fqn_prefix[0] = (char *) alloc(strlen(hackdir) + 2); - Strcpy(fqn_prefix[0], hackdir); - append_slash(fqn_prefix[0]); + g.fqn_prefix[0] = (char *) alloc(strlen(g.hackdir) + 2); + Strcpy(g.fqn_prefix[0], g.hackdir); + append_slash(g.fqn_prefix[0]); for (prefcnt = 1; prefcnt < PREFIX_COUNT; prefcnt++) - fqn_prefix[prefcnt] = fqn_prefix[0]; + g.fqn_prefix[prefcnt] = g.fqn_prefix[0]; #if defined(MSDOS) /* sysconf should be searched for in this location */ @@ -204,11 +205,11 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/ if ((sptr = index(envp, ';')) != 0) *sptr = '\0'; if (strlen(envp) > 0) { - fqn_prefix[SYSCONFPREFIX] = + g.fqn_prefix[SYSCONFPREFIX] = (char *) alloc(strlen(envp) + 10); - Strcpy(fqn_prefix[SYSCONFPREFIX], envp); - append_slash(fqn_prefix[SYSCONFPREFIX]); - Strcat(fqn_prefix[SYSCONFPREFIX], "NetHack\\"); + Strcpy(g.fqn_prefix[SYSCONFPREFIX], envp); + append_slash(g.fqn_prefix[SYSCONFPREFIX]); + Strcat(g.fqn_prefix[SYSCONFPREFIX], "NetHack\\"); } } @@ -229,7 +230,7 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/ /* No SYSCF_FILE where there should be one, and without an installer, a user may not be able to place one there. So, let's try somewhere else... */ - fqn_prefix[SYSCONFPREFIX] = fqn_prefix[0]; + g.fqn_prefix[SYSCONFPREFIX] = g.fqn_prefix[0]; /* Is there a SYSCF_FILE there? */ fd = open(fqname(SYSCF_FILE, SYSCONFPREFIX, 0), O_RDONLY); @@ -247,10 +248,10 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/ if ((sptr = index(envp, ';')) != 0) *sptr = '\0'; if (strlen(envp) > 0) { - fqn_prefix[CONFIGPREFIX] = + g.fqn_prefix[CONFIGPREFIX] = (char *) alloc(strlen(envp) + 2); - Strcpy(fqn_prefix[CONFIGPREFIX], envp); - append_slash(fqn_prefix[CONFIGPREFIX]); + Strcpy(g.fqn_prefix[CONFIGPREFIX], envp); + append_slash(g.fqn_prefix[CONFIGPREFIX]); } } #endif @@ -286,11 +287,11 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/ if (iflags.BIOS && iflags.use_color) set_colors(); #endif - if (!hackdir[0]) + if (!g.hackdir[0]) #if !defined(LATTICE) && !defined(AMIGA) - Strcpy(hackdir, orgdir); + Strcpy(g.hackdir, orgdir); #else - Strcpy(hackdir, HACKDIR); + Strcpy(g.hackdir, HACKDIR); #endif if (argc > 1) { if (argcheck(argc, argv, ARG_VERSION) == 2) @@ -317,7 +318,7 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/ } if (!*dir) error("Flag -d must be followed by a directory name."); - Strcpy(hackdir, dir); + Strcpy(g.hackdir, dir); } if (argc > 1) { /* @@ -326,7 +327,7 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/ */ if (!strncmp(argv[1], "-s", 2)) { #if defined(CHDIR) && !defined(NOCWD_ASSUMPTIONS) - chdirx(hackdir, 0); + chdirx(g.hackdir, 0); #endif #ifdef SYSCF initoptions(); @@ -366,7 +367,7 @@ _CrtSetReportFile(_CRT_ASSERT, _CRTDBG_FILE_STDERR);*/ * code parallel to other ports. */ #if defined(CHDIR) && !defined(NOCWD_ASSUMPTIONS) - chdirx(hackdir, 1); + chdirx(g.hackdir, 1); #endif #if defined(MSDOS)