Use __progname in cron/crontab/at instead of the homegrown ProgramName.
Also get rid of MAIN_PROGRAM and XTRN which are not needed in modern
C.

 - todd

Index: usr.bin/at/at.c
===================================================================
RCS file: /cvs/src/usr.bin/at/at.c,v
retrieving revision 1.68
diff -u -p -u -r1.68 at.c
--- usr.bin/at/at.c     4 Nov 2015 20:28:17 -0000       1.68
+++ usr.bin/at/at.c     6 Nov 2015 22:01:34 -0000
@@ -31,8 +31,6 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#define        MAIN_PROGRAM
-
 #include <sys/types.h>
 #include <sys/stat.h>
 
@@ -100,7 +98,7 @@ time_t parsetime(int, char **);
 static __dead void
 panic(const char *a)
 {
-       (void)fprintf(stderr, "%s: %s\n", ProgramName, a);
+       (void)fprintf(stderr, "%s: %s\n", __progname, a);
        if (fcreated)
                unlink(atfile);
 
@@ -113,7 +111,7 @@ panic(const char *a)
 static __dead void
 panic2(const char *a, const char *b)
 {
-       (void)fprintf(stderr, "%s: %s%s\n", ProgramName, a, b);
+       (void)fprintf(stderr, "%s: %s%s\n", __progname, a, b);
        if (fcreated)
                unlink(atfile);
 
@@ -498,7 +496,7 @@ list_jobs(int argc, char **argv, int cou
        } else
                uids = NULL;
 
-       shortformat = strcmp(ProgramName, "at") == 0;
+       shortformat = strcmp(__progname, "at") == 0;
 
        if (chdir(AT_DIR) != 0)
                perr2("Cannot change to ", AT_DIR);
@@ -660,7 +658,7 @@ process_jobs(int argc, char **argv, int 
                                if (user_uid != pw->pw_uid && user_uid != 0) {
                                        fprintf(stderr, "%s: Only the superuser"
                                            " may %s other users' jobs\n",
-                                           ProgramName, what == ATRM
+                                           __progname, what == ATRM
                                            ? "remove" : "view");
                                        exit(EXIT_FAILURE);
                                }
@@ -745,7 +743,7 @@ process_jobs(int argc, char **argv, int 
                if (jobs[i] != NULL) {
                        if (!force)
                                fprintf(stderr, "%s: %s: no such job\n",
-                                   ProgramName, jobs[i]);
+                                   __progname, jobs[i]);
                        error++;
                }
        }
@@ -908,23 +906,18 @@ main(int argc, char **argv)
        if (argc < 1)
                usage();
 
-       if ((ProgramName = strrchr(argv[0], '/')) != NULL)
-               ProgramName++;
-       else
-               ProgramName = argv[0];
-
        user_uid = getuid();
        user_gid = getgid();
        spool_gid = getegid();
 
        /* find out what this program is supposed to do */
-       if (strcmp(ProgramName, "atq") == 0) {
+       if (strcmp(__progname, "atq") == 0) {
                program = ATQ;
                options = "cnvq:";
-       } else if (strcmp(ProgramName, "atrm") == 0) {
+       } else if (strcmp(__progname, "atrm") == 0) {
                program = ATRM;
                options = "afi";
-       } else if (strcmp(ProgramName, "batch") == 0) {
+       } else if (strcmp(__progname, "batch") == 0) {
                program = BATCH;
                options = "f:q:mv";
        }
Index: usr.bin/at/parsetime.c
===================================================================
RCS file: /cvs/src/usr.bin/at/parsetime.c,v
retrieving revision 1.23
diff -u -p -u -r1.23 parsetime.c
--- usr.bin/at/parsetime.c      20 Aug 2015 22:32:41 -0000      1.23
+++ usr.bin/at/parsetime.c      6 Nov 2015 21:59:37 -0000
@@ -182,7 +182,7 @@ init_scanner(int argc, char **argv)
 
        if ((sc_token = malloc(sc_len)) == NULL) {
                fprintf(stderr, "%s: Insufficient virtual memory\n",
-                   ProgramName);
+                   __progname);
                return (-1);
        }
        return (0);
@@ -264,7 +264,7 @@ token(void)
 static void
 plonk(int tok)
 {
-       fprintf(stderr, "%s: %s time\n", ProgramName,
+       fprintf(stderr, "%s: %s time\n", __progname,
            (tok == EOF) ? "incomplete" : "garbled");
 }
 
@@ -368,7 +368,7 @@ plus(struct tm *tm)
        case MINUTES:
                if (expectplur != sc_tokplur)
                        fprintf(stderr, "%s: pluralization is wrong\n",
-                           ProgramName);
+                           __progname);
                dateadd(increment, tm);
                return (0);
        }
@@ -446,7 +446,7 @@ tod(struct tm *tm)
        }
        return (0);
 bad:
