GRASS 8 Programmer's Manual  8.5.0dev(2025)-c070206eb1
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 const char *G__machine_name(void)
17 {
18  static int initialized;
19  static char name[128];
20 
21  if (G_is_initialized(&initialized))
22  return name;
23 
24 #if defined(HAVE_GETHOSTNAME)
25  gethostname(name, sizeof(name));
26  name[sizeof(name) - 1] = 0; /* make sure NUL terminated */
27 #elif defined(HAVE_SYS_UTSNAME_H)
28  {
29  struct utsname attname;
30 
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 }
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:16
const char * name
Definition: named_colr.c:6
#define strcpy
Definition: parson.c:62