]> granicus.if.org Git - nethack/commitdiff
read_simplemail() when SERVER_ADMIN_MSG is defined
authornhmall <nhmall@nethack.org>
Fri, 26 Feb 2021 14:05:52 +0000 (09:05 -0500)
committernhmall <nhmall@nethack.org>
Fri, 26 Feb 2021 14:05:52 +0000 (09:05 -0500)
Some warnings were mentioned

Add a prototype ahead of the function
Use a non-const copy of SERVER_ADMIN_MSG

quick-tested by:
- uncommenting the following in include/unixconf.h
  /* #define SERVER_ADMIN_MSG "adminmsg" */
- building NetHack
- creating a test message:
  echo "server_admin: system is going down at 2 pm" >~/nh/install/games/lib/nethackdir/adminmsg
- playtested and received the desired message

include/extern.h
src/hacklib.c
src/mail.c

index 5a7f11447e831393702c40cef5c58871a367f29e..1e597124d258f9ce84f322ed600c9331fd660573 100644 (file)
@@ -940,7 +940,7 @@ extern void strbuf_append(strbuf_t *, const char *);
 extern void strbuf_reserve(strbuf_t *, int);
 extern void strbuf_empty(strbuf_t *);
 extern void strbuf_nl_to_crlf(strbuf_t *);
-extern char *nonconst(const char *, char *);
+extern char *nonconst(const char *, char *, size_t);
 extern int swapbits(int, int, int);
 extern void shuffle_int_array(int *, int);
 /* note: the snprintf CPP wrapper includes the "fmt" argument in "..."
index 027f18cf167482a2bb319a43b3a2fdf3cfc6128e..654e604871c80780522f1c87c05af25794ad8b3e 100644 (file)
@@ -1221,12 +1221,12 @@ strbuf_nl_to_crlf(strbuf_t *strbuf)
 }
 
 char *
-nonconst(const char *str, char *buf)
+nonconst(const char *str, char *buf, size_t bufsz)
 {
     char *retval = emptystr;
 
     if (str && buf)
-        if ((int) strlen(str) < BUFSZ - 1) {
+        if (strlen(str) < (bufsz - 1)) {
            Strcpy(buf, str);
             retval = buf;
         }
index a3f63b751e86f896177a5755e9c01c8e4b3ad83d..751e59ea9a7f1b677f2f5f54222c94e47e963520 100644 (file)
@@ -44,6 +44,9 @@ static boolean md_start(coord *);
 static boolean md_stop(coord *, coord *);
 static boolean md_rush(struct monst *, int, int);
 static void newmail(struct mail_info *);
+#if defined(SIMPLE_MAIL) || defined(SERVER_ADMIN_MSG)
+static void read_simplemail(char *mbox, boolean adminmsg);
+#endif
 
 #if !defined(UNIX) && !defined(VMS)
 int mustgetmail = -1;
@@ -659,13 +662,15 @@ ck_server_admin_msg(void)
 #ifdef SERVER_ADMIN_MSG
     static struct stat ost,nst;
     static long lastchk = 0;
+    char adminbuf[BUFSZ];
 
     if (g.moves < lastchk + SERVER_ADMIN_MSG_CKFREQ) return;
     lastchk = g.moves;
 
     if (!stat(SERVER_ADMIN_MSG, &nst)) {
         if (nst.st_mtime > ost.st_mtime)
-            read_simplemail(SERVER_ADMIN_MSG, TRUE);
+            read_simplemail(nonconst(SERVER_ADMIN_MSG, adminbuf,
+                                    sizeof adminbuf), TRUE);
         ost.st_mtime = nst.st_mtime;
     }
 #endif /* SERVER_ADMIN_MSG */