GRASS GIS 8 Programmer's Manual  8.2.2dev(2023)-3d2c704037
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  uname(&attname);
32  strcpy(name, attname.nodename);
33  }
34 #else
35  strcpy(name, "unknown");
36 #endif
37 
38  G_initialize_done(&initialized);
39  return name;
40 }
void G_initialize_done(int *)
Definition: counter.c:76
const char * G__machine_name(void)
Definition: mach_name.c:17
int G_is_initialized(int *)
Definition: counter.c:59
const char * name
Definition: named_colr.c:7