tuklib_integer.h: Fix a recent copypaste error in Clang detection.
[xz/debian.git] / src / common / tuklib_progname.c
blobe2ef4e555f35dc95bbdbaa4ea7fe2efd1887a4ce
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.
11 ///////////////////////////////////////////////////////////////////////////////
13 #include "tuklib_progname.h"
14 #include <string.h>
17 #ifndef HAVE_PROGRAM_INVOCATION_NAME
18 char *progname = NULL;
19 #endif
22 extern void
23 tuklib_progname_init(char **argv)
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.
30 // Strip the leading path.
31 char *p = argv[0] + strlen(argv[0]);
32 while (argv[0] < p && p[-1] != '/' && p[-1] != '\\')
33 --p;
35 argv[0] = p;
37 // Strip the .exe suffix.
38 p = strrchr(p, '.');
39 if (p != NULL)
40 *p = '\0';
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
48 progname = argv[0];
49 return;