]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - hack/hack.unix.c
sprintf -> snprintf, plus some use of strlcpy/strlcat where appropriate
[bsdgames-darwin.git] / hack / hack.unix.c
index 0160c46330ce78ec65f272e3e66b68ac1112c96e..11cd9392c37a885269c4733d1f6d4b2109d5b360 100644 (file)
@@ -1,12 +1,69 @@
-/*     $NetBSD: hack.unix.c,v 1.5 1997/10/19 16:59:21 christos Exp $   */
+/*     $NetBSD: hack.unix.c,v 1.12 2009/06/07 20:13:18 dholland Exp $  */
 
 /*
- * Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985.
+ * Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica,
+ * Amsterdam
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * - Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * - Neither the name of the Stichting Centrum voor Wiskunde en
+ * Informatica, nor the names of its contributors may be used to endorse or
+ * promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+ * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * Copyright (c) 1982 Jay Fenlason <hack@gnu.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+ * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: hack.unix.c,v 1.5 1997/10/19 16:59:21 christos Exp $");
+__RCSID("$NetBSD: hack.unix.c,v 1.12 2009/06/07 20:13:18 dholland Exp $");
 #endif                         /* not lint */
 
 /* This file collects some Unix dependencies; hack.pager.c contains some more */
@@ -36,15 +93,17 @@ __RCSID("$NetBSD: hack.unix.c,v 1.5 1997/10/19 16:59:21 christos Exp $");
 #include "hack.h"              /* mainly for strchr() which depends on BSD */
 #include "extern.h"
 
+extern int locknum;
+
 
 void
-setrandom()
+setrandom(void)
 {
        (void) srandom((int) time((time_t *) 0));
 }
 
 struct tm      *
-getlt()
+getlt(void)
 {
        time_t          date;
 
@@ -53,28 +112,24 @@ getlt()
 }
 
 int
-getyear()
+getyear(void)
 {
        return (1900 + getlt()->tm_year);
 }
 
 char           *
-getdate()
+getdatestr(void)
 {
        static char     datestr[7];
        struct tm      *lt = getlt();
 
-       (void) sprintf(datestr, "%2d%2d%2d",
-                      lt->tm_year, lt->tm_mon + 1, lt->tm_mday);
-       if (datestr[2] == ' ')
-               datestr[2] = '0';
-       if (datestr[4] == ' ')
-               datestr[4] = '0';
+       (void) snprintf(datestr, sizeof(datestr), "%02d%02d%02d",
+                      lt->tm_year % 100, lt->tm_mon + 1, lt->tm_mday);
        return (datestr);
 }
 
 int
-phase_of_the_moon()
+phase_of_the_moon(void)
 {                              /* 0-7, with 0: new, 4: full *//* moon
                                 * period: 29.5306 days */
        /* year: 365.2422 days */
@@ -91,7 +146,7 @@ phase_of_the_moon()
 }
 
 int
-night()
+night(void)
 {
        int             hour = getlt()->tm_hour;
 
@@ -99,7 +154,7 @@ night()
 }
 
 int
-midnight()
+midnight(void)
 {
        return (getlt()->tm_hour == 0);
 }
@@ -107,8 +162,7 @@ midnight()
 struct stat     buf, hbuf;
 
 void
-gethdate(name)
-       char           *name;
+gethdate(char *name)
 {
 #if 0
        /* old version - for people short of space */
@@ -129,7 +183,7 @@ gethdate(name)
         */
 #define                MAXPATHLEN      1024
 
-       char           *np, *path;
+       const char           *np, *path;
        char            filename[MAXPATHLEN + 1];
        if (strchr(name, '/') != NULL || (path = getenv("PATH")) == NULL)
                path = "";
@@ -156,7 +210,7 @@ gethdate(name)
 }
 
 int
-uptodate(fd)
+uptodate(int fd)
 {
        if (fstat(fd, &buf)) {
                pline("Cannot get status of saved level? ");
@@ -171,8 +225,7 @@ uptodate(fd)
 
 /* see whether we should throw away this xlock file */
 int
-veryold(fd)
-       int fd;
+veryold(int fd)
 {
        int             i;
        time_t          date;
@@ -211,9 +264,8 @@ veryold(fd)
 }
 
 void
-getlock()
+getlock(void)
 {
-       extern int      hackpid, locknum;
        int             i = 0, fd;
 
        (void) fflush(stdout);
@@ -250,7 +302,7 @@ getlock()
                if (locknum)
                        lock[0] = 'a' + i++;
 
-               if ((fd = open(lock, 0)) == -1) {
+               if ((fd = open(lock, O_RDONLY)) == -1) {
                        if (errno == ENOENT)
                                goto gotlock;   /* no such file */
                        perror(lock);
@@ -320,7 +372,7 @@ static char    *mailbox;
 static long     laststattime;
 
 void
-getmailstatus()
+getmailstatus(void)
 {
        if (!(mailbox = getenv("MAIL")))
                return;
@@ -335,7 +387,7 @@ getmailstatus()
 }
 
 void
-ckmailstatus()
+ckmailstatus(void)
 {
        if (!mailbox
 #ifdef MAILCKFREQ
@@ -359,7 +411,7 @@ ckmailstatus()
 }
 
 void
-newmail()
+newmail(void)
 {
        /* produce a scroll of mail */
        struct obj     *obj;
@@ -385,9 +437,7 @@ newmail()
 
 /* make md run through the cave */
 void
-mdrush(md, away)
-       struct monst   *md;
-       boolean         away;
+mdrush(struct monst *md, boolean away)
 {
        int             uroom = inroom(u.ux, u.uy);
        if (uroom >= 0) {
@@ -445,7 +495,7 @@ mdrush(md, away)
 }
 
 void
-readmail()
+readmail(void)
 {
 #ifdef DEF_MAILREADER          /* This implies that UNIX is defined */
        char           *mr = 0;
@@ -467,10 +517,11 @@ readmail()
 }
 #endif /* MAIL */
 
+/*
+ * normalize file name - we don't like ..'s or /'s
+ */
 void
-regularize(s)                  /* normalize file name - we don't like ..'s
-                                * or /'s */
-       char           *s;
+regularize(char *s)
 {
        char           *lp;