GRASS GIS 8 Programmer's Manual 8.3.2(2024)-exported
Loading...
Searching...
No Matches
progrm_nme.c
Go to the documentation of this file.
1/*!
2 * \file lib/gis/progrm_nme.c
3 *
4 * \brief GIS Library - Program name
5 *
6 * (C) 2001-2014 by the GRASS Development Team
7 *
8 * This program is free software under the GNU General Public License
9 * (>=v2). Read the file COPYING that comes with GRASS for details.
10 *
11 * \author Original author CERL
12 */
13
14#include <string.h>
15#include <grass/gis.h>
16
17static const char *name = "?";
18static const char *original_name = "?";
19
20/*!
21 * \brief Return module name
22 *
23 * Routine returns the name of the module as set by the call to
24 * G_gisinit().
25 *
26 * \return pointer to string with program name
27 */
28const char *G_program_name(void)
29{
30 return name;
31}
32
33/*!
34 * \brief Return original path of the executed program
35 *
36 * This function returns the name of the program as set by the call to
37 * G_gisinit().
38 *
39 * Unlike G_program_name() which returns name of the module
40 * this function return original path which was used to execute
41 * the program. For standard GRASS modules, it will be the same as
42 * the result from G_program_name() function.
43 *
44 * \return pointer to string with program name or full path
45 */
46const char *G_original_program_name(void)
47{
48 return original_name;
49}
50
51/*!
52 \brief Set program name
53
54 Program name set to name (name will be returned by
55 G_program_name*())
56
57 Extension like .exe or .py is stripped from program name.
58
59 \param s program name
60 */
61void G_set_program_name(const char *s)
62{
63 int i;
64 char *temp;
65
66 original_name = G_store(s);
67
68 i = strlen(s);
69 while (--i >= 0) {
70 if (G_is_dirsep(s[i])) {
71 s += i + 1;
72 break;
73 }
74 }
75
76 /* strip extension from program name */
77 temp = G_store(s);
78 G_basename(temp, "exe");
79 G_basename(temp, "py");
80 name = G_store(temp);
81
82 G_debug(1, "G_set_program_name(): %s", name);
83
84 G_free(temp);
85}
void G_free(void *buf)
Free allocated memory.
Definition alloc.c:150
char * G_basename(char *filename, const char *desired_ext)
Truncates filename to the base part (before the last '.') if it matches the extension,...
Definition basename.c:36
int G_debug(int level, const char *msg,...)
Print debugging message.
Definition debug.c:66
const char * name
Definition named_colr.c:6
int G_is_dirsep(char c)
Checks if a specified character is a valid directory separator character on the host system.
Definition paths.c:45
const char * G_program_name(void)
Return module name.
Definition progrm_nme.c:28
void G_set_program_name(const char *s)
Set program name.
Definition progrm_nme.c:61
const char * G_original_program_name(void)
Return original path of the executed program.
Definition progrm_nme.c:46
char * G_store(const char *s)
Copy string to allocated memory.
Definition strings.c:87