]> git.cameronkatri.com Git - bsdgames-darwin.git/blobdiff - hack/hack.pager.c
goto considered harmful
[bsdgames-darwin.git] / hack / hack.pager.c
index ee474a1ede1c91b106d93773a6b404d3108bc2f9..6d9855f5a489d7d6dda8aa788a5fb3feee3258b7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $NetBSD: hack.pager.c,v 1.12 2009/06/07 18:30:39 dholland Exp $ */
+/*     $NetBSD: hack.pager.c,v 1.21 2011/09/01 07:18:50 plunky Exp $   */
 
 /*
  * Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica,
@@ -63,7 +63,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: hack.pager.c,v 1.12 2009/06/07 18:30:39 dholland Exp $");
+__RCSID("$NetBSD: hack.pager.c,v 1.21 2011/09/01 07:18:50 plunky Exp $");
 #endif                         /* not lint */
 
 /* This file contains the command routine dowhatis() and a pager. */
@@ -73,12 +73,18 @@ __RCSID("$NetBSD: hack.pager.c,v 1.12 2009/06/07 18:30:39 dholland Exp $");
  */
 
 #include <sys/types.h>
+#include <sys/wait.h>
 #include <signal.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include "hack.h"
 #include "extern.h"
 
+static void intruph(int);
+static void page_more(FILE *, int);
+static int page_file(const char *, boolean);
+static int child(int);
+
 int
 dowhatis(void)
 {
@@ -109,7 +115,7 @@ dowhatis(void)
                                                buf[0] = q;
                                                (void) strncpy(buf + 1, "       ", 7);
                                        }
-                                       pline(buf);
+                                       pline("%s", buf);
                                        if (ep[-1] == ';') {
                                                pline("More info? ");
                                                if (readchar() == 'y') {
@@ -129,7 +135,7 @@ dowhatis(void)
 /* make the paging of a file interruptible */
 static int      got_intrup;
 
-void
+static void
 intruph(int n __unused)
 {
        got_intrup++;
@@ -137,14 +143,14 @@ intruph(int n __unused)
 
 /* simple pager, also used from dohelp() */
 /* strip: nr of chars to be stripped from each line (0 or 1) */
-void
+static void
 page_more(FILE *fp, int strip)
 {
        char           *bufr, *ep;
        sig_t           prevsig = signal(SIGINT, intruph);
 
        set_pager(0);
-       bufr = (char *) alloc((unsigned) CO);
+       bufr = alloc(CO);
        bufr[CO - 1] = 0;
        while (fgets(bufr, CO - 1, fp) && (!strip || *bufr == '\t') && !got_intrup) {
                ep = strchr(bufr, '\n');
@@ -283,8 +289,7 @@ cornline(int mode, const char *text)
                len = strlen(text);
                if (len > maxlen)
                        maxlen = len;
-               tl = (struct line *)
-                       alloc((unsigned) (len + sizeof(struct line) + 1));
+               tl = alloc(len + sizeof(*tl) + 1);
                tl->next_line = 0;
                tl->line_text = (char *) (tl + 1);
                (void) strcpy(tl->line_text, text);
@@ -297,7 +302,7 @@ cornline(int mode, const char *text)
        }
        /* --- now we really do it --- */
        if (mode == 2 && linect == 1)   /* topline only */
-               pline(texthead->line_text);
+               pline("%s", texthead->line_text);
        else if (mode == 2) {
                int             curline, lth;
 
@@ -343,7 +348,7 @@ cornline(int mode, const char *text)
 cleanup:
        while ((tl = texthead) != NULL) {
                texthead = tl->next_line;
-               free((char *) tl);
+               free(tl);
        }
 }
 
@@ -354,14 +359,14 @@ dohelp(void)
 
        pline("Long or short help? ");
        while (((c = readchar()) != 'l') && (c != 's') && !strchr(quitchars, c))
-               bell();
+               sound_bell();
        if (!strchr(quitchars, c))
                (void) page_file((c == 'l') ? HELP : SHELP, FALSE);
        return (0);
 }
 
 /* return: 0 - cannot open fnam; 1 - otherwise */
-int
+static int
 page_file(const char *fnam, boolean silent)
 {
 #ifdef DEF_PAGER               /* this implies that UNIX is defined */
@@ -387,7 +392,7 @@ page_file(const char *fnam, boolean silent)
                                if (!silent)
                                        printf("Cannot open %s as stdin.\n", fnam);
                        } else {
-                               execl(catmore, "page", (char *) 0);
+                               execl(catmore, "page", (char *)NULL);
                                if (!silent)
                                        printf("Cannot exec %s.\n", catmore);
                        }
@@ -423,9 +428,9 @@ dosh(void)
        char           *str;
        if (child(0)) {
                if ((str = getenv("SHELL")) != NULL)
-                       execl(str, str, (char *) 0);
+                       execl(str, str, (char *)NULL);
                else
-                       execl("/bin/sh", "sh", (char *) 0);
+                       execl("/bin/sh", "sh", (char *)NULL);
                pline("sh: cannot execute.");
                exit(1);
        }
@@ -433,26 +438,7 @@ dosh(void)
 }
 #endif /* SHELL */
 
-#ifdef NOWAITINCLUDE
-union wait {                   /* used only for the cast  (union wait *) 0  */
-       int             w_status;
-       struct {
-               unsigned short  w_Termsig:7;
-               unsigned short  w_Coredump:1;
-               unsigned short  w_Retcode:8;
-       }               w_T;
-};
-
-#else
-
-#ifdef BSD
-#include       <sys/wait.h>
-#else
-#include       <wait.h>
-#endif /* BSD */
-#endif /* NOWAITINCLUDE */
-
-int
+static int
 child(int wt)
 {
        int             status;
@@ -460,7 +446,7 @@ child(int wt)
 
        f = fork();
        if (f == 0) {           /* child */
-               settty((char *) 0);     /* also calls end_screen() */
+               settty(NULL);   /* also calls end_screen() */
                (void) setuid(getuid());
                (void) setgid(getgid());
 #ifdef CHDIR