GRASS GIS 8 Programmer's Manual  8.5.0dev(2024)-d6dec75dd4
mach_name.c
Go to the documentation of this file.
1 #include <unistd.h>
2 #include <grass/gis.h>
3 #include <grass/config.h>
4 #ifdef HAVE_SYS_UTSNAME_H
5 #include <sys/utsname.h>
6 #endif
7 
8 /* this routine returns a name for the machine
9  * it returns the empty string, if this info
10  * not available (it never returns a NULL pointer)
11  *
12  * the name is stored in a static array and the pointer to this
13  * array is returned.
14  *
15  */
16 
17 const char *G__machine_name(void)
18 {
19  static int initialized;
20  static char name[128];
21 
22  if (G_is_initialized(&initialized))
23  return name;
24 
25 #if defined(HAVE_GETHOSTNAME)
26  gethostname(name, sizeof(name));
27  name[sizeof(name) - 1] = 0; /* make sure NUL terminated */
28 #elif defined(HAVE_SYS_UTSNAME_H)
29  {
30  struct utsname attname;
31 
32  uname(&attname);
33  strcpy(name, attname.nodename);
34  }
35 #else
36  strcpy(name, "unknown");
37 #endif
38 
39  G_initialize_done(&initialized);
40  return name;
41 }
int G_is_initialized(int *)
Definition: counter.c:60
void G_initialize_done(int *)
Definition: counter.c:77
const char * G__machine_name(void)
Definition: mach_name.c:17
const char * name
Definition: named_colr.c:6
#define strcpy
Definition: parson.c:62