]> granicus.if.org Git - nethack/commitdiff
Allow MICRO and WIN32 code paths to diverge
authornethack.allison <nethack.allison>
Sat, 30 Mar 2002 19:09:56 +0000 (19:09 +0000)
committernethack.allison <nethack.allison>
Sat, 30 Mar 2002 19:09:56 +0000 (19:09 +0000)
There's still a lot of overlap for 3.4.1, but not
100% any longer and it facilitates some improvements
- Allow error save files on WIN32

18 files changed:
include/dlb.h
include/extern.h
include/global.h
include/ntconf.h
src/allmain.c
src/alloc.c
src/decl.c
src/end.c
src/files.c
src/options.c
src/restore.c
src/topten.c
sys/share/pcsys.c
sys/share/pcunix.c
util/lev_main.c
util/makedefs.c
win/share/tile.h
win/share/tilemap.c

index 3af446201737a4c7f2f8ce7e142784487564b08e..b29ca19acf34d68a0b7be2f2e6394eb0d6497116 100644 (file)
@@ -130,7 +130,7 @@ long FDECL(dlb_ftell, (DLB_P));
 #else
 #define WRTMODE "w+"
 #endif
-#if (defined(MICRO) && !defined(AMIGA)) || defined(THINK_C) || defined(__MWERKS__)
+#if (defined(MICRO) && !defined(AMIGA)) || defined(THINK_C) || defined(__MWERKS__) || defined(WIN32)
 # define RDBMODE "rb"
 # define WRBMODE "w+b"
 #else
