From fb11e1fe0a29c628c288d5a66c8e4d153bd15a5b Mon Sep 17 00:00:00 2001 From: Craig Small Date: Tue, 3 Jan 2012 18:48:43 +1100 Subject: [PATCH] Changed the err and warns to macros err and warn are BSD format but they are not recommended by library developers. However their consiseness is useful! The solution is to use some macros that create xerr etc which then just map to the error() function. The next problem is error() uses program_invocation_name so we set this to program_invovation_short_name This is a global set but seems to be the convention (or at least errors are on the short name only) used everywhere else. --- free.c | 7 ++++--- include/c.h | 45 ++++----------------------------------- lib/strutils.c | 42 +++++++++++++------------------------ pgrep.c | 21 ++++++++++--------- pmap.c | 8 +++---- proc/procps.h | 9 -------- pwdx.c | 1 + skill.c | 15 ++++++------- slabtop.c | 7 ++++--- sysctl.c | 57 +++++++++++++++++++++++++------------------------- tload.c | 11 +++++----- uptime.c | 1 + vmstat.c | 13 ++++++------ w.c | 9 ++++---- watch.c | 1 + 15 files changed, 100 insertions(+), 147 deletions(-) diff --git a/free.c b/free.c index 0ff64b11..cd1b1455 100644 --- a/free.c +++ b/free.c @@ -206,6 +206,7 @@ int main(int argc, char **argv) args.repeat_interval = 1000000; args.repeat_counter = 0; + program_invocation_name = program_invocation_short_name; setlocale (LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); @@ -246,9 +247,9 @@ int main(int argc, char **argv) flags |= FREE_REPEAT; args.repeat_interval = (1000000 * strtof(optarg, &endptr)); if (errno || optarg == endptr || (endptr && *endptr)) - errx(EXIT_FAILURE, _("seconds argument `%s' failed"), optarg); + xerrx(EXIT_FAILURE, _("seconds argument `%s' failed"), optarg); if (args.repeat_interval < 1) - errx(EXIT_FAILURE, + xerrx(EXIT_FAILURE, _("seconds argument `%s' is not positive number"), optarg); break; case 'c': @@ -256,7 +257,7 @@ int main(int argc, char **argv) flags |= FREE_REPEATCOUNT; args.repeat_counter = strtoul(optarg, &endptr, 10); if (errno || optarg == endptr || (endptr && *endptr)) - errx(EXIT_FAILURE, _("count argument `%s' failed"), optarg); + xerrx(EXIT_FAILURE, _("count argument `%s' failed"), optarg); break; case HELP_OPTION: diff --git a/include/c.h b/include/c.h index 950bca2c..2be74950 100644 --- a/include/c.h +++ b/include/c.h @@ -17,10 +17,6 @@ #include #include -#ifdef HAVE_ERR_H -# include -#endif - /* * Compiler specific stuff */ @@ -106,43 +102,10 @@ static inline char *prog_inv_sh_nm_from_file(char *f, char stripext) /* * Error printing. */ -#ifndef HAVE_ERR_H -static inline void -errmsg(char doexit, int excode, char adderr, const char *fmt, ...) -{ - fprintf(stderr, "%s: ", program_invocation_short_name); - if (fmt != NULL) { - va_list argp; - va_start(argp, fmt); - vfprintf(stderr, fmt, argp); - va_end(argp); - if (adderr) - fprintf(stderr, ": "); - } - if (adderr) - fprintf(stderr, "%m"); - fprintf(stderr, "\n"); - if (doexit) - exit(excode); -} - -# ifndef HAVE_ERR -# define err(E, FMT...) errmsg(1, E, 1, FMT) -# endif - -# ifndef HAVE_ERRX -# define errx(E, FMT...) errmsg(1, E, 0, FMT) -# endif - -# ifndef HAVE_WARN -# define warn(FMT...) errmsg(0, 0, 1, FMT) -# endif - -# ifndef HAVE_WARNX -# define warnx(FMT...) errmsg(0, 0, 0, FMT) -# endif -#endif /* !HAVE_ERR_H */ - +#define xwarn(FMT...) error(0, errno, FMT) +#define xwarnx(FMT...) error(0, 0, FMT) +#define xerr(STATUS, FMT...) error(STATUS, errno, FMT) +#define xerrx(STATUS, FMT...) error(STATUS, 0, FMT) /* * Constant strings for usage() functions. diff --git a/lib/strutils.c b/lib/strutils.c index 65ef998f..14d4de75 100644 --- a/lib/strutils.c +++ b/lib/strutils.c @@ -15,19 +15,14 @@ long strtol_or_err(const char *str, const char *errmesg) long num; char *end = NULL; - if (str == NULL || *str == '\0') - goto err; - errno = 0; - num = strtol(str, &end, 10); - if (errno || str == end || (end && *end)) - goto err; - - return num; - err: - if (errno) - err(EXIT_FAILURE, "%s: '%s'", errmesg, str); - else - errx(EXIT_FAILURE, "%s: '%s'", errmesg, str); + if (str != NULL && *str != '\0') { + errno = 0; + num = strtol(str, &end, 10); + if (errno == 0 && str != end && end != NULL && *end == '\0') + return num; + } + error(EXIT_FAILURE, errno, "%s: '%s'", errmesg, str); + return 0; } /* * same as strtod(3) but exit on failure instead of returning crap @@ -37,20 +32,13 @@ double strtod_or_err(const char *str, const char *errmesg) double num; char *end = NULL; - if (str == NULL || *str == '\0') - goto err; - errno = 0; - num = strtod(str, &end); - - if (errno || str == end || (end && *end)) - goto err; - - return num; - err: - if (errno) - err(EXIT_FAILURE, "%s: '%s'", errmesg, str); - else - errx(EXIT_FAILURE, "%s: '%s'", errmesg, str); + if (str != NULL && *str != '\0') { + errno = 0; + num = strtod(str, &end); + if (errno == 0 && str != end && end != NULL && *end == '\0') + return num; + } + error(EXIT_FAILURE, errno, "%s: '%s'", errmesg, str); return 0; } diff --git a/pgrep.c b/pgrep.c index 9575d053..1229be18 100644 --- a/pgrep.c +++ b/pgrep.c @@ -255,7 +255,7 @@ static int conv_uid (const char *restrict name, union el *restrict e) pwd = getpwnam (name); if (pwd == NULL) { - warnx(_("invalid user name: %s"), name); + xwarnx(_("invalid user name: %s"), name); return 0; } e->num = pwd->pw_uid; @@ -272,7 +272,7 @@ static int conv_gid (const char *restrict name, union el *restrict e) grp = getgrnam (name); if (grp == NULL) { - warnx(_("invalid group name: %s"), name); + xwarnx(_("invalid group name: %s"), name); return 0; } e->num = grp->gr_gid; @@ -283,7 +283,7 @@ static int conv_gid (const char *restrict name, union el *restrict e) static int conv_pgrp (const char *restrict name, union el *restrict e) { if (! strict_atol (name, &e->num)) { - warnx(_("invalid process group: %s"), name); + xwarnx(_("invalid process group: %s"), name); return 0; } if (e->num == 0) @@ -295,7 +295,7 @@ static int conv_pgrp (const char *restrict name, union el *restrict e) static int conv_sid (const char *restrict name, union el *restrict e) { if (! strict_atol (name, &e->num)) { - warnx(_("invalid session id: %s"), name); + xwarnx(_("invalid session id: %s"), name); return 0; } if (e->num == 0) @@ -307,7 +307,7 @@ static int conv_sid (const char *restrict name, union el *restrict e) static int conv_num (const char *restrict name, union el *restrict e) { if (! strict_atol (name, &e->num)) { - warnx(_("not a number: %s"), name); + xwarnx(_("not a number: %s"), name); return 0; } return 1; @@ -733,14 +733,14 @@ static void parse_opts (int argc, char **argv) } if(opt_lock && !opt_pidfile) - errx(EXIT_FAILURE, _("-L without -F makes no sense\n" + xerrx(EXIT_FAILURE, _("-L without -F makes no sense\n" "Try `%s --help' for more information."), program_invocation_short_name); if(opt_pidfile){ opt_pid = read_pidfile(); if(!opt_pid) - errx(EXIT_FAILURE, _("pidfile not valid\n" + xerrx(EXIT_FAILURE, _("pidfile not valid\n" "Try `%s --help' for more information."), program_invocation_short_name); } @@ -748,11 +748,11 @@ static void parse_opts (int argc, char **argv) if (argc - optind == 1) opt_pattern = argv[optind]; else if (argc - optind > 1) - errx(EXIT_FAILURE, _("only one pattern can be provided\n" + xerrx(EXIT_FAILURE, _("only one pattern can be provided\n" "Try `%s --help' for more information."), program_invocation_short_name); else if (criteria_count == 0) - errx(EXIT_FAILURE, _("no matching criteria specified\n" + xerrx(EXIT_FAILURE, _("no matching criteria specified\n" "Try `%s --help' for more information."), program_invocation_short_name); } @@ -763,6 +763,7 @@ int main (int argc, char **argv) union el *procs; int num; + program_invocation_name = program_invocation_short_name; setlocale (LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); @@ -778,7 +779,7 @@ int main (int argc, char **argv) if (errno==ESRCH) // gone now, which is OK continue; - warn(_("killing pid %ld failed")); + xwarn(_("killing pid %ld failed")); } } else { if (opt_count) { diff --git a/pmap.c b/pmap.c index 8b816572..3296ea70 100644 --- a/pmap.c +++ b/pmap.c @@ -10,7 +10,6 @@ */ #include -#include #include #include #include @@ -393,6 +392,7 @@ int main(int argc, char **argv) {NULL, 0, NULL, 0} }; + program_invocation_name = program_invocation_short_name; setlocale (LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); @@ -405,7 +405,7 @@ int main(int argc, char **argv) x_option = 1; break; case 'r': - warnx(_("option -r is ignored as SunOS compatibility")); + xwarnx(_("option -r is ignored as SunOS compatibility")); break; case 'd': d_option = 1; @@ -460,9 +460,9 @@ int main(int argc, char **argv) argv += optind; if (argc < 1) - errx(EXIT_FAILURE, _("argument missing")); + xerrx(EXIT_FAILURE, _("argument missing")); if (d_option && x_option) - errx(EXIT_FAILURE, _("options -d and -x cannot coexist")); + xerrx(EXIT_FAILURE, _("options -d and -x cannot coexist")); pidlist = xmalloc(sizeof(unsigned) * argc); diff --git a/proc/procps.h b/proc/procps.h index abbab98d..70514b41 100644 --- a/proc/procps.h +++ b/proc/procps.h @@ -45,15 +45,6 @@ #define NORETURN __attribute__((__noreturn__)) #define FUNCTION __attribute__((__const__)) // no access to global mem, even via ptr, and no side effect -#if !defined(restrict) && __STDC_VERSION__ < 199901 -#if __GNUC__ > 2 || __GNUC_MINOR__ >= 92 -#define restrict __restrict__ -#else -#warning No restrict keyword? -#define restrict -#endif -#endif - #if __GNUC__ > 2 || __GNUC_MINOR__ >= 96 // won't alias anything, and aligned enough for anything #define MALLOC __attribute__ ((__malloc__)) diff --git a/pwdx.c b/pwdx.c index e4fcdd00..2743040a 100644 --- a/pwdx.c +++ b/pwdx.c @@ -48,6 +48,7 @@ int main(int argc, char *argv[]) {NULL, 0, 0, 0} }; + program_invocation_name = program_invocation_short_name; setlocale (LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); diff --git a/skill.c b/skill.c index e9ce5ddc..b6e9d87a 100644 --- a/skill.c +++ b/skill.c @@ -245,7 +245,7 @@ static void iterate(struct run_time_conf_t *run_time) #endif d = opendir("/proc"); if (!d) - err(EXIT_FAILURE, "/proc"); + xerr(EXIT_FAILURE, "/proc"); while ((de = readdir(d))) { if (de->d_name[0] > '9') continue; @@ -387,7 +387,7 @@ static void __attribute__ ((__noreturn__)) if (s) printf("%s\n", s); else - warnx(_("unknown signal name %s"), + xwarnx(_("unknown signal name %s"), optarg); free(s); } else { @@ -448,7 +448,7 @@ int snice_prio_option(int *argc, char **argv) prio = strtol_or_err(argv[i], _("failed to parse argument")); if (prio < INT_MIN || INT_MAX < prio) - errx(EXIT_FAILURE, + xerrx(EXIT_FAILURE, _("priority %lu out of range"), prio); nargs--; if (nargs - i) @@ -604,15 +604,15 @@ static void skillsnice_parse(int argc, /* No more arguments to process. Must sanity check. */ if (!tty_count && !uid_count && !cmd_count && !pid_count) - errx(EXIT_FAILURE, _("no process selection criteria")); + xerrx(EXIT_FAILURE, _("no process selection criteria")); if ((run_time->fast | run_time->interactive | run_time-> verbose | run_time->warnings | run_time->noaction) & ~1) - errx(EXIT_FAILURE, _("general flags may not be repeated")); + xerrx(EXIT_FAILURE, _("general flags may not be repeated")); if (run_time->interactive && (run_time->verbose | run_time->fast | run_time->noaction)) - errx(EXIT_FAILURE, _("-i makes no sense with -v, -f, and -n")); + xerrx(EXIT_FAILURE, _("-i makes no sense with -v, -f, and -n")); if (run_time->verbose && (run_time->interactive | run_time->fast)) - errx(EXIT_FAILURE, _("-v makes no sense with -i and -f")); + xerrx(EXIT_FAILURE, _("-v makes no sense with -i and -f")); if (run_time->noaction) { program = PROG_SKILL; /* harmless */ @@ -627,6 +627,7 @@ static void skillsnice_parse(int argc, /* main body */ int main(int argc, char ** argv) { + program_invocation_name = program_invocation_short_name; struct run_time_conf_t run_time; memset(&run_time, 0, sizeof(struct run_time_conf_t)); my_pid = getpid(); diff --git a/slabtop.c b/slabtop.c index 6647b2ce..b84cda57 100644 --- a/slabtop.c +++ b/slabtop.c @@ -276,7 +276,7 @@ int main(int argc, char *argv[]) int o; unsigned short old_rows; struct slab_info *slab_list = NULL; - int run_once=0; + int run_once=0; static const struct option longopts[] = { { "delay", required_argument, NULL, 'd' }, @@ -287,6 +287,7 @@ int main(int argc, char *argv[]) { NULL, 0, NULL, 0 } }; + program_invocation_name = program_invocation_short_name; setlocale (LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); @@ -300,7 +301,7 @@ int main(int argc, char *argv[]) errno = 0; delay = strtol_or_err(optarg, _("illegal delay")); if (delay < 1) - errx(EXIT_FAILURE, + xerrx(EXIT_FAILURE, _("delay must be positive integer")); break; case 's': @@ -322,7 +323,7 @@ int main(int argc, char *argv[]) } if (tcgetattr(STDIN_FILENO, &saved_tty) == -1) - warn(_("terminal setting retrieval")); + xwarn(_("terminal setting retrieval")); old_rows = rows; term_size(0); diff --git a/sysctl.c b/sysctl.c index cde270b6..872eceb5 100644 --- a/sysctl.c +++ b/sysctl.c @@ -70,7 +70,7 @@ static void slashdot(char *restrict p, char old, char new){ while(p){ char c = *p; if((*(p+1) == '/' || *(p+1) == '.') && warned) { - warnx(_("separators should not be repeated: %s"), p); + xwarnx(_("separators should not be repeated: %s"), p); warned = 0; } if(c==old) *p=new; @@ -156,7 +156,7 @@ static int ReadSetting(const char *restrict const name) { struct stat ts; if (!name || !*name) { - warnx(_("\"%s\" is an unknown key"), name); + xwarnx(_("\"%s\" is an unknown key"), name); return -1; } @@ -176,7 +176,7 @@ static int ReadSetting(const char *restrict const name) { if (stat(tmpname, &ts) < 0) { if (!IgnoreError) { - warn(_("cannot stat %s"), tmpname); + xwarn(_("cannot stat %s"), tmpname); rc = -1; } goto out; @@ -204,16 +204,16 @@ static int ReadSetting(const char *restrict const name) { switch(errno) { case ENOENT: if (!IgnoreError) { - warnx(_("\"%s\" is an unknown key"), outname); + xwarnx(_("\"%s\" is an unknown key"), outname); rc = -1; } break; case EACCES: - warnx(_("permission denied on key '%s'"), outname); + xwarnx(_("permission denied on key '%s'"), outname); rc = -1; break; default: - warn(_("reading key \"%s\""), outname); + xwarn(_("reading key \"%s\""), outname); rc = -1; break; } @@ -241,7 +241,7 @@ static int ReadSetting(const char *restrict const name) { } else { switch(errno) { case EACCES: - warnx(_("permission denied on key '%s'"), outname); + xwarnx(_("permission denied on key '%s'"), outname); rc = -1; break; case EISDIR:{ @@ -254,7 +254,7 @@ static int ReadSetting(const char *restrict const name) { goto out; } default: - warnx(_("reading key \"%s\""), outname); + xwarnx(_("reading key \"%s\""), outname); rc = -1; case 0: break; @@ -284,7 +284,7 @@ static int DisplayAll(const char *restrict const path) { dp = opendir(path); if (!dp) { - warnx(_("unable to open directory \"%s\""), path); + xwarnx(_("unable to open directory \"%s\""), path); rc = -1; } else { readdir(dp); // skip . @@ -295,7 +295,7 @@ static int DisplayAll(const char *restrict const path) { sprintf(tmpdir, "%s%s", path, de->d_name); rc2 = stat(tmpdir, &ts); if (rc2 != 0) { - warn(_("cannot stat %s"), tmpdir); + xwarn(_("cannot stat %s"), tmpdir); } else { if (S_ISDIR(ts.st_mode)) { strcat(tmpdir, "/"); @@ -333,14 +333,14 @@ static int WriteSetting(const char *setting) { equals = strchr(setting, '='); if (!equals) { - warnx(_("\"%s\" must be of the form name=value"), setting); + xwarnx(_("\"%s\" must be of the form name=value"), setting); return -1; } value = equals + 1; /* point to the value in name=value */ if (!*name || !*value || name == equals) { - warnx(_("Malformed setting \"%s\""), setting); + xwarnx(_("Malformed setting \"%s\""), setting); return -2; } @@ -359,19 +359,19 @@ static int WriteSetting(const char *setting) { if (stat(tmpname, &ts) < 0) { if (!IgnoreError) { - warn(_("cannot stat %s"), tmpname); + xwarn(_("cannot stat %s"), tmpname); rc = -1; } goto out; } if ((ts.st_mode & S_IWUSR) == 0) { - warn(_("setting key \"%s\""), outname); + xwarn(_("setting key \"%s\""), outname); goto out; } if (S_ISDIR(ts.st_mode)) { - warn(_("setting key \"%s\""), outname); + xwarn(_("setting key \"%s\""), outname); goto out; } @@ -381,28 +381,28 @@ static int WriteSetting(const char *setting) { switch(errno) { case ENOENT: if (!IgnoreError) { - warnx(_("\"%s\" is an unknown key"), outname); + xwarnx(_("\"%s\" is an unknown key"), outname); rc = -1; } break; case EACCES: - warnx(_("permission denied on key '%s'"), outname); + xwarnx(_("permission denied on key '%s'"), outname); rc = -1; break; default: - warn(_("setting key \"%s\""), outname); + xwarn(_("setting key \"%s\""), outname); rc = -1; break; } } else { rc = fprintf(fp, "%s\n", value); if (rc < 0) { - warn(_("setting key \"%s\""), outname); + xwarn(_("setting key \"%s\""), outname); fclose(fp); } else { rc=fclose(fp); if (rc != 0) - warn(_("setting key \"%s\""), outname); + xwarn(_("setting key \"%s\""), outname); } if (rc==0 && !Quiet) { if (NameOnly) { @@ -461,7 +461,7 @@ static int Preload(const char *restrict const filename) { ; if (!fp) { - warn(_("cannot open \"%s\""), filename); + xwarn(_("cannot open \"%s\""), filename); return -1; } @@ -477,7 +477,7 @@ static int Preload(const char *restrict const filename) { name = strtok(t, "="); if (!name || !*name) { - warnx(_("%s(%d): invalid syntax, continuing..."), filename, n); + xwarnx(_("%s(%d): invalid syntax, continuing..."), filename, n); continue; } @@ -489,7 +489,7 @@ static int Preload(const char *restrict const filename) { value = strtok(NULL, "\n\r"); if (!value || !*value) { - warnx(_("%s(%d): invalid syntax, continuing..."), filename, n); + xwarnx(_("%s(%d): invalid syntax, continuing..."), filename, n); continue; } @@ -610,9 +610,10 @@ int main(int argc, char *argv[]) {NULL, 0, NULL, 0} }; - setlocale (LC_ALL, ""); - bindtextdomain(PACKAGE, LOCALEDIR); - textdomain(PACKAGE); + program_invocation_name = program_invocation_short_name; + setlocale (LC_ALL, ""); + bindtextdomain(PACKAGE, LOCALEDIR); + textdomain(PACKAGE); PrintName = true; PrintNewline = true; @@ -691,11 +692,11 @@ int main(int argc, char *argv[]) argv += optind; if (argc < 1) - errx(EXIT_FAILURE, _("no variables specified\n" + xerrx(EXIT_FAILURE, _("no variables specified\n" "Try `%s --help' for more information."), program_invocation_short_name); if (NameOnly && Quiet) - errx(EXIT_FAILURE, _("options -N and -q cannot coexist\n" + xerrx(EXIT_FAILURE, _("options -N and -q cannot coexist\n" "Try `%s --help' for more information."), program_invocation_short_name); diff --git a/tload.c b/tload.c index 784f69d0..56a0b1c8 100644 --- a/tload.c +++ b/tload.c @@ -97,7 +97,8 @@ int main(int argc, char **argv) {"version", no_argument, NULL, 'V'}, {NULL, 0, NULL, 0} }; - + + program_invocation_name = program_invocation_short_name; setlocale (LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); @@ -108,14 +109,14 @@ int main(int argc, char **argv) case 's': max_scale = strtod_or_err(optarg, _("failed to parse argument")); if (max_scale < 0) - errx(EXIT_FAILURE, _("scale cannot be negative")); + xerrx(EXIT_FAILURE, _("scale cannot be negative")); break; case 'd': tmpdly = strtol_or_err(optarg, _("failed to parse argument")); if (tmpdly < 1) - errx(EXIT_FAILURE, _("delay must be positive integer")); + xerrx(EXIT_FAILURE, _("delay must be positive integer")); else if (UINT_MAX < tmpdly) - errx(EXIT_FAILURE, _("too large delay value")); + xerrx(EXIT_FAILURE, _("too large delay value")); dly = tmpdly; break; case 'V': @@ -130,7 +131,7 @@ int main(int argc, char **argv) if (argc > optind) if ((fd = open(argv[optind], 1)) == -1) - err(EXIT_FAILURE, _("can not open tty")); + xerr(EXIT_FAILURE, _("can not open tty")); setsize(0); diff --git a/uptime.c b/uptime.c index 6ad5d1fd..8957ce14 100644 --- a/uptime.c +++ b/uptime.c @@ -30,6 +30,7 @@ int main(int argc, char **argv) {NULL, 0, NULL, 0} }; + program_invocation_name = program_invocation_short_name; setlocale (LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); diff --git a/vmstat.c b/vmstat.c index 34379c80..8fbe5455 100644 --- a/vmstat.c +++ b/vmstat.c @@ -360,7 +360,7 @@ static int diskpartition_format(const char *partition_name) fDiskstat = fopen("/proc/diskstats", "rb"); if (!fDiskstat) - errx(EXIT_FAILURE, + xerrx(EXIT_FAILURE, _("Your kernel doesn't support diskstat. (2.5.70 or above required)")); fclose(fDiskstat); @@ -501,7 +501,7 @@ static void diskformat(void) free(partitions); } } else - errx(EXIT_FAILURE, + xerrx(EXIT_FAILURE, _("Your kernel doesn't support diskstat (2.5.70 or above required)")); } @@ -532,7 +532,7 @@ static void slabformat(void) fSlab = fopen("/proc/slabinfo", "rb"); if (!fSlab) { - warnx(_("Your kernel doesn't support slabinfo or your permissions are insufficient.")); + xwarnx(_("Your kernel doesn't support slabinfo or your permissions are insufficient.")); return; } @@ -706,6 +706,7 @@ int main(int argc, char *argv[]) {NULL, 0, NULL, 0} }; + program_invocation_name = program_invocation_short_name; setlocale (LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); @@ -765,7 +766,7 @@ int main(int argc, char *argv[]) dataUnit = UNIT_M; break; default: - errx(EXIT_FAILURE, + xerrx(EXIT_FAILURE, /* Translation Hint: do not change argument characters */ _("-S requires k, K, m or M (default is kb)")); } @@ -782,9 +783,9 @@ int main(int argc, char *argv[]) if (optind < argc) { tmp = strtol_or_err(argv[optind++], _("failed to parse argument")); if (tmp < 1) - errx(EXIT_FAILURE, _("delay must be positive integer")); + xerrx(EXIT_FAILURE, _("delay must be positive integer")); else if (UINT_MAX < tmp) - errx(EXIT_FAILURE, _("too large delay value")); + xerrx(EXIT_FAILURE, _("too large delay value")); sleep_time = tmp; infinite_updates = 1; } diff --git a/w.c b/w.c index 5b573df2..3964e4f2 100644 --- a/w.c +++ b/w.c @@ -343,6 +343,7 @@ int main(int argc, char **argv) {NULL, 0, NULL, 0} }; + program_invocation_name = program_invocation_short_name; setlocale (LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); @@ -388,7 +389,7 @@ int main(int argc, char **argv) if ((env_var = getenv("PROCPS_USERLEN")) != NULL) { userlen = atoi(env_var); if (userlen < 8 || userlen > USERSZ) { - warnx + xwarnx (_("User length environment PROCPS_USERLEN must be between 8 and %d, ignoring.\n"), USERSZ); userlen = 8; @@ -398,7 +399,7 @@ int main(int argc, char **argv) if ((env_var = getenv("PROCPS_FROMLEN")) != NULL) { fromlen = atoi(env_var); if (fromlen < 8 || fromlen > HOSTSZ) { - warnx + xwarnx (_("From length environment PROCPS_FROMLEN must be between 8 and %d, ignoring.\n"), HOSTSZ); fromlen = 16; @@ -411,11 +412,11 @@ int main(int argc, char **argv) else maxcmd = 80; if (maxcmd < 71) - errx(EXIT_FAILURE, _("%d column window is too narrow"), maxcmd); + xerrx(EXIT_FAILURE, _("%d column window is too narrow"), maxcmd); maxcmd -= 21 + userlen + (from ? fromlen : 0) + (longform ? 20 : 0); if (maxcmd < 3) - warnx(_("warning: screen width %d suboptimal"), win.ws_col); + xwarnx(_("warning: screen width %d suboptimal"), win.ws_col); procs = readproctab(PROC_FILLCOM | PROC_FILLUSR | PROC_FILLSTAT); diff --git a/watch.c b/watch.c index af5813e3..aa015e06 100644 --- a/watch.c +++ b/watch.c @@ -308,6 +308,7 @@ int main(int argc, char *argv[]) {0, 0, 0, 0} }; + program_invocation_name = program_invocation_short_name; setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE);