summaryrefslogtreecommitdiff
path: root/libarchive_fe
diff options
context:
space:
mode:
authorJean-Yves Migeon <jeanyves.migeon@free.fr>2013-09-06 17:17:57 +0200
committerJean-Yves Migeon <jeanyves.migeon@free.fr>2013-09-06 17:17:57 +0200
commitdc207e4669c73203f2fe834294157616a82d6287 (patch)
tree60330e1588e6f7994d6a12555dad94215cbad4fd /libarchive_fe
parent7ba6dff66d176a7ee299258eef1489d0b9ffd225 (diff)
downloadlibarchive-dc207e4669c73203f2fe834294157616a82d6287.tar.gz
Hide *lafe_progname and provide getter/setter instead.
This factorizes some code between binaries like bsdtar, bsdcpio, and the soon-to-be mtree.
Diffstat (limited to 'libarchive_fe')
-rw-r--r--libarchive_fe/err.c22
-rw-r--r--libarchive_fe/err.h5
2 files changed, 25 insertions, 2 deletions
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