index 7a1b3801036d831260a5b2b4ed465077fada269d..b9bb78d208e45b56fea1c39c8534a04482c2fa68 100644 (file)
@@ -1176,7 +1176,7 @@ E struct monst *FDECL(mk_mplayer, (struct permonst *,XCHAR_P,
 E void FDECL(create_mplayers, (int,BOOLEAN_P));
 E void FDECL(mplayer_talk, (struct monst *));
 
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
 
 /* ### msdos.c,os2.c,tos.c,winnt.c ### */
 
@@ -1226,7 +1226,7 @@ E int NDECL((*nt_kbhit));
 E void FDECL(Delay, (int));
 # endif /* WIN32 */
 
-#endif /* MICRO */
+#endif /* MICRO || WIN32 */
 
 /* ### mthrowu.c ### */
 
@@ -1366,15 +1366,15 @@ E int NDECL(dohistory);
 
 /* ### pcmain.c ### */
 
-#if defined(MICRO)
+#if defined(MICRO) || defined(WIN32)
 # ifdef CHDIR
 E void FDECL(chdirx, (char *,BOOLEAN_P));
 # endif /* CHDIR */
-#endif /* MICRO */
+#endif /* MICRO || WIN32 */
 
 /* ### pcsys.c ### */
 
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
 E void NDECL(flushout);
 E int NDECL(dosh);
 # ifdef MFLOPPY
@@ -1390,11 +1390,11 @@ E void FDECL(getreturn, (const char *));
 E void VDECL(msmsg, (const char *,...));
 # endif
 E FILE *FDECL(fopenp, (const char *,const char *));
-#endif /* MICRO */
+#endif /* MICRO || WIN32 */
 
 /* ### pctty.c ### */
 
-#if defined(MICRO)
+#if defined(MICRO) || defined(WIN32)
 E void NDECL(gettty);
 E void FDECL(settty, (const char *));
 E void NDECL(setftty);
@@ -1402,7 +1402,7 @@ E void VDECL(error, (const char *,...));
 #if defined(TIMED_DELAY) && defined(_MSC_VER)
 E void FDECL(msleep, (unsigned));
 #endif
-#endif /* MICRO */
+#endif /* MICRO || WIN32 */
 
 /* ### pcunix.c ### */
 
index f21f02adcdacaf6c7850baedc67477e9d16b73df..8ab869048d83a93a2657be79b662fda36088adba 100644 (file)
@@ -225,7 +225,7 @@ typedef xchar       boolean;                /* 0 or 1 */
 #endif
 
 #if defined(MICRO)
-#if !defined(AMIGA) && !defined(TOS) && !defined(OS2_HPFS) && !defined(WIN32)
+#if !defined(AMIGA) && !defined(TOS) && !defined(OS2_HPFS)
 #define SHORT_FILENAMES                /* filenames are 8.3 */
 #endif
 #endif
index 4d848714d292f536eab4a29061d2ce4fdf3c5972..b359df33a39b3050fd28998e9a09f153b65678b0 100644 (file)
@@ -18,9 +18,7 @@
 
 #define PC_LOCKING             /* Prevent overwrites of aborted or in-progress games */
                                /* without first receiving confirmation. */
-#define NOCWD_ASSUMPTIONS      /* Allow paths to be specified for HACKDIR,
-                                  LEVELDIR, SAVEDIR, BONESDIR, DATADIR,
-                                  SCOREDIR, LOCKDIR, and CONFIGDIR */
+
 
 /*
  * -----------------------------------------------------------------
  */
 /* #define SHORT_FILENAMES     /* All NT filesystems support long names now */
 
-#define MICRO          /* always define this! */
+#ifdef MICRO
+#undef MICRO                   /* never define this! */
+#endif
+
+#define NOCWD_ASSUMPTIONS      /* Always define this. There are assumptions that
+                                   it is defined for WIN32.
+                                  Allow paths to be specified for HACKDIR,
+                                  LEVELDIR, SAVEDIR, BONESDIR, DATADIR,
+                                  SCOREDIR, LOCKDIR, and CONFIGDIR */
 #define NO_TERMS
 #define ASCIIGRAPH
 
 #define FILENAME_CMP  stricmp                /* case insensitive */
 #endif
 
-#ifdef MICRO
-# ifndef MICRO_H
-#include "micro.h"     /* contains necessary externs for [os_name].c */
-# endif
+#if 0
+#ifndef C
+#define C(c)   (0x1f & (c))
 #endif
+#ifndef M
+#define M(c)   (0x80 | (c))
+#endif
+extern char levels[], bones[], permbones[],
+#endif /* 0 */
+
+/* this was part of the MICRO stuff in the past */
+extern const char *alllevels, *allbones;
+extern char hackdir[];
+#define ABORT C('a')
+#define getuid() 1
+#define getlogin() ((char *)0)
 
 #include <fcntl.h>
 #ifndef __BORLANDC__
index bcdc12be1f3486feba76f1a2f7e70711cdb8cdac..13c71c6d9ae600234062282a19b3978d6adef030 100644 (file)
@@ -19,7 +19,7 @@ STATIC_DCL void NDECL(do_positionbar);
 void
 moveloop()
 {
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
     char ch;
     int abort_lev;
 #endif
@@ -315,7 +315,7 @@ moveloop()
        flags.move = 1;
 
        if(multi >= 0 && occupation) {
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
            abort_lev = 0;
            if (kbhit()) {
                if ((ch = Getchar()) == ABORT)
@@ -331,14 +331,14 @@ moveloop()
 #endif
                occupation = 0;
            if(
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
                   abort_lev ||
 #endif
                   monster_nearby()) {
                stop_occupation();
                reset_eat();
            }
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
            if (!(++occtime % 7))
                display_nhwindow(WIN_MAP, FALSE);
 #endif
index e8f7e9ddda31f393d7a5c6b33421ec8447b620bf..e545eeacef3bae11f7377877864a361bda905cda 100644 (file)
@@ -56,7 +56,7 @@ register unsigned int lth;
 
 #if defined(MONITOR_HEAP) || defined(WIZARD)
 
-# ifdef MICRO
+# if defined(MICRO) || defined(WIN32)
 /* we actually want to know which systems have an ANSI run-time library
  * to know which support the new %p format for printing pointers.
  * due to the presence of things like gcc, NHSTDC is not a good test.
index a8f5e719c702ad16baee0e37a47ffc40e5e6e19d..08d6b57bd8d7de517df86e85dfdcf132b0b64110 100644 (file)
@@ -77,10 +77,12 @@ NEARDATA long yn_number = 0L;
 
 const char disclosure_options[] = "iavgc";
 
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
 char hackdir[PATHLEN];         /* where rumors, help, record are */
+# ifdef MICRO
 char levels[PATHLEN];          /* where levels are */
-#endif /* MICRO */
+# endif
+#endif /* MICRO || WIN32 */
 
 
 #ifdef MFLOPPY
index 5cbdd73aecea2e22596051ec8a84537e53cba79f..29ccd006af1bd85f8a07995bcae0c11cf055939f 100644 (file)
--- a/src/end.c
+++ b/src/end.c
@@ -240,6 +240,10 @@ register struct monst *mtmp;
        return;
 }
 
+#if defined(WIN32)
+#define NOTIFY_NETHACK_BUGS
+#endif
+
 /*VARARGS1*/
 void
 panic VA_DECL(const char *, str)
@@ -260,15 +264,25 @@ panic VA_DECL(const char *, str)
                  "Program initialization has failed." :
                  "Suddenly, the dungeon collapses.");
 #if defined(WIZARD) && !defined(MICRO)
+# if defined(NOTIFY_NETHACK_BUGS)
+       if (!wizard)
+           raw_printf("Report error to \"%s\".\n%s.\n",
+                       "nethack-bugs@nethack.org",
+                       !program_state.something_worth_saving ? "" :
+                       "An error save file will be created.\n");
+       else if (program_state.something_worth_saving)
+           raw_print("\nAn error save file will be created.\n");
+# else
        if (!wizard)
            raw_printf("Report error to \"%s\"%s.",
-# ifdef WIZARD_NAME    /*(KR1ED)*/
+#  ifdef WIZARD_NAME   /*(KR1ED)*/
                        WIZARD_NAME,
-# else
+#  else
                        WIZARD,
-# endif
+#  endif
                        !program_state.something_worth_saving ? "" :
                        " and it may be possible to rebuild.");
+# endif
        if (program_state.something_worth_saving) {
            set_error_savefile();
            (void) dosave0();
index 20b80ef6ed20bb0aaa71e6bd6ad686dc3e7d5ebe..c2f7bd560e5562d69c2223875f461ebdfd44318a 100644 (file)
@@ -238,7 +238,7 @@ int lev;
        set_levelfile_name(lock, lev);
        fq_lock = fqname(lock, LEVELPREFIX, 0);
 
-#if defined(MICRO)
+#if defined(MICRO) || defined(WIN32)
        /* Use O_TRUNC to force the file to be shortened if it already
         * exists and is currently longer.
         */
@@ -249,7 +249,7 @@ int lev;
 # else
        fd = creat(fq_lock, FCMASK);
 # endif
-#endif /* MICRO */
+#endif /* MICRO || WIN32 */
 
        if (fd >= 0)
            level_info[lev].flags |= LFILE_EXISTS;
@@ -377,7 +377,7 @@ char **bonesid;
        file = set_bonestemp_name();
        file = fqname(file, BONESPREFIX, 0);
 
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
        /* Use O_TRUNC to force the file to be shortened if it already
         * exists and is currently longer.
         */
@@ -399,7 +399,7 @@ char **bonesid;
         */
        (void) chmod(file, FCMASK | 007);  /* allow other users full access */
 # endif /* VMS && !SECURE */
-#endif /* MICRO */
+#endif /* MICRO || WIN32*/
 
        return fd;
 }
@@ -499,7 +499,7 @@ set_savefile_name()
        regularize(SAVEF+7);
        Strcat(SAVEF, ";1");
 #else
-# if defined(MICRO) && !defined(WIN32)
+# if defined(MICRO)
        Strcpy(SAVEF, SAVEP);
 #  ifdef AMIGA
        strncat(SAVEF, bbs_id, PATHLEN);
@@ -566,7 +566,7 @@ create_savefile()
        int fd;
 
        fq_save = fqname(SAVEF, SAVEPREFIX, 0);
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
        fd = open(fq_save, O_WRONLY | O_BINARY | O_CREAT | O_TRUNC, FCMASK);
 #else
 # ifdef MAC
@@ -1112,7 +1112,7 @@ const char *filename;
                }
        }
 
-#if defined(MICRO) || defined(MAC) || defined(__BEOS__)
+#if defined(MICRO) || defined(MAC) || defined(__BEOS__) || defined(WIN32)
        if ((fp = fopenp(fqname(configfile, CONFIGPREFIX, 0), "r"))
                                                                != (FILE *)0)
                return(fp);
@@ -1538,7 +1538,7 @@ const char *filename;
 #define tmp_levels     (char *)0
 #define tmp_ramdisk    (char *)0
 
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
 #undef tmp_levels
        char    tmp_levels[PATHLEN];
 # ifdef MFLOPPY
@@ -1553,7 +1553,7 @@ const char *filename;
 
        if (!(fp = fopen_config_file(filename))) return;
 
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
 # ifdef MFLOPPY
 #  ifndef AMIGA
        tmp_ramdisk[0] = 0;
@@ -1735,7 +1735,7 @@ const char *dir;
            wait_synch();
        }
 #endif  /* !UNIX && !VMS */
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
        char tmp[PATHLEN];
 
 # ifdef OS2_CODEVIEW   /* explicit path on opening for OS/2 */
