From: nhkeni Date: Wed, 16 Mar 2022 22:41:45 +0000 (-0400) Subject: Make readLenType generally available. Fix some warnings around read(2). X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dc72e07a2bc1c1019eb998ebce844b01c64b5129;p=nethack Make readLenType generally available. Fix some warnings around read(2). --- diff --git a/include/global.h b/include/global.h index 4ec90f84b..0e31377d4 100644 --- a/include/global.h +++ b/include/global.h @@ -73,6 +73,13 @@ typedef xchar boolean; /* 0 or 1 */ #endif #endif +/* Type for third parameter of read(2) */ +#if defined(BSD) || defined(ULTRIX) +typedef int readLenType; +#else /* e.g. SYSV, __TURBOC__ */ +typedef unsigned readLenType; +#endif + #ifndef TRUE /* defined in some systems' native include files */ #define TRUE ((boolean) 1) #define FALSE ((boolean) 0) diff --git a/src/restore.c b/src/restore.c index 59e61d36b..c2eb6737e 100644 --- a/src/restore.c +++ b/src/restore.c @@ -1443,7 +1443,7 @@ restore_menu( int validate(NHFILE* nhfp, const char *name) { - int rlen = 0; + readLenType rlen = 0; struct savefile_info sfi; unsigned long utdflags = 0L; boolean verbose = name ? TRUE : FALSE, reslt = FALSE; @@ -1454,10 +1454,10 @@ validate(NHFILE* nhfp, const char *name) if ((nhfp->mode & WRITING) == 0) { if (nhfp->structlevel) - rlen = read(nhfp->fd, (genericptr_t) &sfi, sizeof sfi); + rlen = (readLenType) read(nhfp->fd, (genericptr_t) &sfi, sizeof sfi); } else { if (nhfp->structlevel) - rlen = read(nhfp->fd, (genericptr_t) &sfi, sizeof sfi); + rlen = (readLenType) read(nhfp->fd, (genericptr_t) &sfi, sizeof sfi); minit(); /* ZEROCOMP */ if (rlen == 0) { if (verbose) { diff --git a/src/sfstruct.c b/src/sfstruct.c index 73ebe28bf..c83f22749 100644 --- a/src/sfstruct.c +++ b/src/sfstruct.c @@ -215,14 +215,14 @@ minit(void) void mread(int fd, genericptr_t buf, unsigned len) { - int rlen; #if defined(BSD) || defined(ULTRIX) #define readLenType int #else /* e.g. SYSV, __TURBOC__ */ #define readLenType unsigned #endif - - rlen = read(fd, buf, (readLenType) len); + readLenType rlen; + /* Not perfect, but we don't have ssize_t available. */ + rlen = (readLenType) read(fd, buf, (readLenType) len); if ((readLenType) rlen != (readLenType) len) { if (restoreinfo.mread_flags == 1) { /* means "return anyway" */ restoreinfo.mread_flags = -1;