]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - rogue/message.c
Remove extra semicolon.
[bsdgames-darwin.git] / rogue / message.c
index 4e48e18d71fae185a0a51ee083e2bddf39b8f8cc..e38377debc2a3539b429d62c011b7a35d3503f21 100644 (file)
@@ -1,6 +1,8 @@
+/*     $NetBSD: message.c,v 1.14 2009/08/12 08:44:45 dholland Exp $    */
+
 /*
- * Copyright (c) 1988 The Regents of the University of California.
- * All rights reserved.
+ * Copyright (c) 1988, 1993
+ *     The Regents of the University of California.  All rights reserved.
  *
  * This code is derived from software contributed to Berkeley by
  * Timothy C. Stoehr.
  * 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
-/*static char sccsid[] = "from: @(#)message.c  5.3 (Berkeley) 6/1/90";*/
-static char rcsid[] = "$Id: message.c,v 1.4 1993/11/10 10:02:19 cgd Exp $";
+#if 0
+static char sccsid[] = "@(#)message.c  8.1 (Berkeley) 5/31/93";
+#else
+__RCSID("$NetBSD: message.c,v 1.14 2009/08/12 08:44:45 dholland Exp $");
+#endif
 #endif /* not lint */
 
 /*
@@ -51,24 +53,25 @@ static char rcsid[] = "$Id: message.c,v 1.4 1993/11/10 10:02:19 cgd Exp $";
  *
  */
 
-#include <stdio.h>
-#include <termios.h>
 #include <signal.h>
+#include <termios.h>
+#include <stdarg.h>
 #include "rogue.h"
+#include "pathnames.h"
+
+static char msgs[NMESSAGES][DCOLS] = {"", "", "", "", ""};
+static short msg_col = 0, imsg = -1;
+static boolean rmsg = 0;
 
-char msgs[NMESSAGES][DCOLS] = {"", "", "", "", ""};
-short msg_col = 0, imsg = -1;
-boolean msg_cleared = 1, rmsg = 0;
-char hunger_str[8] = "";
-char *more = "-more-";
+boolean msg_cleared = 1;
+char hunger_str[HUNGER_STR_LEN] = "";
+const char *more = "-more-";
 
-extern boolean cant_int, did_int, interrupted, save_is_interactive;
-extern short add_strength;
-extern short cur_level;
+static void save_screen(void);
 
-message(msg, intrpt)
-char *msg;
-boolean intrpt;
+static
+void
+message(const char *msg, boolean intrpt)
 {
        cant_int = 1;
 
@@ -88,7 +91,7 @@ boolean intrpt;
        }
        if (!rmsg) {
                imsg = (imsg + 1) % NMESSAGES;
-               (void) strcpy(msgs[imsg], msg);
+               (void)strlcpy(msgs[imsg], msg, sizeof(msgs[imsg]));
        }
        mvaddstr(MIN_ROW-1, 0, msg);
        addch(' ');
@@ -100,12 +103,25 @@ boolean intrpt;
 
        if (did_int) {
                did_int = 0;
-               onintr();
+               onintr(0);
        }
 }
 
-remessage(c)
-short c;
+void
+messagef(boolean intrpt, const char *fmt, ...)
+{
+       va_list ap;
+       char buf[DCOLS];
+
+       va_start(ap, fmt);
+       vsnprintf(buf, sizeof(buf), fmt, ap);
+       va_end(ap);
+
+       message(buf, intrpt);
+}
+
+void
+remessage(short c)
 {
        if (imsg != -1) {
                check_message();
@@ -120,7 +136,8 @@ short c;
        }
 }
 