@@ -1768,7 +1768,7 @@ const char *dir;
                (void) close(fd);
        } else          /* open succeeded */
            (void) close(fd);
-#else /* MICRO */
+#else /* MICRO || WIN32*/
 
 # ifdef MAC
        /* Create the "record" file, if necessary */
@@ -1777,7 +1777,7 @@ const char *dir;
        if (fd != -1) macclose (fd);
 # endif /* MAC */
 
-#endif /* MICRO */
+#endif /* MICRO || WIN32*/
 }
 
 /* ----------  END SCOREBOARD CREATION ----------- */
index 4568766d7e7bcb06896842acf7a983c95e688d15..e8ce17a3d75f3a457ee0756adcfdb166cc9b92a8 100644 (file)
@@ -62,7 +62,7 @@ static struct Bool_Opt
 #else
        {"checkspace", (boolean *)0, FALSE, SET_IN_FILE},
 #endif
-# ifdef MICRO
+# if defined(MICRO) || defined(WIN32)
        {"color",         &iflags.wc_color,TRUE, SET_IN_GAME},          /*WC*/
 # else /* systems that support multiple terminals, many monochrome */
        {"color",         &iflags.wc_color, FALSE, SET_IN_GAME},        /*WC*/
@@ -144,7 +144,7 @@ static struct Bool_Opt
        {"prayconfirm", &flags.prayconfirm, TRUE, SET_IN_GAME},
        {"preload_tiles", &iflags.wc_preload_tiles, TRUE, DISP_IN_GAME},        /*WC*/
        {"pushweapon", &flags.pushweapon, FALSE, SET_IN_GAME},
