summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpio/cpio.c21
-rw-r--r--libarchive_fe/err.c22
-rw-r--r--libarchive_fe/err.h5
-rw-r--r--tar/bsdtar.c21
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);