-check_message()
+void
+check_message(void)
 {
        if (msg_cleared) {
                return;
@@ -131,28 +148,28 @@ check_message()
        msg_cleared = 1;
 }
 
-get_input_line(prompt, insert, buf, if_cancelled, add_blank, do_echo)
-char *prompt, *buf, *insert;
-char *if_cancelled;
-boolean add_blank;
-boolean do_echo;
+int
+get_input_line(const char *prompt, const char *insert, 
+              char *buf, size_t buflen, 
+              const char *if_cancelled, 
+              boolean add_blank, boolean do_echo)
 {
        short ch;
-       short i = 0, n;
+       size_t i = 0, n;
 
        message(prompt, 0);
        n = strlen(prompt);
 
        if (insert[0]) {
                mvaddstr(0, n + 1, insert);
-               (void) strcpy(buf, insert);
-               i = strlen(insert);
+               (void)strlcpy(buf, insert, buflen);
+               i = strlen(buf);
                move(0, (n + i + 1));
                refresh();
        }
 
        while (((ch = rgetchar()) != '\r') && (ch != '\n') && (ch != CANCEL)) {
-               if ((ch >= ' ') && (ch <= '~') && (i < MAX_TITLE_LENGTH-2)) {
+               if ((ch >= ' ') && (ch <= '~') && (i < buflen-2)) {
                        if ((ch != ' ') || (i > 0)) {
                                buf[i++] = ch;
                                if (do_echo) {
@@ -189,20 +206,21 @@ boolean do_echo;
        return(i);
 }
 
-rgetchar()
+int
+rgetchar(void)
 {
-       register ch;
+       int ch;
 
        for(;;) {
                ch = getchar();
 
                switch(ch) {
-               case '\022':
+               case '\022': /* ^R */
                        wrefresh(curscr);
                        break;
 #ifdef UNIX_BSD4_2
-               case '\032':
-                       printf(CL);
+               case '\032': /* ^Z */
+                       printf("%s", CL);
                        fflush(stdout);
                        tstp();
                        break;
@@ -215,13 +233,14 @@ rgetchar()
                }
        }
 }
+
 /*
 Level: 99 Gold: 999999 Hp: 999(999) Str: 99(99) Arm: 99 Exp: 21/10000000 Hungry
 0    5    1    5    2    5    3    5    4    5    5    5    6    5    7    5
 */
 
-print_stats(stat_mask)
-register stat_mask;
+void
+print_stats(int stat_mask)
 {
        char buf[16];
        boolean label;
@@ -234,9 +253,7 @@ register stat_mask;
                        mvaddstr(row, 0, "Level: ");
                }
                /* max level taken care of in make_level() */
-               sprintf(buf, "%d", cur_level);
-               mvaddstr(row, 7, buf);
-               pad(buf, 2);
+               mvprintw(row, 7, "%-2d", cur_level);
        }
        if (stat_mask & STAT_GOLD) {
                if (label) {
@@ -245,9 +262,7 @@ register stat_mask;
                if (rogue.gold > MAX_GOLD) {
                        rogue.gold = MAX_GOLD;
                }
-               sprintf(buf, "%ld", rogue.gold);
-               mvaddstr(row, 16, buf);
-               pad(buf, 6);
+               mvprintw(row, 16, "%-6ld", rogue.gold);
        }
        if (stat_mask & STAT_HP) {
                if (label) {
@@ -257,9 +272,9 @@ register stat_mask;
                        rogue.hp_current -= (rogue.hp_max - MAX_HP);
                        rogue.hp_max = MAX_HP;
                }
-               sprintf(buf, "%d(%d)", rogue.hp_current, rogue.hp_max);
-               mvaddstr(row, 27, buf);
-               pad(buf, 8);
+               snprintf(buf, sizeof(buf), "%d(%d)",
+                       rogue.hp_current, rogue.hp_max);
+               mvprintw(row, 27, "%-8s", buf);
        }
        if (stat_mask & STAT_STRENGTH) {
                if (label) {
@@ -269,10 +284,9 @@ register stat_mask;
                        rogue.str_current -= (rogue.str_max - MAX_STRENGTH);
                        rogue.str_max = MAX_STRENGTH;
                }
-               sprintf(buf, "%d(%d)", (rogue.str_current + add_strength),
-                       rogue.str_max);
-               mvaddstr(row, 41, buf);
-               pad(buf, 6);
+               snprintf(buf, sizeof(buf), "%d(%d)",
+                       (rogue.str_current + add_strength), rogue.str_max);
+               mvprintw(row, 41, "%-6s", buf);
        }
        if (stat_mask & STAT_ARMOR) {
                if (label) {
@@ -281,9 +295,7 @@ register stat_mask;
                if (rogue.armor && (rogue.armor->d_enchant > MAX_ARMOR)) {
                        rogue.armor->d_enchant = MAX_ARMOR;
                }
-               sprintf(buf, "%d", get_armor_class(rogue.armor));
-               mvaddstr(row, 53, buf);
-               pad(buf, 2);
+               mvprintw(row, 53, "%-2d", get_armor_class(rogue.armor));
        }
        if (stat_mask & STAT_EXP) {
                if (label) {
@@ -295,9 +307,9 @@ register stat_mask;
                if (rogue.exp > MAX_EXP_LEVEL) {
                        rogue.exp = MAX_EXP_LEVEL;
                }
-               sprintf(buf, "%d/%ld", rogue.exp, rogue.exp_points);
-               mvaddstr(row, 61, buf);
-               pad(buf, 11);
+               snprintf(buf, sizeof(buf), "%d/%ld",
+                       rogue.exp, rogue.exp_points);
+               mvprintw(row, 61, "%-11s", buf);
        }
        if (stat_mask & STAT_HUNGER) {
                mvaddstr(row, 73, hunger_str);
@@ -306,36 +318,22 @@ register stat_mask;
        refresh();
 }
 
-pad(s, n)
-char *s;
-short n;
-{
-       short i;
-
-       for (i = strlen(s); i < n; i++) {
-               addch(' ');
-       }
-}
-
-save_screen()
+static void
+save_screen(void)
 {
        FILE *fp;
        short i, j;
        char buf[DCOLS+2];
-       boolean found_non_blank;
 
-       if ((fp = fopen("rogue.screen", "w")) != NULL) {
+       if ((fp = fopen(_PATH_SCREENDUMP, "w")) != NULL) {
                for (i = 0; i < DROWS; i++) {
-                       found_non_blank = 0;
-                       for (j = (DCOLS - 1); j >= 0; j--) {
+                       for (j=0; j<DCOLS; j++) {
                                buf[j] = mvinch(i, j);
-                               if (!found_non_blank) {
-                                       if ((buf[j] != ' ') || (j == 0)) {
-                                               buf[j + ((j == 0) ? 0 : 1)] = 0;
-                                               found_non_blank = 1;
-                                       }
-                               }
                        }
+                       /*buf[DCOLS] = 0; -- redundant */
+                       for (j=DCOLS; j>0 && buf[j-1]==' '; j--);
+                       buf[j] = 0;
+
                        fputs(buf, fp);
                        putc('\n', fp);
                }
@@ -345,23 +343,21 @@ save_screen()
        }
 }
 
-sound_bell()
+void
+sound_bell(void)
 {
        putchar(7);
        fflush(stdout);
 }
 
 boolean
-is_digit(ch)
-short ch;
+is_digit(int ch)
 {
        return((ch >= '0') && (ch <= '9'));
 }
 
-r_index(str, ch, last)
-char *str;
-int ch;
-boolean last;
+int
+r_index(const char *str, int ch, boolean last)
 {
        int i = 0;