-       fprintf(stderr, "%s: garbled time\n", ProgramName);
+       fprintf(stderr, "%s: garbled time\n", __progname);
        return (-1);
 }
 
@@ -607,7 +607,7 @@ month(struct tm *tm)
        }
        return (0);
 bad:
-       fprintf(stderr, "%s: garbled time\n", ProgramName);
+       fprintf(stderr, "%s: garbled time\n", __progname);
        return (-1);
 }
 
@@ -700,13 +700,13 @@ parsetime(int argc, char **argv)
        }
 
        if (runtimer < 0) {
-               fprintf(stderr, "%s: garbled time\n", ProgramName);
+               fprintf(stderr, "%s: garbled time\n", __progname);
                return (-1);
        }
 
        if (nowtimer > runtimer) {
                fprintf(stderr, "%s: cannot schedule jobs in the past\n",
-                   ProgramName);
+                   __progname);
                return (-1);
        }
 
Index: usr.sbin/cron/client.c
===================================================================
RCS file: /cvs/src/usr.sbin/cron/client.c,v
retrieving revision 1.3
diff -u -p -u -r1.3 client.c
--- usr.sbin/cron/client.c      4 Nov 2015 20:28:17 -0000       1.3
+++ usr.sbin/cron/client.c      6 Nov 2015 21:58:49 -0000
@@ -101,7 +101,7 @@ poke_daemon(const char *spool_dir, unsig
        if (snprintf(s_un.sun_path, sizeof s_un.sun_path, "%s/%s",
              SPOOL_DIR, CRONSOCK) >= sizeof(s_un.sun_path)) {
                fprintf(stderr, "%s: %s/%s: path too long\n",
-                   ProgramName, SPOOL_DIR, CRONSOCK);
+                   __progname, SPOOL_DIR, CRONSOCK);
                return;
        }
        s_un.sun_family = AF_UNIX;
@@ -110,7 +110,7 @@ poke_daemon(const char *spool_dir, unsig
                send(sock, &cookie, 1, MSG_NOSIGNAL);
        else
                fprintf(stderr, "%s: warning, cron does not appear to be "
-                   "running.\n", ProgramName);
+                   "running.\n", __progname);
        if (sock >= 0)
                close(sock);
 }
Index: usr.sbin/cron/cron.c
===================================================================
RCS file: /cvs/src/usr.sbin/cron/cron.c,v
retrieving revision 1.62
diff -u -p -u -r1.62 cron.c
--- usr.sbin/cron/cron.c        4 Nov 2015 20:28:17 -0000       1.62
+++ usr.sbin/cron/cron.c        6 Nov 2015 22:01:37 -0000
@@ -17,8 +17,6 @@
  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#define        MAIN_PROGRAM
-
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
@@ -71,7 +69,7 @@ static void
 usage(void)
 {
 
-       fprintf(stderr, "usage: %s [-n] [-l load_avg]\n", ProgramName);
+       fprintf(stderr, "usage: %s [-n] [-l load_avg]\n", __progname);
        exit(EXIT_FAILURE);
 }
 
@@ -81,8 +79,6 @@ main(int argc, char *argv[])
        struct sigaction sact;
        sigset_t blocked, omask;
 
-       ProgramName = argv[0];
-
        setlocale(LC_ALL, "");
 
        setvbuf(stdout, NULL, _IOLBF, 0);
@@ -434,7 +430,7 @@ open_socket(void)
        sock = socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
        if (sock == -1) {
                fprintf(stderr, "%s: can't create socket: %s\n",
-                   ProgramName, strerror(errno));
+                   __progname, strerror(errno));
                log_it("CRON", getpid(), "DEATH", "can't create socket");
                exit(EXIT_FAILURE);
        }
