diff options
-rw-r--r-- | cpio/cpio.c | 21 | ||||
-rw-r--r-- | libarchive_fe/err.c | 22 | ||||
-rw-r--r-- | libarchive_fe/err.h | 5 | ||||
-rw-r--r-- | tar/bsdtar.c | 21 |
4 files changed, 36 insertions, 33 deletions
diff --git a/cpio/cpio.c b/cpio/cpio.c index 3889290a..933bedf3 100644 --- a/cpio/cpio.c +++ b/cpio/cpio.c @@ -149,20 +149,11 @@ main(int argc, char *argv[]) } #endif - /* Need lafe_progname before calling lafe_warnc. */ + /* Set lafe_progname before calling lafe_warnc. */ if (*argv == NULL) - lafe_progname = "bsdcpio"; - else { -#if defined(_WIN32) && !defined(__CYGWIN__) - lafe_progname = strrchr(*argv, '\\'); - if (strrchr(*argv, '/') > lafe_progname) -#endif - lafe_progname = strrchr(*argv, '/'); - if (lafe_progname != NULL) - lafe_progname++; - else - lafe_progname = *argv; - } + *argv = "bsdcpio"; + lafe_setprogname(*argv); + #if HAVE_SETLOCALE if (setlocale(LC_ALL, "") == NULL) lafe_warnc(0, "Failed to set default locale"); @@ -437,7 +428,7 @@ usage(void) { const char *p; - p = lafe_progname; + p = lafe_getprogname(); fprintf(stderr, "Brief Usage:\n"); fprintf(stderr, " List: %s -it < archive\n", p); @@ -475,7 +466,7 @@ long_help(void) const char *prog; const char *p; - prog = lafe_progname; + prog = lafe_getprogname(); fflush(stderr); diff --git a/libarchive_fe/err.c b/libarchive_fe/err.c index a0173983..408c2029 100644 --- a/libarchive_fe/err.c +++ b/libarchive_fe/err.c @@ -44,6 +44,28 @@ static void lafe_vwarnc(int, const char *, va_list) __LA_PRINTFLIKE(2, 0); const char *lafe_progname; +const char * +lafe_getprogname(void) +{ + + return lafe_progname; +} + +void +lafe_setprogname(const char *name) +{ + +#if defined(_WIN32) && !defined(__CYGWIN__) + lafe_progname = strrchr(name, '\\'); + if (strrchr(name, '/') > lafe_progname) +#endif + lafe_progname = strrchr(name, '/'); + if (lafe_progname != NULL) + lafe_progname++; + else + lafe_progname = name; +} + static void lafe_vwarnc(int code, const char *fmt, va_list ap) { diff --git a/libarchive_fe/err.h b/libarchive_fe/err.h index ca1af356..c351cba8 100644 --- a/libarchive_fe/err.h +++ b/libarchive_fe/err.h @@ -40,10 +40,11 @@ #define __LA_PRINTFLIKE(f,a) #endif -extern const char *lafe_progname; - void lafe_warnc(int code, const char *fmt, ...) __LA_PRINTFLIKE(2, 3); void lafe_errc(int eval, int code, const char *fmt, ...) __LA_DEAD __LA_PRINTFLIKE(3, 4); +const char * lafe_getprogname(void); +void lafe_setprogname(const char *); + #endif diff --git a/tar/bsdtar.c b/tar/bsdtar.c index 47267579..8b05b401 100644 --- a/tar/bsdtar.c +++ b/tar/bsdtar.c @@ -178,21 +178,10 @@ main(int argc, char **argv) } #endif - - /* Need lafe_progname before calling lafe_warnc. */ + /* Set lafe_progname before calling lafe_warnc. */ if (*argv == NULL) - lafe_progname = "bsdtar"; - else { -#if defined(_WIN32) && !defined(__CYGWIN__) - lafe_progname = strrchr(*argv, '\\'); - if (strrchr(*argv, '/') > lafe_progname) -#endif - lafe_progname = strrchr(*argv, '/'); - if (lafe_progname != NULL) - lafe_progname++; - else - lafe_progname = *argv; - } + *argv = "bsdtar"; + lafe_setprogname(*argv); #if HAVE_SETLOCALE if (setlocale(LC_ALL, "") == NULL) @@ -844,7 +833,7 @@ usage(void) { const char *p; - p = lafe_progname; + p = lafe_getprogname(); fprintf(stderr, "Usage:\n"); fprintf(stderr, " List: %s -tf <archive-filename>\n", p); @@ -904,7 +893,7 @@ long_help(void) const char *prog; const char *p; - prog = lafe_progname; + prog = lafe_getprogname(); fflush(stderr); |