On Sat, Dec 05, 2015 at 03:29:06AM -0500, Ted Unangst wrote:
> looks good, but you've got some mostly unrelated changes in here. this should
> be separate, but ok for the rest.

It started with a "check argv" code review and ended up with __progname
adjustments, so I agree here and removed the newfs parts for a separate
commit. Also the gomoku KNF is a bit distracting, so it's gone now, too.

Theo pointed out that tradcpp and lex should stay as they are, because
they are upstream projects.

Joerg mentioned the getprogname function previously, so I left id and nl
alone, too.

The patch touches these programs now:
mt, pax, gomoku, telnet, crunchgen, pppd, and pdisk

As I have removed the concerning parts and got OKs for the rest,
I will commit it later this day if nobody objects.

Index: bin/mt/mt.c
===================================================================
RCS file: /cvs/src/bin/mt/mt.c,v
retrieving revision 1.36
diff -u -p -u -p -r1.36 mt.c
--- bin/mt/mt.c 12 Nov 2013 04:36:02 -0000      1.36
+++ bin/mt/mt.c 5 Dec 2015 10:01:55 -0000
@@ -88,6 +88,8 @@ int           _rmtmtioctop(int fd, struct mtop *c
 struct mtget   *_rmtstatus(int fd);
 void           _rmtclose(void);
 
+extern char    *__progname;
+
 char   *host = NULL;   /* remote host (if any) */
 
 int
@@ -133,7 +135,6 @@ _rmtclose(void)
 #endif
 }
 
-char   *progname;
 int    eject = 0;
 
 int
@@ -145,12 +146,7 @@ main(int argc, char *argv[])
        char *p, *tape, *realtape, *opts;
        size_t len;
 
-       if ((progname = strrchr(argv[0], '/')))
-               progname++;
-       else
-               progname = argv[0];
-
-       if (strcmp(progname, "eject") == 0) {
+       if (strcmp(__progname, "eject") == 0) {
                opts = "t";
                eject = 1;
                tape = NULL;
@@ -320,9 +316,9 @@ void
 usage(void)
 {
        if (eject)
-               (void)fprintf(stderr, "usage: %s [-t] device\n", progname);
+               (void)fprintf(stderr, "usage: %s [-t] device\n", __progname);
        else
                (void)fprintf(stderr,
-                   "usage: %s [-f device] command [count]\n", progname);
+                   "usage: %s [-f device] command [count]\n", __progname);
        exit(X_USAGE);
 }
Index: bin/pax/options.c
===================================================================
RCS file: /cvs/src/bin/pax/options.c,v
retrieving revision 1.91
diff -u -p -u -p -r1.91 options.c
--- bin/pax/options.c   18 May 2015 20:26:16 -0000      1.91
+++ bin/pax/options.c   5 Dec 2015 10:01:56 -0000
@@ -184,14 +184,12 @@ char *chdname = NULL;
 void
 options(int argc, char **argv)
 {
+       extern char *__progname;
 
        /*
         * Are we acting like pax, tar or cpio (based on argv[0])
         */
-       if ((argv0 = strrchr(argv[0], '/')) != NULL)
-               argv0++;
-       else
-               argv0 = argv[0];
+       argv0 = __progname;
 
        if (strcmp(NM_TAR, argv0) == 0) {
                tar_options(argc, argv);
Index: games/gomoku/main.c
===================================================================
RCS file: /cvs/src/games/gomoku/main.c,v
retrieving revision 1.29
diff -u -p -u -p -r1.29 main.c
--- games/gomoku/main.c 30 Nov 2015 08:44:51 -0000      1.29
+++ games/gomoku/main.c 5 Dec 2015 10:01:56 -0000
@@ -45,10 +45,11 @@
 #define PROGRAM        1               /* get input from program */
 #define INPUTF 2               /* get input from a file */
 
+extern char *__progname;       /* name of program */
+
 int    interactive = 1;        /* true if interactive */
 int    debug;                  /* true if debugging */
 int    test;                   /* both moves come from 1: input, 2: computer */
-char   *prog;                  /* name of program */
 FILE   *debugfp;               /* file for debug output */
 FILE   *inputfp;               /* file for debug input */
 
@@ -84,12 +85,6 @@ main(argc, argv)
        if (pledge("stdio rpath wpath cpath tty", NULL) == -1)
                err(1, "pledge");
 
-       prog = strrchr(argv[0], '/');
-       if (prog)
-               prog++;
-       else
-               prog = argv[0];
-
        if ((tmpname = getlogin()) != NULL)
                strlcpy(you, tmpname, sizeof(you));
        else
@@ -117,7 +112,7 @@ main(argc, argv)
                default:
                        fprintf(stderr,
                            "usage: %s [-bcdu] [-D debugfile] [inputfile]\n",
-                           prog);
+                           __progname);
                        exit(1);
                }
        }
