some coordxy and other conversion warnings
When dist2() got changed to use coordxy parameters, a macro that uses it in its definition was overlooked and it had (int) casts in it. That caused a warning about possible data loss when the int then got converted to coordxy for the dist2() call. Give online2() coordxy parameters instead of int, like its bretheren. Avoid a couple of implicit conversion warnings where ints were being assigned to smaller uchar or ints being assigned to smaller short. A couple of signed vs unsigned warnings on some rumor processing. Avoid some signed vs unsigned warnings in mdlib/makedefs where a signed int param eventually got used in an external call that took size_t. Eliminate all of it by just having the outer NetHack routine also take a size_t. Lastly, insert some default C99 alternative time-related code in mdlib/makedefs since asctime() and ctime() are being flagged as deprecated in the upcoming C23 standard and will now start to trigger warnings for anyone using a C23-compliant compiler.
This commit is contained in:
+1
-1
@@ -1028,7 +1028,7 @@ extern int rounddiv(long, int);
|
|||||||
extern int dist2(coordxy, coordxy, coordxy, coordxy);
|
extern int dist2(coordxy, coordxy, coordxy, coordxy);
|
||||||
extern int isqrt(int);
|
extern int isqrt(int);
|
||||||
extern int distmin(coordxy, coordxy, coordxy, coordxy);
|
extern int distmin(coordxy, coordxy, coordxy, coordxy);
|
||||||
extern boolean online2(int, int, int, int);
|
extern boolean online2(coordxy, coordxy, coordxy, coordxy);
|
||||||
extern boolean pmatch(const char *, const char *);
|
extern boolean pmatch(const char *, const char *);
|
||||||
extern boolean pmatchi(const char *, const char *);
|
extern boolean pmatchi(const char *, const char *);
|
||||||
extern boolean pmatchz(const char *, const char *);
|
extern boolean pmatchz(const char *, const char *);
|
||||||
|
|||||||
+2
-2
@@ -709,9 +709,9 @@ enum optset_restrictions {
|
|||||||
- min((int) greatest_erosion(obj), objects[(obj)->otyp].a_ac))
|
- min((int) greatest_erosion(obj), objects[(obj)->otyp].a_ac))
|
||||||
|
|
||||||
#define makeknown(x) discover_object((x), TRUE, TRUE)
|
#define makeknown(x) discover_object((x), TRUE, TRUE)
|
||||||
#define distu(xx, yy) dist2((int) (xx), (int) (yy), (int) u.ux, (int) u.uy)
|
#define distu(xx, yy) dist2((coordxy) (xx), (coordxy) (yy), (coordxy) u.ux, (coordxy) u.uy)
|
||||||
#define mdistu(mon) distu((mon)->mx, (mon)->my)
|
#define mdistu(mon) distu((mon)->mx, (mon)->my)
|
||||||
#define onlineu(xx, yy) online2((int)(xx), (int)(yy), (int) u.ux, (int) u.uy)
|
#define onlineu(xx, yy) online2((coordxy)(xx), (coordxy)(yy), (coordxy) u.ux, (coordxy) u.uy)
|
||||||
|
|
||||||
#define rn1(x, y) (rn2(x) + (y))
|
#define rn1(x, y) (rn2(x) + (y))
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -721,7 +721,7 @@ isqrt(int val)
|
|||||||
|
|
||||||
/* are two points lined up (on a straight line)? */
|
/* are two points lined up (on a straight line)? */
|
||||||
boolean
|
boolean
|
||||||
online2(int x0, int y0, int x1, int y1)
|
online2(coordxy x0, coordxy y0, coordxy x1, coordxy y1)
|
||||||
{
|
{
|
||||||
int dx = x0 - x1, dy = y0 - y1;
|
int dx = x0 - x1, dy = y0 - y1;
|
||||||
/* If either delta is zero then they're on an orthogonal line,
|
/* If either delta is zero then they're on an orthogonal line,
|
||||||
|
|||||||
+6
-6
@@ -55,8 +55,8 @@ static boolean date_via_env = FALSE;
|
|||||||
|
|
||||||
extern unsigned long md_ignored_features(void);
|
extern unsigned long md_ignored_features(void);
|
||||||
char *mdlib_version_string(char *, const char *);
|
char *mdlib_version_string(char *, const char *);
|
||||||
char *version_id_string(char *, int, const char *);
|
char *version_id_string(char *, size_t, const char *);
|
||||||
char *bannerc_string(char *, int, const char *);
|
char *bannerc_string(char *, size_t, const char *);
|
||||||
int case_insensitive_comp(const char *, const char *);
|
int case_insensitive_comp(const char *, const char *);
|
||||||
|
|
||||||
static void make_version(void);
|
static void make_version(void);
|
||||||
@@ -300,7 +300,7 @@ RESTORE_WARNING_FORMAT_NONLITERAL
|
|||||||
#endif /* MAKEDEFS_C */
|
#endif /* MAKEDEFS_C */
|
||||||
|
|
||||||
char *
|
char *
|
||||||
version_id_string(char *outbuf, int bufsz, const char *build_date)
|
version_id_string(char *outbuf, size_t bufsz, const char *build_date)
|
||||||
{
|
{
|
||||||
char subbuf[64], versbuf[64];
|
char subbuf[64], versbuf[64];
|
||||||
char statusbuf[64];
|
char statusbuf[64];
|
||||||
@@ -333,7 +333,7 @@ version_id_string(char *outbuf, int bufsz, const char *build_date)
|
|||||||
/* still within #if MAKDEFS_C || FOR_RUNTIME */
|
/* still within #if MAKDEFS_C || FOR_RUNTIME */
|
||||||
|
|
||||||
char *
|
char *
|
||||||
bannerc_string(char *outbuf, int bufsz, const char *build_date)
|
bannerc_string(char *outbuf, size_t bufsz, const char *build_date)
|
||||||
{
|
{
|
||||||
char subbuf[64], versbuf[64];
|
char subbuf[64], versbuf[64];
|
||||||
|
|
||||||
@@ -814,10 +814,10 @@ case_insensitive_comp(const char *s1, const char *s2)
|
|||||||
for (;; s1++, s2++) {
|
for (;; s1++, s2++) {
|
||||||
u1 = (uchar) *s1;
|
u1 = (uchar) *s1;
|
||||||
if (isupper(u1))
|
if (isupper(u1))
|
||||||
u1 = tolower(u1);
|
u1 = (uchar) tolower(u1);
|
||||||
u2 = (uchar) *s2;
|
u2 = (uchar) *s2;
|
||||||
if (isupper(u2))
|
if (isupper(u2))
|
||||||
u2 = tolower(u2);
|
u2 = (uchar) tolower(u2);
|
||||||
if (u1 == '\0' || u1 != u2)
|
if (u1 == '\0' || u1 != u2)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -190,7 +190,12 @@ main(int argc, char *argv[])
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
strncpy(tibheader.ident, "NetHack 3.7 MSDOS Port binary tile file", 80);
|
strncpy(tibheader.ident, "NetHack 3.7 MSDOS Port binary tile file", 80);
|
||||||
|
#if !defined(NOSTRFTIME)
|
||||||
|
if (!strftime(tibheader.timestamp,
|
||||||
|
sizeof tibheader.timestamp, "%c", newtime))
|
||||||
|
#else
|
||||||
strncpy(tibheader.timestamp, asctime(newtime), 24);
|
strncpy(tibheader.timestamp, asctime(newtime), 24);
|
||||||
|
#endif
|
||||||
tibheader.timestamp[25] = '\0';
|
tibheader.timestamp[25] = '\0';
|
||||||
tibheader.tilecount = tilecount;
|
tibheader.tilecount = tilecount;
|
||||||
tibheader.numcolors = num_colors;
|
tibheader.numcolors = num_colors;
|
||||||
|
|||||||
+15
-5
@@ -1077,11 +1077,11 @@ do_rumors(void)
|
|||||||
true_rumor_size, true_rumor_offset, false_rumor_count,
|
true_rumor_size, true_rumor_offset, false_rumor_count,
|
||||||
false_rumor_size, false_rumor_offset, eof_offset);
|
false_rumor_size, false_rumor_offset, eof_offset);
|
||||||
/* record the current position; true rumors will start here */
|
/* record the current position; true rumors will start here */
|
||||||
true_rumor_offset = ftell(tfp);
|
true_rumor_offset = (unsigned long) ftell(tfp);
|
||||||
|
|
||||||
false_rumor_offset = read_rumors_file(".tru", &true_rumor_count,
|
false_rumor_offset = (unsigned long) read_rumors_file(".tru", &true_rumor_count,
|
||||||
&true_rumor_size, true_rumor_offset,
|
&true_rumor_size, true_rumor_offset,
|
||||||
MD_PAD_RUMORS);
|
MD_PAD_RUMORS);
|
||||||
if (!false_rumor_offset)
|
if (!false_rumor_offset)
|
||||||
goto rumors_failure;
|
goto rumors_failure;
|
||||||
|
|
||||||
@@ -1241,11 +1241,21 @@ do_date(void)
|
|||||||
(unsigned long) clocktim);
|
(unsigned long) clocktim);
|
||||||
(void) fflush(stderr);
|
(void) fflush(stderr);
|
||||||
}
|
}
|
||||||
|
#if !defined(NOSTRFTIME)
|
||||||
|
if (!strftime(cbuf, sizeof cbuf, "%c", gmtime(&clocktim)))
|
||||||
|
cbuf[0] = '\0';
|
||||||
|
#else
|
||||||
Strcpy(cbuf, asctime(gmtime(&clocktim)));
|
Strcpy(cbuf, asctime(gmtime(&clocktim)));
|
||||||
|
#endif /* NOSTRFTIME */
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
/* ordinary build: use current date+time */
|
/* ordinary build: use current date+time */
|
||||||
|
#if !defined(NOSTRFTIME)
|
||||||
|
if (!strftime(cbuf, sizeof cbuf, "%c", localtime(&clocktim)))
|
||||||
|
cbuf[0] = '\0';
|
||||||
|
#else
|
||||||
Strcpy(cbuf, ctime(&clocktim));
|
Strcpy(cbuf, ctime(&clocktim));
|
||||||
|
#endif /* NOSTRFTIME */
|
||||||
#endif /* REPRODUCIBLE_BUILD */
|
#endif /* REPRODUCIBLE_BUILD */
|
||||||
|
|
||||||
if ((c = strchr(cbuf, '\n')) != 0)
|
if ((c = strchr(cbuf, '\n')) != 0)
|
||||||
@@ -1979,7 +1989,7 @@ do_objs(void)
|
|||||||
for (i = 0; !i || objects[i].oc_class != ILLOBJ_CLASS; i++) {
|
for (i = 0; !i || objects[i].oc_class != ILLOBJ_CLASS; i++) {
|
||||||
SpinCursor(3);
|
SpinCursor(3);
|
||||||
|
|
||||||
objects[i].oc_name_idx = objects[i].oc_descr_idx = i; /* init */
|
objects[i].oc_name_idx = objects[i].oc_descr_idx = (short) i;
|
||||||
if (!(objnam = tmpdup(OBJ_NAME(objects[i]))))
|
if (!(objnam = tmpdup(OBJ_NAME(objects[i]))))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user