-#if defined(MICRO) && !defined(AMIGA) && !defined(MSWIN_GRAPHICS)
+#if defined(MICRO) && !defined(AMIGA)
        {"rawio", &iflags.rawio, FALSE, DISP_IN_GAME},
 #else
        {"rawio", (boolean *)0, FALSE, SET_IN_FILE},
@@ -2198,7 +2198,7 @@ map_menu_cmd(ch)
 }
 
 
-#if defined(MICRO) || defined(MAC)
+#if defined(MICRO) || defined(MAC) || defined(WIN32)
 # define OPTIONS_HEADING "OPTIONS"
 #else
 # define OPTIONS_HEADING "NETHACKOPTIONS"
index 7038693a1eea4f39db3dc6df7752eac9cfd00109..6c9edb31fe36f6160cbb9514390e1f7b98fdc2c7 100644 (file)
@@ -6,7 +6,7 @@
 #include "lev.h"
 #include "tcap.h" /* for TERMLIB and ASCIIGRAPH */
 
-#ifdef MICRO
+#if defined(MICRO)
 extern int dotcnt;     /* shared with save */
 extern int dotrow;     /* shared with save */
 #endif
index a2f6e52b5273da4ed09f6c21109642b2d1a87b3f..7ceb275e1d2cc24494477cc84ed148d68308ca87 100644 (file)
@@ -37,7 +37,7 @@ static long final_fpos;
 #define POINTSMIN      1       /* must be > 0 */
 #define ENTRYMAX       100     /* must be >= 10 */
 
