]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - larn/bill.c
properly terminate after using strncpy().
[bsdgames-darwin.git] / larn / bill.c
index 3d1799e6c3be7d1c33638cccdafe0134f52630df..961c424a14073b15a2db65bb19837ffbb4beec50 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: bill.c,v 1.4 1996/05/22 00:34:35 mrg Exp $     */
+/*     $NetBSD: bill.c,v 1.11 2011/08/29 20:30:37 joerg Exp $   */
 
 /*-
  * Copyright (c) 1991 The Regents of the University of California.
  * 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. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
+ * 3. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
  *
  * SUCH DAMAGE.
  */
 
+#include <sys/cdefs.h>
 #ifndef lint
 #if 0
 static char sccsid[] = "@(#)bill.c     5.2 (Berkeley) 5/28/91";
 #else
-static char rcsid[] = "$NetBSD: bill.c,v 1.4 1996/05/22 00:34:35 mrg Exp $";
+__RCSID("$NetBSD: bill.c,v 1.11 2011/08/29 20:30:37 joerg Exp $");
 #endif
 #endif /* not lint */
 
 #include <sys/file.h>
 #include <sys/wait.h>
+#include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
-#include <stdio.h>
 #include <unistd.h>
+#include <paths.h>
 #include "header.h"
+#include "extern.h"
 
 /* bill.c               Larn is copyrighted 1986 by Noah Morgan. */
 
-char *mail[] = {
+static const char *mail[] = {
        "From: the LRS (Larn Revenue Service)\n",
        "~s undeclared income\n",
        "\n   We have heard you survived the caverns of Larn.  Let me be the",
@@ -116,34 +115,36 @@ char *mail[] = {
 };
 
 /*
- *     function to mail the letters to the player if a winner
+ * function to mail the letters to the player if a winner
  */
 
 void
-mailbill()
+mailbill(void)
 {
-       register int i;
-       char fname[32];
-       char buf[128];
-       char **cp;
-       int fd;
+       int    i;
+       char   fname[32];
+       char   buf[128];
+       const char **cp;
+       int    fd;
 
        wait(0);
        if (fork() == 0) {
                resetscroll();
                cp = mail;
-               sprintf(fname, "/tmp/#%dlarnmail", getpid());
+               snprintf(fname, sizeof(fname), "%slarnmail.XXXXXX", _PATH_TMP);
                for (i = 0; i < 6; i++) {
-                       if ((fd = open(fname, O_WRONLY | O_TRUNC | O_CREAT,
-                           0666)) == -1)
+                       if ((fd = mkstemp(fname)) == -1)
                                exit(0);
                        while (*cp != NULL) {
                                if (*cp[0] == '1') {
-                                       sprintf(buf, "\n%d gold pieces back with you from your journey.  As the",
-                                           (long)c[GOLD]);
+                                       snprintf(buf, sizeof(buf),
+               "\n%ld gold pieces back with you from your journey.  As the",
+                                               (long) c[GOLD]);
                                        write(fd, buf, strlen(buf));
                                } else if (*cp[0] == '2') {
-                                       sprintf(buf, "\nin preparing your tax bill.  You owe %d gold pieces as", (long)c[GOLD]*TAXRATE);
+                                       snprintf(buf, sizeof(buf),
+               "\nin preparing your tax bill.  You owe %ld gold pieces as",
+                                           (long) c[GOLD] * TAXRATE);
                                        write(fd, buf, strlen(buf));
                                } else
                                        write(fd, *cp, strlen(*cp));
@@ -152,8 +153,8 @@ mailbill()
                        cp++;
 
                        close(fd);
-                       sprintf(buf, "mail -I %s < %s > /dev/null",
-                           loginname, fname);
+                       snprintf(buf, sizeof(buf),
+                           "mail -I %s < %s > /dev/null", loginname, fname);
                        system(buf);
                        unlink(fname);
                }