@@ -448,7 +444,7 @@ open_socket(void)
        s_un.sun_family = AF_UNIX;
 
        if (connect(sock, (struct sockaddr *)&s_un, sizeof(s_un)) == 0) {
-               fprintf(stderr, "%s: already running\n", ProgramName);
+               fprintf(stderr, "%s: already running\n", __progname);
                log_it("CRON", getpid(), "DEATH", "already running");
                exit(EXIT_FAILURE);
        }
@@ -460,13 +456,13 @@ open_socket(void)
        umask(omask);
        if (rc != 0) {
                fprintf(stderr, "%s: can't bind socket: %s\n",
-                   ProgramName, strerror(errno));
+                   __progname, strerror(errno));
                log_it("CRON", getpid(), "DEATH", "can't bind socket");
                exit(EXIT_FAILURE);
        }
        if (listen(sock, SOMAXCONN)) {
                fprintf(stderr, "%s: can't listen on socket: %s\n",
-                   ProgramName, strerror(errno));
+                   __progname, strerror(errno));
                log_it("CRON", getpid(), "DEATH", "can't listen on socket");
                exit(EXIT_FAILURE);
        }
Index: usr.sbin/cron/crontab.c
===================================================================
RCS file: /cvs/src/usr.sbin/cron/crontab.c,v
retrieving revision 1.82
diff -u -p -u -r1.82 crontab.c
--- usr.sbin/cron/crontab.c     4 Nov 2015 20:28:17 -0000       1.82
+++ usr.sbin/cron/crontab.c     6 Nov 2015 22:01:41 -0000
@@ -17,8 +17,6 @@
  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#define        MAIN_PROGRAM
-
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/wait.h>
@@ -67,9 +65,9 @@ static        int             replace_cmd(void);
 static void
 usage(const char *msg)
 {
-       fprintf(stderr, "%s: usage error: %s\n", ProgramName, msg);
-       fprintf(stderr, "usage: %s [-u user] file\n", ProgramName);
-       fprintf(stderr, "       %s [-e | -l | -r] [-u user]\n", ProgramName);
+       fprintf(stderr, "%s: usage error: %s\n", __progname, msg);
+       fprintf(stderr, "usage: %s [-u user] file\n", __progname);
+       fprintf(stderr, "       %s [-e | -l | -r] [-u user]\n", __progname);
        fprintf(stderr,
            "\t\t(default operation is replace, per 1003.2)\n"
            "\t-e\t(edit user's crontab)\n"
@@ -86,7 +84,6 @@ main(int argc, char *argv[])
        Pid = getpid();
        user_gid = getgid();
        crontab_gid = getegid();
-       ProgramName = argv[0];
 
        if (pledge("stdio rpath wpath cpath fattr getpw unix flock id proc 
exec",
            NULL) == -1) {
@@ -102,7 +99,7 @@ main(int argc, char *argv[])
        if (!allowed(RealUser, CRON_ALLOW, CRON_DENY)) {
                fprintf(stderr,
                        "You (%s) are not allowed to use this program (%s)\n",
-                       User, ProgramName);
+                       User, __progname);
                fprintf(stderr, "See crontab(1) for more information\n");
                log_it(RealUser, Pid, "AUTH", "crontab command not allowed");
                exit(EXIT_FAILURE);
@@ -137,7 +134,7 @@ parse_args(int argc, char *argv[])
 
        if (!(pw = getpwuid(getuid()))) {
                fprintf(stderr, "%s: your UID isn't in the passwd file.\n",
-                       ProgramName);
+                       __progname);
                fprintf(stderr, "bailing out.\n");
                exit(EXIT_FAILURE);
        }
@@ -159,7 +156,7 @@ parse_args(int argc, char *argv[])
                        }
                        if (!(pw = getpwnam(optarg))) {
                                fprintf(stderr, "%s:  user `%s' unknown\n",
-                                       ProgramName, optarg);
+                                       __progname, optarg);
                                exit(EXIT_FAILURE);
                        }
                        if (strlcpy(User, optarg, sizeof User) >= sizeof User)
@@ -353,7 +350,7 @@ edit_cmd(void)
        rewind(NewCrontab);
        if (ferror(NewCrontab)) {
                fprintf(stderr, "%s: error while writing new crontab to %s\n",
-                       ProgramName, Filename);
+                       __progname, Filename);
  fatal:
                unlink(Filename);
                exit(EXIT_FAILURE);
@@ -379,13 +376,13 @@ edit_cmd(void)
                if (lstat(Filename, &xstatbuf) == 0 &&
                    statbuf.st_ino != xstatbuf.st_ino) {
                        fprintf(stderr, "%s: crontab temp file moved, editor "
-                          "may create backup files improperly\n", ProgramName);
+                          "may create backup files improperly\n", __progname);
                }
                fprintf(stderr, "%s: no changes made to crontab\n",
-                       ProgramName);
+                       __progname);
                goto remove;
        }
-       fprintf(stderr, "%s: installing new crontab\n", ProgramName);
+       fprintf(stderr, "%s: installing new crontab\n", __progname);
        switch (replace_cmd()) {
        case 0:
                break;
@@ -413,11 +410,11 @@ edit_cmd(void)
        case -2:
        abandon:
                fprintf(stderr, "%s: edits left in %s\n",
-                       ProgramName, Filename);
+                       __progname, Filename);
                goto done;
        default:
                fprintf(stderr, "%s: panic: bad switch() in replace_cmd()\n",
-                       ProgramName);
+                       __progname);
                goto fatal;
        }
  remove:
@@ -442,7 +439,7 @@ replace_cmd(void)
        char **envp = env_init();
 
        if (envp == NULL) {
-               fprintf(stderr, "%s: Cannot allocate memory.\n", ProgramName);
+               fprintf(stderr, "%s: Cannot allocate memory.\n", __progname);
                return (-2);
        }
        if (snprintf(TempFilename, sizeof TempFilename, "%s/tmp.XXXXXXXXX",
@@ -484,7 +481,7 @@ replace_cmd(void)
 
        if (ferror(tmp)) {
                fprintf(stderr, "%s: error while writing new crontab to %s\n",
-                       ProgramName, TempFilename);
+                       __progname, TempFilename);
                fclose(tmp);
                error = -2;
                goto done;
@@ -546,7 +543,7 @@ replace_cmd(void)
        }
        if (rename(TempFilename, n)) {
                fprintf(stderr, "%s: error renaming %s to %s\n",
-                       ProgramName, TempFilename, n);
+                       __progname, TempFilename, n);
                perror("rename");
                error = -2;
                goto done;
Index: usr.sbin/cron/globals.h
===================================================================
RCS file: /cvs/src/usr.sbin/cron/globals.h,v
retrieving revision 1.12
diff -u -p -u -r1.12 globals.h
--- usr.sbin/cron/globals.h     4 Nov 2015 12:53:05 -0000       1.12
+++ usr.sbin/cron/globals.h     6 Nov 2015 21:57:58 -0000
@@ -17,13 +17,5 @@
  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
-#ifdef MAIN_PROGRAM
-# define XTRN
-# define INIT(x) = x
-#else
-# define XTRN extern
-# define INIT(x)
-#endif
-
-XTRN char      *ProgramName INIT("amnesia");
-XTRN int       LineNumber INIT(0);
+extern int     LineNumber;
+extern char    *__progname;
Index: usr.sbin/cron/misc.c
===================================================================
RCS file: /cvs/src/usr.sbin/cron/misc.c,v
retrieving revision 1.68
diff -u -p -u -r1.68 misc.c
--- usr.sbin/cron/misc.c        4 Nov 2015 20:28:17 -0000       1.68
+++ usr.sbin/cron/misc.c        6 Nov 2015 21:58:56 -0000
@@ -33,6 +33,7 @@
 #include "globals.h"
 
 static int syslog_open = FALSE;
+int LineNumber;
 
 /* get_char(file) : like getc() but increment LineNumber on newlines
  */
@@ -126,7 +127,7 @@ log_it(const char *username, pid_t xpid,
            "END EDIT", "LIST", "MAIL", "RELOAD", "REPLACE", "STARTUP", NULL };
 
        if (!syslog_open) {
-               openlog(ProgramName, LOG_PID, LOG_CRON);
+               openlog(__progname, LOG_PID, LOG_CRON);
                syslog_open = TRUE;             /* assume openlog success */
        }
 
@@ -140,8 +141,10 @@ log_it(const char *username, pid_t xpid,
 void
 log_close(void)
 {
-       closelog();
-       syslog_open = FALSE;
+       if (syslog_open) {
+               closelog();
+               syslog_open = FALSE;
+       }
 }
 
 /* char *first_word(char *s, char *t)

Reply via email to