# HG changeset patch # User John "Elwin" Edwards # Date 1438952834 14400 # Node ID 533f1882dcb604296c0e1b657e18a3583215e5ee # Parent 3de8058dd549392cb9f5bc8cc9468d8e4b96f45f# Parent 7bdac632ab9d4a97c009c0e0f3b0ef40a7ac51da Merge a bug fix from the stable branch. diff -r 7bdac632ab9d -r 533f1882dcb6 rogue3/chase.c --- a/rogue3/chase.c Tue Aug 04 11:39:49 2015 -0400 +++ b/rogue3/chase.c Fri Aug 07 09:07:14 2015 -0400 @@ -162,7 +162,7 @@ int x, y; int dist, thisdist; struct linked_list *item; - struct object *obj; + struct object *obj = NULL; coord *er = &tp->t_pos; int ch; diff -r 7bdac632ab9d -r 533f1882dcb6 rogue3/move.c --- a/rogue3/move.c Tue Aug 04 11:39:49 2015 -0400 +++ b/rogue3/move.c Fri Aug 07 09:07:14 2015 -0400 @@ -339,7 +339,7 @@ int ch; int ex, ey, nopen = 0; struct linked_list *item; - struct object *obj; + struct object *obj = NULL; static coord ret; /* what we will be returning */ static coord dest; diff -r 7bdac632ab9d -r 533f1882dcb6 rogue3/pack.c --- a/rogue3/pack.c Tue Aug 04 11:39:49 2015 -0400 +++ b/rogue3/pack.c Fri Aug 07 09:07:14 2015 -0400 @@ -22,8 +22,8 @@ void add_pack(struct linked_list *item, int silent) { - struct linked_list *ip, *lp; - struct object *obj, *op; + struct linked_list *ip, *lp = NULL; + struct object *obj, *op = NULL; int exact, from_floor; if (item == NULL) diff -r 7bdac632ab9d -r 533f1882dcb6 rogue3/passages.c --- a/rogue3/passages.c Tue Aug 04 11:39:49 2015 -0400 +++ b/rogue3/passages.c Fri Aug 07 09:07:14 2015 -0400 @@ -22,7 +22,7 @@ void do_passages() { - struct rdes *r1, *r2; + struct rdes *r1, *r2 = NULL; int i, j; int roomcount; static struct rdes @@ -131,7 +131,7 @@ void conn(int r1, int r2) { - struct room *rpf, *rpt; + struct room *rpf, *rpt = NULL; int rmt; int distance, turn_spot, turn_distance; int rm; diff -r 7bdac632ab9d -r 533f1882dcb6 rogue4/mdport.c --- a/rogue4/mdport.c Tue Aug 04 11:39:49 2015 -0400 +++ b/rogue4/mdport.c Fri Aug 07 09:07:14 2015 -0400 @@ -36,7 +36,6 @@ #if defined(_WIN32) #include #include -#include #include #include #include @@ -73,6 +72,10 @@ #include #endif +#if defined(_WIN32) +#include +#endif + #include #include #include diff -r 7bdac632ab9d -r 533f1882dcb6 rogue4/save.c --- a/rogue4/save.c Tue Aug 04 11:39:49 2015 -0400 +++ b/rogue4/save.c Fri Aug 07 09:07:14 2015 -0400 @@ -160,7 +160,10 @@ /* * close any open score file */ - close(fd); + if (fd >= 0) { + close(fd); + fd = -1; + } move(LINES-1, 0); refresh(); fstat(md_fileno(savef), &sbuf); diff -r 7bdac632ab9d -r 533f1882dcb6 srogue/command.c --- a/srogue/command.c Tue Aug 04 11:39:49 2015 -0400 +++ b/srogue/command.c Fri Aug 07 09:07:14 2015 -0400 @@ -23,6 +23,8 @@ #include "rogue.ext" #ifdef __DJGPP__ #include +#elif defined(_WIN32) +#include #else #include #endif diff -r 7bdac632ab9d -r 533f1882dcb6 srogue/main.c --- a/srogue/main.c Tue Aug 04 11:39:49 2015 -0400 +++ b/srogue/main.c Fri Aug 07 09:07:14 2015 -0400 @@ -172,7 +172,7 @@ /* START NEW GAME */ dnum = (wizard && getenv("SEED") != NULL ? - atoi(getenv("SEED")) : lowtime + getpid()); + atoi(getenv("SEED")) : lowtime + md_getpid()); if(wizard) printf("Hello %s, welcome to dungeon #%d\n", whoami, dnum); @@ -438,7 +438,7 @@ struct stat sb; if (stat(dirname, &sb) == 0) /* path exists */ - return (S_ISDIR (sb.st_mode)); + return ((sb.st_mode & S_IFMT) == S_IFDIR); return(0); } diff -r 7bdac632ab9d -r 533f1882dcb6 srogue/mdport.c --- a/srogue/mdport.c Tue Aug 04 11:39:49 2015 -0400 +++ b/srogue/mdport.c Fri Aug 07 09:07:14 2015 -0400 @@ -42,9 +42,9 @@ #pragma warning( default: 4201 ) #include #undef MOUSE_MOVED +#define HAVE_PROCESS_H #endif -#include #include "rogue.h" #if defined(HAVE_SYS_TYPES) @@ -81,8 +81,6 @@ #endif #endif -#include /* AIX requires curses.h be included before term.h */ - #if defined(HAVE_TERM_H) #include #elif defined(HAVE_NCURSES_TERM_H) @@ -358,6 +356,16 @@ #endif } +FILE * +md_fdopen(int fd, char *mode) +{ +#ifdef _WIN32 + return( _fdopen(fd, mode) ); +#else + return( fdopen(fd, mode) ); +#endif +} + int md_chmod(const char *filename, int mode) { diff -r 7bdac632ab9d -r 533f1882dcb6 srogue/pack.c --- a/srogue/pack.c Tue Aug 04 11:39:49 2015 -0400 +++ b/srogue/pack.c Fri Aug 07 09:07:14 2015 -0400 @@ -29,7 +29,7 @@ bool silent; { reg struct linked_list *ip, *lp; - reg struct object *obj, *op; + reg struct object *obj, *op = NULL; bool from_floor; char delchar; @@ -292,7 +292,7 @@ char *purpose; int type; { - reg struct linked_list *obj, *pit, *savepit; + reg struct linked_list *obj, *pit, *savepit = NULL; struct object *pob; int ch, och, anr, cnt; diff -r 7bdac632ab9d -r 533f1882dcb6 srogue/passages.c --- a/srogue/passages.c Tue Aug 04 11:39:49 2015 -0400 +++ b/srogue/passages.c Fri Aug 07 09:07:14 2015 -0400 @@ -24,7 +24,7 @@ do_passages() { - reg struct rdes *r1, *r2; + reg struct rdes *r1, *r2 = NULL; reg int i, j; reg int roomcount; static struct rdes { @@ -126,7 +126,7 @@ conn(r1, r2) int r1, r2; { - reg struct room *rpf, *rpt; + reg struct room *rpf, *rpt = NULL; reg char rmt, direc; reg int distance, turn_spot, turn_distance, rm; struct coord curr, turn_delta, spos, epos; diff -r 7bdac632ab9d -r 533f1882dcb6 srogue/rip.c --- a/srogue/rip.c Tue Aug 04 11:39:49 2015 -0400 +++ b/srogue/rip.c Fri Aug 07 09:07:14 2015 -0400 @@ -145,7 +145,7 @@ */ if ((fd = scorefd) < 0) return; - outf = (FILE *) fdopen(fd, "w"); + outf = (FILE *) md_fdopen(fd, "w"); for (scp = top_ten; scp <= &top_ten[9]; scp++) { scp->sc_score = 0; for (i = 0; i < 80; i++) diff -r 7bdac632ab9d -r 533f1882dcb6 srogue/rogue.h --- a/srogue/rogue.h Tue Aug 04 11:39:49 2015 -0400 +++ b/srogue/rogue.h Fri Aug 07 09:07:14 2015 -0400 @@ -29,6 +29,9 @@ #ifdef HAVE_CONFIG_H #include "config.h" +#elif defined(_WIN32) && defined(__PDCURSES__) +#define HAVE_ERASECHAR +#define HAVE_KILLCHAR #endif /* mdport functions */ @@ -36,10 +39,21 @@ #include #endif +#ifndef uid_t +typedef unsigned int uid_t; +#endif +#ifndef gid_t +typedef unsigned int gid_t; +#endif +#ifndef pid_t +typedef int pid_t; +#endif + int md_chmod(const char *filename, int mode); char *md_crypt(const char *key, const char *salt); int md_dsuspchar(void); int md_erasechar(void); +FILE * md_fdopen(int fd, char *mode); char *md_gethomedir(void); char *md_getusername(void); uid_t md_getuid(void); diff -r 7bdac632ab9d -r 533f1882dcb6 srogue/save.c --- a/srogue/save.c Tue Aug 04 11:39:49 2015 -0400 +++ b/srogue/save.c Fri Aug 07 09:07:14 2015 -0400 @@ -14,15 +14,18 @@ * See the file LICENSE.TXT for full copyright and licensing information. */ +#include #include #include -#include #include #include #include #include #include #include +#if !defined(_WIN32) +#include +#endif #include "rogue.h" #include "rogue.ext" @@ -157,7 +160,6 @@ save_file(savef) FILE *savef; { - reg int fnum; int slines = LINES; int scols = COLS; @@ -165,20 +167,12 @@ _djstat_flags |= _STAT_INODE; /* so turn off computing it for now */ #endif - /* - * force allocation of the buffer now so that inodes, etc - * can be checked when restoring saved games. - */ - fnum = fileno(savef); - fstat(fnum, &sbuf); - write(fnum, "RDK", 4); - lseek(fnum, 0L, 0); encwrite(version,strlen(version)+1,savef); encwrite(&slines,sizeof(slines),savef); encwrite(&scols,sizeof(scols),savef); msg(""); rs_save_file(savef); - close(fnum); + fclose(savef); md_onsignal_exit(); wclear(cw); draw(cw); @@ -283,7 +277,7 @@ #endif if (!wizard) { - if (unlink(file) < 0) + if (md_unlink(file) < 0) { endwin(); printf("Cannot unlink file\n"); @@ -302,6 +296,6 @@ strcpy(file_name, file); setup(); restscr(cw); - md_srandom(getpid()); + md_srandom(md_getpid()); playit(); }