-#if !defined(MICRO) && !defined(MAC)
+#if !defined(MICRO) && !defined(MAC) && !defined(WIN32)
 #define PERS_IS_UID            /* delete for PERSMAX per name; now per uid */
 #endif
 struct toptenentry {
index fc252c9ef53914b1c30a405dd3314b867773ef2f..0216ace2c1236c80a411fd6195c593a026b8c5a3 100644 (file)
@@ -56,7 +56,7 @@ STATIC_DCL boolean NDECL(comspec_exists);
 extern int GUILaunched;    /* from nttty.c */
 #endif
 
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
 
 void
 flushout()
@@ -528,25 +528,4 @@ static void msexit()
 #endif
        return;
 }
-#ifdef WIN32
-/*
- * This is a kludge.  Just before the release of 3.3.0 the latest
- * version of a popular MAPI mail product was found to exhibit
- * a strange result where the current directory was changed out
- * from under NetHack resulting in a failure of all subsequent
- * file operations in NetHack.  This routine is called prior
- * to all file open/renames/deletes in file.c.
- *
- * A more elegant solution will be sought after 3.3.0 is released.
- */
-void dircheck()
-{
-       char dirbuf[BUFSZ];
-       dirbuf[0] = '\0';
-       if (getcwd(dirbuf, sizeof dirbuf) != (char *)0)
-               /* pline("%s,%s",dirbuf,hackdir); */
-               if (strcmp(dirbuf,hackdir) != 0)
-                       chdir(hackdir);         /* chdir, not chdirx */
-}
-#endif
 #endif /* MICRO || WIN32 || OS2 */
index ee112821dc889ad24b6c0885239dec77cf5c050a..04620c9ab1702eb5fa7242102a8b01b060966cf8 100644 (file)
@@ -48,7 +48,7 @@ int fd;
        return(0);
     }
 # else
-#  if defined(MICRO) && !defined(NO_FSTAT)
+#  if (defined(MICRO) || defined(WIN32)) && !defined(NO_FSTAT)
     if(fstat(fd, &buf)) {
        if(moves > 1) pline("Cannot get status of saved level? ");
        else pline("Cannot get status of saved game");
index 0d11275b5640f0dfec52a3de5f21dcb1b572566a..ae837ae7013bcfb2887411a65b5f435abb1ae61f 100644 (file)
@@ -47,7 +47,7 @@
 # define O_BINARY 0
 #endif
 
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
 # define OMASK FCMASK
 #else
 # define OMASK 0644
index 34978d47c929f521b1f1acb2da60403298b52956..46c21c2f8b0bd9e2853673a0f683b6d8bdd23a44 100644 (file)
@@ -703,7 +703,7 @@ static const char *build_opts[] = {
 #ifdef TERMINFO
                "terminal info library",
 #else
-# if defined(TERMLIB) || (!defined(MICRO) && defined(TTY_GRAPHICS))
+# if defined(TERMLIB) || ((!defined(MICRO) && !defined(WIN32)) && defined(TTY_GRAPHICS))
                "terminal capability library",
 # endif
 #endif
index 4bfbe7ff5328b777f545e79e8528d0d14e7c3523..4dd763344e217a2a7c4313f4fde39f37cef22d99 100644 (file)
@@ -38,7 +38,7 @@ extern int NDECL(fclose_text_file);
 extern void NDECL(init_colormap);
 extern void NDECL(merge_colormap);
 
-#if defined(MICRO)
+#if defined(MICRO) || defined(WIN32)
 #undef exit
 # if !defined(MSDOS) && !defined(WIN32)
 extern void FDECL(exit, (int));
index a8bbfcc76f9a121d9421310271969155c614e447..bca662b93eb53eb8ee19ed36aafe93b0c4b7a04f 100644 (file)
@@ -13,7 +13,7 @@ const char * FDECL(tilename, (int, int));
 void NDECL(init_tilemap);
 void FDECL(process_substitutions, (FILE *));
 
-#ifdef MICRO
+#if defined(MICRO) || defined(WIN32)
 #undef exit
 #if !defined(MSDOS) && !defined(WIN32)
 extern void FDECL(exit, (int));