@@ -194,8 +189,8 @@ again:
                }
        }
        if (interactive) {
-               plyr[BLACK] = input[BLACK] == USER ? you : prog;
-               plyr[WHITE] = input[WHITE] == USER ? you : prog;
+               plyr[BLACK] = input[BLACK] == USER ? you : __progname;
+               plyr[WHITE] = input[WHITE] == USER ? you : __progname;
                bdwho(1);
        }
 
@@ -222,8 +217,8 @@ again:
                                input[WHITE] = PROGRAM;
                                break;
                        }
-                       plyr[BLACK] = input[BLACK] == USER ? you : prog;
-                       plyr[WHITE] = input[WHITE] == USER ? you : prog;
+                       plyr[BLACK] = input[BLACK] == USER ? you : __progname;
+                       plyr[WHITE] = input[WHITE] == USER ? you : __progname;
                        bdwho(1);
                        goto top;
 
@@ -554,7 +549,7 @@ void
 panic(str)
        char *str;
 {
-       fprintf(stderr, "%s: %s\n", prog, str);
+       fprintf(stderr, "%s: %s\n", __progname, str);
        fputs("resign\n", stdout);
        quit(0);
 }
Index: usr.bin/telnet/main.c
===================================================================
RCS file: /cvs/src/usr.bin/telnet/main.c,v
retrieving revision 1.35
diff -u -p -u -p -r1.35 main.c
--- usr.bin/telnet/main.c       19 Nov 2015 22:01:33 -0000      1.35
+++ usr.bin/telnet/main.c       5 Dec 2015 10:01:56 -0000
@@ -77,6 +77,7 @@ int
 main(int argc, char *argv[])
 {
        int ch;
+       extern char *__progname;
        char *user, *alias;
        const char *errstr;
 
@@ -84,10 +85,7 @@ main(int argc, char *argv[])
 
        TerminalSaveState();
 
-       if ((prompt = strrchr(argv[0], '/')))
-               ++prompt;
-       else
-               prompt = argv[0];
+       prompt = __progname;
 
        user = alias = NULL;
 
Index: usr.sbin/crunchgen/crunched_main.c
===================================================================
RCS file: /cvs/src/usr.sbin/crunchgen/crunched_main.c,v
retrieving revision 1.4
diff -u -p -u -p -r1.4 crunched_main.c
--- usr.sbin/crunchgen/crunched_main.c  11 Jan 2014 04:43:00 -0000      1.4
+++ usr.sbin/crunchgen/crunched_main.c  5 Dec 2015 10:01:56 -0000
@@ -47,22 +47,19 @@ extern struct stub entry_points[];
 int
 main(int argc, char *argv[], char **envp)
 {
-       char            *slash, *basename;
+       extern char     *__progname;
        struct stub     *ep;
 
-       if (argv[0] == NULL || *argv[0] == '\0')
+       if (__progname == NULL || *__progname == '\0')
                crunched_usage();
 
-       slash = strrchr(argv[0], '/');
-       basename = slash ? slash + 1 : argv[0];
-
        for (ep = entry_points; ep->name != NULL; ep++)
-               if (!strcmp(basename, ep->name))
+               if (!strcmp(__progname, ep->name))
                        break;
 
        if (ep->name)
                return ep->f(argc, argv, envp);
-       fprintf(stderr, "%s: %s not compiled in\n", EXECNAME, basename);
+       fprintf(stderr, "%s: %s not compiled in\n", EXECNAME, __progname);
        crunched_usage();
 }
 
Index: usr.sbin/pppd/main.c
===================================================================
RCS file: /cvs/src/usr.sbin/pppd/main.c,v
retrieving revision 1.52
diff -u -p -u -p -r1.52 main.c
--- usr.sbin/pppd/main.c        26 Oct 2015 11:10:53 -0000      1.52
+++ usr.sbin/pppd/main.c        5 Dec 2015 10:01:57 -0000
@@ -90,7 +90,6 @@ extern char *strerror();
 char ifname[IFNAMSIZ];         /* Interface name */
 int ifunit;                    /* Interface unit number */
 
-char *progname;                        /* Name of this program */
 char hostname[HOST_NAME_MAX+1];        /* Our hostname */
 static char default_devnam[PATH_MAX];  /* name of default device */
 static pid_t pid;              /* Our pid */
@@ -222,8 +221,6 @@ main(argc, argv)
      */
     for (i = 0; (protp = protocols[i]) != NULL; ++i)
        (*protp->init)(0);
-
-    progname = *argv;
 
     if (!options_from_file(_PATH_SYSOPTIONS, !privileged, 0, 1)
        || !options_from_user())
Index: usr.sbin/pppd/options.c
===================================================================
RCS file: /cvs/src/usr.sbin/pppd/options.c,v
retrieving revision 1.28
diff -u -p -u -p -r1.28 options.c
--- usr.sbin/pppd/options.c     16 Jan 2015 06:40:19 -0000      1.28
+++ usr.sbin/pppd/options.c     5 Dec 2015 10:01:58 -0000
@@ -517,7 +517,7 @@ usage()
 {
     if (phase == PHASE_INITIALIZE)
        fprintf(stderr, usage_string, VERSION, PATCHLEVEL, IMPLEMENTATION,
-               progname);
+               __progname);
 }
 
 /*
@@ -687,7 +687,7 @@ option_error(char *fmt, ...)
     vfmtmsg(buf, sizeof(buf), fmt, args);
     va_end(args);
     if (phase == PHASE_INITIALIZE)
-       fprintf(stderr, "%s: %s\n", progname, buf);
+       fprintf(stderr, "%s: %s\n", __progname, buf);
     syslog(LOG_ERR, "%s", buf);
 }
 
Index: usr.sbin/pppd/pppd.h
===================================================================
RCS file: /cvs/src/usr.sbin/pppd/pppd.h,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 pppd.h
--- usr.sbin/pppd/pppd.h        12 Sep 2015 12:42:36 -0000      1.20
+++ usr.sbin/pppd/pppd.h        5 Dec 2015 10:01:58 -0000
@@ -77,7 +77,7 @@ extern char   hostname[];     /* Our hostname 
 extern u_char  outpacket_buf[]; /* Buffer for outgoing packets */
 extern int     phase;          /* Current state of link - see values below */
 extern int     baud_rate;      /* Current link speed in bits/sec */
