read_simplemail() when SERVER_ADMIN_MSG is defined

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
This commit is contained in:
nhmall
2021-02-26 09:05:52 -05:00
parent 05da754b02
commit 558b7c27d8
3 changed files with 9 additions and 4 deletions

View 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 "..."

View 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;
}

View 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 */