Import xz-5.0.0.
[dragonfly.git] / contrib / xz / src / common / tuklib_progname.c
1 ///////////////////////////////////////////////////////////////////////////////
2 //
3 /// \file       tuklib_progname.c
4 /// \brief      Program name to be displayed in messages
5 //
6 //  Author:     Lasse Collin
7 //
8 //  This file has been put into the public domain.
9 //  You can do whatever you want with this file.
10 //
11 ///////////////////////////////////////////////////////////////////////////////
12
13 #include "tuklib_progname.h"
14 #include <string.h>
15
16
17 #if !HAVE_DECL_PROGRAM_INVOCATION_NAME
18 char *progname = NULL;
19 #endif
20
21
22 extern void
23 tuklib_progname_init(char **argv)
24 {
25 #ifdef TUKLIB_DOSLIKE
26         // On these systems, argv[0] always has the full path and .exe
27         // suffix even if the user just types the plain program name.
28         // We modify argv[0] to make it nicer to read.
29
30         // Strip the leading path.
31         char *p = argv[0] + strlen(argv[0]);
32         while (argv[0] < p && p[-1] != '/' && p[-1] != '\\')
33                 --p;
34
35         argv[0] = p;
36
37         // Strip the .exe suffix.
38         p = strrchr(p, '.');
39         if (p != NULL)
40                 *p = '\0';
41
42         // Make it lowercase.
43         for (p = argv[0]; *p != '\0'; ++p)
44                 if (*p >= 'A' && *p <= 'Z')
45                         *p = *p - 'A' + 'a';
46 #endif
47
48         progname = argv[0];
49         return;
50 }