Based on Todd's patch for at and cron, I did a grep through our base tree to see if there are more occurrences of self-made __progname handling.
Here's the patch that fixes these cases. In newfs and newfs_ext2fs, I prevent an out-of-boundary access in case someone calls them with argv[0] set to an empty string. And gomoku get a little style while at it. 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 7 Nov 2015 11:16:25 -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 7 Nov 2015 11:16:25 -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.28 diff -u -p -u -p -r1.28 main.c --- games/gomoku/main.c 4 Nov 2015 21:22:10 -0000 1.28 +++ games/gomoku/main.c 7 Nov 2015 11:16:26 -0000 @@ -45,10 +45,11 @@ #define PROGRAM 1 /* get input from program */ #define INPUTF 2 /* get input from a file */ +extern char *__progname; + 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 */ @@ -67,9 +68,7 @@ char *plyr[2]; /* who's who */ static char you[LOGIN_NAME_MAX]; /* username */ int -main(argc, argv) - int argc; - char **argv; +main(int argc, char *argv[]) { char buf[128]; char fname[PATH_MAX]; @@ -81,12 +80,6 @@ main(argc, argv) }; char *tmpname; - prog = strrchr(argv[0], '/'); - if (prog) - prog++; - else - prog = argv[0]; - if ((tmpname = getlogin()) != NULL) strlcpy(you, tmpname, sizeof(you)); else @@ -114,7 +107,7 @@ main(argc, argv) default: fprintf(stderr, "usage: %s [-bcdu] [-D debugfile] [inputfile]\n", - prog); + __progname); exit(1); } } @@ -191,8 +184,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); } @@ -219,8 +212,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; @@ -326,8 +319,7 @@ again: } int -readinput(fp) - FILE *fp; +readinput(FILE *fp) { char *cp; int c; @@ -344,8 +336,7 @@ readinput(fp) * Handle strange situations. */ void -whatsup(signum) - int signum; +whatsup(int signum) { int i, pnum, n, s1, s2, d1, d2; struct spotstr *sp; @@ -493,8 +484,7 @@ syntax: * Display debug info. */ void -dlog(str) - char *str; +dlog(char *str) { if (debugfp) @@ -506,10 +496,8 @@ dlog(str) } void -logit(str) - char *str; +logit(char *str) { - if (debugfp) fprintf(debugfp, "%s\n", str); if (interactive) @@ -522,8 +510,7 @@ logit(str) * Deal with a fatal error. */ void -qlog(str) - char *str; +qlog(char *str) { dlog(str); if (interactive) @@ -534,8 +521,7 @@ qlog(str) /* ARGSUSED */ void -quit(sig) - int sig; +quit(int sig) { if (interactive) { bdisp(); /* show final board */ @@ -548,10 +534,9 @@ quit(sig) * Die gracefully. */ void -panic(str) - char *str; +panic(char *str) { - fprintf(stderr, "%s: %s\n", prog, str); + fprintf(stderr, "%s: %s\n", __progname, str); fputs("resign\n", stdout); quit(0); } Index: libexec/tradcpp/main.c =================================================================== RCS file: /cvs/src/libexec/tradcpp/main.c,v retrieving revision 1.3 diff -u -p -u -p -r1.3 main.c --- libexec/tradcpp/main.c 9 Oct 2015 12:20:18 -0000 1.3 +++ libexec/tradcpp/main.c 7 Nov 2015 11:16:26 -0000 @@ -93,6 +93,8 @@ struct commandline_macro { const char *expansion; }; +extern char *__progname; + static struct array commandline_macros; static @@ -937,17 +939,17 @@ check_arg_option(const char *opt, const DEAD static void -usage(const char *progname, const char *fmt, ...) +usage(const char *fmt, ...) { va_list ap; - fprintf(stderr, "%s: ", progname); + fprintf(stderr, "%s: ", __progname); va_start(ap, fmt); vfprintf(stderr, fmt, ap); va_end(ap); fprintf(stderr, "\n"); - fprintf(stderr, "Usage: %s [options] [infile [outfile]]\n", progname); + fprintf(stderr, "Usage: %s [options] [infile [outfile]]\n", __progname); fprintf(stderr, "Common options:\n"); fprintf(stderr, " -C Retain comments\n"); fprintf(stderr, " -Dmacro[=def] Predefine macro\n"); @@ -1028,18 +1030,13 @@ freestringlater(char *s) int main(int argc, char *argv[]) { - const char *progname; const char *inputfile = NULL; const char *outputfile = NULL; struct place cmdplace; int i; - progname = strrchr(argv[0], '/'); - progname = progname == NULL ? argv[0] : progname + 1; - complain_init(progname); - if (pledge("stdio rpath wpath cpath", NULL) == -1) { - fprintf(stderr, "%s: pledge: %s", progname, strerror(errno)); + fprintf(stderr, "%s: pledge: %s", __progname, strerror(errno)); exit(1); } @@ -1067,7 +1064,7 @@ main(int argc, char *argv[]) i++; continue; } - usage(progname, "Invalid option %s", argv[i]); + usage("Invalid option %s", argv[i]); } if (i < argc) { inputfile = argv[i++]; @@ -1076,7 +1073,7 @@ main(int argc, char *argv[]) outputfile = argv[i++]; } if (i < argc) { - usage(progname, "Extra non-option argument %s", argv[i]); + usage("Extra non-option argument %s", argv[i]); } mode.output_file = outputfile; Index: libexec/tradcpp/place.c =================================================================== RCS file: /cvs/src/libexec/tradcpp/place.c,v retrieving revision 1.1 diff -u -p -u -p -r1.1 place.c --- libexec/tradcpp/place.c 30 Jul 2014 16:33:11 -0000 1.1 +++ libexec/tradcpp/place.c 7 Nov 2015 11:16:26 -0000 @@ -47,11 +47,11 @@ struct placefile { DECLARRAY(placefile, static UNUSED); DEFARRAY(placefile, static); +extern char *__progname; + static struct placefilearray placefiles; static bool overall_failure; -static const char *myprogname; - //////////////////////////////////////////////////////////// // seenfiles @@ -187,13 +187,6 @@ place_printfrom(const struct place *p) //////////////////////////////////////////////////////////// // complaints - -void -complain_init(const char *pn) -{ - myprogname = pn; -} - void complain(const struct place *p, const char *fmt, ...) { @@ -204,7 +197,7 @@ complain(const struct place *p, const ch fprintf(stderr, "%s:%u:%u: ", place_getname(p), p->line, p->column); } else { - fprintf(stderr, "%s: ", myprogname); + fprintf(stderr, "%s: ", __progname); } va_start(ap, fmt); vfprintf(stderr, fmt, ap); Index: sbin/newfs/newfs.c =================================================================== RCS file: /cvs/src/sbin/newfs/newfs.c,v retrieving revision 1.100 diff -u -p -u -p -r1.100 newfs.c --- sbin/newfs/newfs.c 29 Sep 2015 03:19:24 -0000 1.100 +++ sbin/newfs/newfs.c 7 Nov 2015 11:16:26 -0000 @@ -410,7 +410,7 @@ main(int argc, char *argv[]) special); } cp = strchr(argv[0], '\0') - 1; - if (cp == NULL || + if (cp == NULL || cp < argv[0] || ((*cp < 'a' || *cp > ('a' + maxpartitions - 1)) && !isdigit((unsigned char)*cp))) fatal("%s: can't figure out file system partition", Index: sbin/newfs_ext2fs/newfs_ext2fs.c =================================================================== RCS file: /cvs/src/sbin/newfs_ext2fs/newfs_ext2fs.c,v retrieving revision 1.17 diff -u -p -u -p -r1.17 newfs_ext2fs.c --- sbin/newfs_ext2fs/newfs_ext2fs.c 14 Oct 2015 15:54:49 -0000 1.17 +++ sbin/newfs_ext2fs/newfs_ext2fs.c 7 Nov 2015 11:16:27 -0000 @@ -519,7 +519,8 @@ getpartition(int fsi, const char *specia if (!S_ISCHR(st.st_mode)) warnx("%s: not a character-special device", special); cp = strchr(argv[0], '\0') - 1; - if (cp == NULL || ((*cp < 'a' || *cp > ('a' + getmaxpartitions() - 1)) + if (cp == NULL || cp < argv[0] || + ((*cp < 'a' || *cp > ('a' + getmaxpartitions() - 1)) && !isdigit((unsigned char)*cp))) errx(EXIT_FAILURE, "%s: can't figure out file system partition", argv[0]); lp = getdisklabel(special, fsi); Index: usr.bin/id/id.c =================================================================== RCS file: /cvs/src/usr.bin/id/id.c,v retrieving revision 1.26 diff -u -p -u -p -r1.26 id.c --- usr.bin/id/id.c 9 Oct 2015 01:37:07 -0000 1.26 +++ usr.bin/id/id.c 7 Nov 2015 11:16:27 -0000 @@ -45,8 +45,9 @@ void pretty(struct passwd *); void group(struct passwd *, int); void usage(void); void user(struct passwd *); -struct passwd * - who(char *); +struct passwd *who(char *); + +extern char *__progname; int main(int argc, char *argv[]) @@ -63,13 +64,13 @@ main(int argc, char *argv[]) cflag = Gflag = gflag = nflag = pflag = rflag = uflag = 0; - if (strcmp(getprogname(), "groups") == 0) { + if (strcmp(__progname, "groups") == 0) { Gflag = 1; nflag = 1; opts = ""; if (argc > 2) usage(); - } else if (strcmp(getprogname(), "whoami") == 0) { + } else if (strcmp(__progname, "whoami") == 0) { uflag = 1; nflag = 1; opts = ""; @@ -340,9 +341,9 @@ who(char *u) void usage(void) { - if (strcmp(getprogname(), "groups") == 0) { + if (strcmp(__progname, "groups") == 0) { (void)fprintf(stderr, "usage: groups [user]\n"); - } else if (strcmp(getprogname(), "whoami") == 0) { + } else if (strcmp(__progname, "whoami") == 0) { (void)fprintf(stderr, "usage: whoami\n"); } else { (void)fprintf(stderr, "usage: id [user]\n"); Index: usr.bin/nl/nl.c =================================================================== RCS file: /cvs/src/usr.bin/nl/nl.c,v retrieving revision 1.6 diff -u -p -u -p -r1.6 nl.c --- usr.bin/nl/nl.c 9 Oct 2015 01:37:08 -0000 1.6 +++ usr.bin/nl/nl.c 7 Nov 2015 11:16:27 -0000 @@ -74,6 +74,8 @@ void filter(void); void parse_numbering(const char *, int); __dead void usage(void); +extern char *__progname; + /* * Delimiter characters that indicate the start of a logical page section. */ @@ -361,6 +363,6 @@ usage(void) { (void)fprintf(stderr, "usage: %s [-p] [-b type] [-d delim] [-f type] " "[-h type] [-i incr] [-l num]\n\t[-n format] [-s sep] " - "[-v startnum] [-w width] [file]\n", getprogname()); + "[-v startnum] [-w width] [file]\n", __progname); exit(EXIT_FAILURE); } Index: usr.bin/telnet/main.c =================================================================== RCS file: /cvs/src/usr.bin/telnet/main.c,v retrieving revision 1.30 diff -u -p -u -p -r1.30 main.c --- usr.bin/telnet/main.c 22 Jul 2014 07:30:24 -0000 1.30 +++ usr.bin/telnet/main.c 7 Nov 2015 11:16:27 -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 7 Nov 2015 11:16:27 -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 7 Nov 2015 11:16:28 -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 7 Nov 2015 11:16:29 -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 7 Nov 2015 11:16:29 -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 7 Nov 2015 11:16:29 -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 7 Nov 2015 11:16:29 -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 7 Nov 2015 11:16:29 -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", Index: usr.bin/lex/main.c =================================================================== RCS file: /cvs/src/usr.bin/lex/main.c,v retrieving revision 1.15 diff -u -p -u -p -r1.15 main.c --- usr.bin/lex/main.c 10 Oct 2015 05:47:54 -0000 1.15 +++ usr.bin/lex/main.c 7 Nov 2015 11:16:30 -0000 @@ -104,10 +104,7 @@ int end_of_buffer_state; char **input_files; int num_input_files; -/* Make sure program_name is initialized so we don't crash if writing - * out an error message before getting the program name from argv[0]. - */ -char *program_name = "flex"; +extern char *__progname; #ifndef SHORT_FILE_NAMES static const char outfile_template[] = "lex.%s.%s"; @@ -138,8 +135,7 @@ char **argv; if (pledge("stdio rpath wpath cpath", NULL) == -1) { - fprintf( stderr, _( "%s: pledge\n" ), - program_name); + fprintf( stderr, _( "%s: pledge\n" ), __progname); exit(1); } @@ -413,7 +409,7 @@ int exit_status; if ( printstats ) { fprintf( stderr, _( "%s version %s usage statistics:\n" ), - program_name, flex_version ); + __progname, flex_version ); fprintf( stderr, _( " scanner options: -" ) ); @@ -616,10 +612,8 @@ char **argv; defs1_offset = prolog_offset = action_offset = action_index = 0; action_array[0] = '\0'; - program_name = argv[0]; - - if ( program_name[0] != '\0' && - program_name[strlen( program_name ) - 1] == '+' ) + if (__progname[0] != '\0' && + __progname[strlen(__progname) - 1] == '+') C_plus_plus = true; /* read flags */ @@ -802,7 +796,7 @@ char **argv; case 'V': printf( _( "%s version %s\n" ), - program_name, flex_version ); + __progname, flex_version ); exit( 0 ); case 'w': @@ -820,8 +814,8 @@ char **argv; default: fprintf( stderr, _( "%s: unknown flag '%c'. For usage, try\n\t%s --help\n" ), - program_name, (int) arg[i], - program_name ); + __progname, (int) arg[i], + __progname ); exit( 1 ); } @@ -1123,7 +1117,7 @@ void usage() fprintf( f, _( "%s [-bdfhilnpstvwBFILTV78+? -C[aefFmr] -ooutput -Pprefix -Sskeleton]\n" ), - program_name ); + __progname ); fprintf( f, _( "\t[--help --version] [file ...]\n" ) ); fprintf( f, _( "\t-b generate backing-up information to %s\n" ), @@ -1158,8 +1152,8 @@ _( "%s [-bdfhilnpstvwBFILTV78+? -C[aefFm fprintf( f, _( "\t-I generate interactive scanner (opposite of -B)\n" ) ); fprintf( f, _( "\t-L suppress #line directives in scanner\n" ) ); - fprintf( f, _( "\t-T %s should run in trace mode\n" ), program_name ); - fprintf( f, _( "\t-V report %s version\n" ), program_name ); + fprintf( f, _( "\t-T %s should run in trace mode\n" ), __progname ); + fprintf( f, _( "\t-V report %s version\n" ), __progname ); fprintf( f, _( "\t-7 generate 7-bit scanner\n" ) ); fprintf( f, _( "\t-8 generate 8-bit scanner\n" ) ); fprintf( f, _( "\t-+ generate C++ scanner class\n" ) ); @@ -1180,5 +1174,5 @@ _( "\t\t-CF do not compress scanner tab fprintf( f, _( "\t-P specify scanner prefix other than \"yy\"\n" ) ); fprintf( f, _( "\t-S specify skeleton file\n" ) ); fprintf( f, _( "\t--help produce this help message\n" ) ); - fprintf( f, _( "\t--version report %s version\n" ), program_name ); + fprintf( f, _( "\t--version report %s version\n" ), __progname ); } Index: usr.bin/lex/misc.c =================================================================== RCS file: /cvs/src/usr.bin/lex/misc.c,v retrieving revision 1.14 diff -u -p -u -p -r1.14 misc.c --- usr.bin/lex/misc.c 15 Oct 2015 05:57:09 -0000 1.14 +++ usr.bin/lex/misc.c 7 Nov 2015 11:16:30 -0000 @@ -37,6 +37,7 @@ #include "flexdef.h" +extern char *__progname; void action_define( defname, value ) char *defname; @@ -334,7 +335,7 @@ void dataflush() void flexerror( msg ) const char msg[]; { - fprintf( stderr, "%s: %s\n", program_name, msg ); + fprintf( stderr, "%s: %s\n", __progname, msg ); flexend( 1 ); } @@ -345,7 +346,7 @@ void flexfatal( msg ) const char msg[]; { fprintf( stderr, _( "%s: fatal internal error, %s\n" ), - program_name, msg ); + __progname, msg ); exit( 1 ); }