]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
Hide *lafe_progname and provide getter/setter instead. 47/head
authorJean-Yves Migeon <jeanyves.migeon@free.fr>
Fri, 6 Sep 2013 15:17:57 +0000 (17:17 +0200)
committerJean-Yves Migeon <jeanyves.migeon@free.fr>
Fri, 6 Sep 2013 15:17:57 +0000 (17:17 +0200)
This factorizes some code between binaries like bsdtar, bsdcpio, and
the soon-to-be mtree.

cpio/cpio.c
libarchive_fe/err.c
libarchive_fe/err.h
tar/bsdtar.c

index 3889290afc53b92baaedcc59a8749313d4950442..933bedf3ce6ab900d197c3ab3de82d747b788c96 100644 (file)
@@ -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);
 
index a0173983a39cd437e3c3fff7bf8df7726b65ff18..408c2029fe88f149d5da223bd82c84fa3bd10211 100644 (file)
@@ -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)
 {
index ca1af35630e2562222e1172e0fe653f6d34eda49..c351cba8892f3775678cee691b11e0fe49eff1e1 100644 (file)
 #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
index 47267579f0c4d0747785cc610121b1fd7d7654b9..8b05b401523fa161a043e8105dcaa156c7e256a9 100644 (file)
@@ -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);