-extern char    *progname;      /* Name of this program */
+extern char    *__progname;    /* Name of this program */
 extern int     redirect_stderr;/* Connector's stderr should go to file */
 extern char    peer_authname[];/* Authenticated name of peer */
 extern int     privileged;     /* We were run by real-uid root */
Index: sbin/pdisk/errors.c
===================================================================
RCS file: /cvs/src/sbin/pdisk/errors.c,v
retrieving revision 1.7
diff -u -p -u -p -r1.7 errors.c
--- sbin/pdisk/errors.c 25 May 2010 19:01:32 -0000      1.7
+++ sbin/pdisk/errors.c 5 Dec 2015 10:01:58 -0000
@@ -58,7 +58,7 @@
 //
 // Global Variables
 //
-char *program_name;
+extern char *__progname;
 
 
 //
@@ -70,20 +70,9 @@ char *program_name;
 // Routines
 //
 void
-init_program_name(char **argv)
-{
-    if ((program_name = strrchr(argv[0], '/')) != (char *)NULL) {
-       program_name++;
-    } else {
-       program_name = argv[0];
-    }
-}
-
-
-void
 do_help()
 {
-    printf("usage: %s [-hilrv] disk\n", program_name);
+    printf("usage: %s [-hilrv] disk\n", __progname);
 /*
        {"debug",       no_argument,            0,      'd'},
        {"abbr",        no_argument,            0,      'a'},
@@ -112,7 +101,7 @@ fatal(int value, const char *fmt, ...)
 {
     va_list ap;
 
-    fprintf(stderr, "%s: ", program_name);
+    fprintf(stderr, "%s: ", __progname);
     va_start(ap, fmt);
     vfprintf(stderr, fmt, ap);
     va_end(ap);
@@ -136,7 +125,7 @@ error(int value, const char *fmt, ...)
 {
     va_list ap;
 
-    fprintf(stderr, "%s: ", program_name);
+    fprintf(stderr, "%s: ", __progname);
     va_start(ap, fmt);
     vfprintf(stderr, fmt, ap);
     va_end(ap);
Index: sbin/pdisk/errors.h
===================================================================
RCS file: /cvs/src/sbin/pdisk/errors.h,v
retrieving revision 1.3
diff -u -p -u -p -r1.3 errors.h
--- sbin/pdisk/errors.h 27 Apr 2006 19:52:21 -0000      1.3
+++ sbin/pdisk/errors.h 5 Dec 2015 10:01:58 -0000
@@ -54,7 +54,6 @@ extern int hflag;
 // Forward declarations
 //
 void do_help(void);
-void init_program_name(char **argv);
 void error(int value, const char *fmt, ...);
 void fatal(int value, const char *fmt, ...);
 void usage(const char *kind);
Index: sbin/pdisk/pdisk.c
===================================================================
RCS file: /cvs/src/sbin/pdisk/pdisk.c,v
retrieving revision 1.17
diff -u -p -u -p -r1.17 pdisk.c
--- sbin/pdisk/pdisk.c  20 Aug 2015 22:02:21 -0000      1.17
+++ sbin/pdisk/pdisk.c  5 Dec 2015 10:01:58 -0000
@@ -131,8 +131,6 @@ main(int argc, char **argv)
     int name_index;
     char *versionstr;
 
-    init_program_name(argv);
-
     if (sizeof(DPME) != PBLOCK_SIZE) {
        fatal(-1, "Size of partition map entry (%d) "
                "is not equal to block size (%d)\n",

Reply via email to