OLD | NEW |
(Empty) | |
| 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 } |
OLD | NEW |