Index: xz/src/common/tuklib_progname.c |
=================================================================== |
--- xz/src/common/tuklib_progname.c (revision 0) |
+++ xz/src/common/tuklib_progname.c (revision 0) |
@@ -0,0 +1,50 @@ |
+/////////////////////////////////////////////////////////////////////////////// |
+// |
+/// \file tuklib_progname.c |
+/// \brief Program name to be displayed in messages |
+// |
+// Author: Lasse Collin |
+// |
+// This file has been put into the public domain. |
+// You can do whatever you want with this file. |
+// |
+/////////////////////////////////////////////////////////////////////////////// |
+ |
+#include "tuklib_progname.h" |
+#include <string.h> |
+ |
+ |
+#if !HAVE_DECL_PROGRAM_INVOCATION_NAME |
+char *progname = NULL; |
+#endif |
+ |
+ |
+extern void |
+tuklib_progname_init(char **argv) |
+{ |
+#ifdef TUKLIB_DOSLIKE |
+ // On these systems, argv[0] always has the full path and .exe |
+ // suffix even if the user just types the plain program name. |
+ // We modify argv[0] to make it nicer to read. |
+ |
+ // Strip the leading path. |
+ char *p = argv[0] + strlen(argv[0]); |
+ while (argv[0] < p && p[-1] != '/' && p[-1] != '\\') |
+ --p; |
+ |
+ argv[0] = p; |
+ |
+ // Strip the .exe suffix. |
+ p = strrchr(p, '.'); |
+ if (p != NULL) |
+ *p = '\0'; |
+ |
+ // Make it lowercase. |
+ for (p = argv[0]; *p != '\0'; ++p) |
+ if (*p >= 'A' && *p <= 'Z') |
+ *p = *p - 'A' + 'a'; |
+#endif |
+ |
+ progname = argv[0]; |
+ return; |
+} |
Property changes on: xz/src/common/tuklib_progname.c |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |