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
18char *progname = NULL;
19#endif
20
21
22extern void
23tuklib_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}
51