GRASS GIS 7 Programmer's Manual  7.0.3(2016)-r00000
gisinit.c
Go to the documentation of this file.
1 
14 #include <stdio.h>
15 #include <stdlib.h>
16 #include <string.h>
17 #include <ctype.h>
18 #include <unistd.h>
19 #include <fcntl.h>
20 #include <sys/stat.h>
21 #include <locale.h>
22 
23 #include <grass/gis.h>
24 #include <grass/glocale.h>
25 
26 #include "G.h"
27 #include "local_proto.h"
28 
29 struct G__ G__;
30 
31 static int initialized = 0;
32 static int gisinit(void);
33 
43 void G__gisinit(const char *version, const char *pgm)
44 {
45  const char *mapset;
46 
47  if (initialized)
48  return;
49 
50  G_set_program_name(pgm);
51 
52  if (strcmp(version, GIS_H_VERSION) != 0)
53  G_fatal_error(_("Module built against version %s but "
54  "trying to use version %s. "
55  "You need to rebuild GRASS GIS or untangle multiple installations."),
56  version, GIS_H_VERSION);
57 
58  /* Make sure location and mapset are set */
60  mapset = G_mapset();
61  switch (G_mapset_permissions(mapset)) {
62  case 1:
63  break;
64  case 0:
65  G_fatal_error(_("MAPSET %s - permission denied"), mapset);
66  break;
67  default:
68  G_fatal_error(_("MAPSET %s not found at %s"), mapset, G_location_path());
69  break;
70  }
71 
72  gisinit();
73 }
74 
75 
81 void G__no_gisinit(const char *version)
82 {
83  if (initialized)
84  return;
85 
86  if (strcmp(version, GIS_H_VERSION) != 0)
87  G_fatal_error(_("Module built against version %s but "
88  "trying to use version %s. "
89  "You need to rebuild GRASS GIS or untangle multiple installations."),
90  version, GIS_H_VERSION);
91  gisinit();
92 }
93 
94 
98 void G__check_gisinit(void)
99 {
100  if (initialized)
101  return;
102  G_warning(_("System not initialized. Programmer forgot to call G_gisinit()."));
103  G_sleep(3);
104  exit(EXIT_FAILURE);
105 }
106 
107 
108 static int gisinit(void)
109 {
110  char *zlib;
111 
112 #ifdef __MINGW32__
113  _fmode = O_BINARY;
114 #endif
115  /* Mark window as not set */
116  G__.window_set = 0;
117 
118  /* byte order */
120 
121  zlib = getenv("GRASS_ZLIB_LEVEL");
122  G__.compression_level = (zlib && *zlib && isdigit(*zlib)) ? atoi(zlib) : -2;
123 
124  initialized = 1;
125 
126  setlocale(LC_NUMERIC, "C");
127 
128  return 0;
129 }
130 
134 void G_init_all(void)
135 {
137  G_init_env();
138  G_init_logging();
139  G__init_window();
140  G_init_locale();
141  G_init_debug();
142  G_verbose();
143  G_init_tempfile();
145  G__home();
146  G__machine_name();
147  G_whoami();
150 }
const char * G__home(void)
Get user&#39;s home directory (internal use only)
Definition: home.c:53
void G__no_gisinit(const char *version)
Initialize GIS Library.
Definition: gisinit.c:81
void G_init_debug(void)
Initiate debugging.
Definition: debug.c:27
const char * G_mapset(void)
Get current mapset name.
Definition: mapset.c:33
int G_mapset_permissions(const char *mapset)
Check for user mapset permission.
Definition: mapset_msc.c:116
void G_read_datum_table(void)
Definition: gis/datum.c:146
void G__gisinit(const char *version, const char *pgm)
Initialize GIS Library and ensures a valid mapset is available.
Definition: gisinit.c:43
void G_set_program_name(const char *s)
Set program name.
Definition: progrm_nme.c:42
int compression_level
Definition: G.h:9
int little_endian
Definition: G.h:8
void G_fatal_error(const char *msg,...)
Print a fatal error message to stderr.
Definition: gis/error.c:159
Definition: G.h:4
const char * G__machine_name(void)
Definition: mach_name.c:17
char * G_location_path(void)
Get current location UNIX-like path.
Definition: location.c:54
void G__init_window(void)
Initialize window (region).
Definition: window_map.c:70
void G__get_list_of_mapsets(void)
Fill list of mapsets from search path (internal use only)
Definition: mapset_nme.c:57
void G_sleep(unsigned int seconds)
Definition: sleep.c:11
int window_set
Definition: G.h:7
void G_init_all(void)
Initialize environment.
Definition: gisinit.c:134
void G_init_tempfile(void)
Initialize environment for creating tempfiles.
Definition: tempfile.c:27
int G_is_little_endian(void)
Tests for little ENDIAN.
Definition: endian.c:24
void G_init_locale(void)
Definition: locale.c:24
int G_verbose(void)
Get current verbosity level.
Definition: verbose.c:55
void G_init_logging(void)
Definition: gis/error.c:350
const char * G_whoami(void)
Gets user&#39;s name.
Definition: whoami.c:35
void G_init_env(void)
Initialize variables.
Definition: env.c:83
void G__check_gisinit(void)
Checks to see if GIS engine is initialized.
Definition: gisinit.c:98
int _fmode
Definition: fmode.c:4
void G_warning(const char *msg,...)
Print a warning message to stderr.
Definition: gis/error.c:203
int G_read_ellipsoid_table(int fatal)
Read ellipsoid table.
Definition: get_ellipse.c:247