16 #ifdef USE_GTK_MAIN_LOOP
25 #include "xmlconfig.h"
29 #include "navigation.h"
31 #define _(STRING) gettext(STRING)
33 struct map_data *map_data_default;
35 static void sigchld(int sig)
39 while (waitpid(-1, &status, WNOHANG) > 0);
44 static gchar *get_home_directory(void)
46 static gchar *homedir = NULL;
48 if (homedir) return homedir;
49 homedir = getenv("HOME");
54 // p = getpwuid(getuid());
55 // if (p) homedir = p->pw_dir;
59 g_warning("Could not find home directory. Using current directory as home directory.");
66 #ifndef USE_GTK_MAIN_LOOP
67 static GMainLoop *loop;
71 main_add_navit(struct navit *nav)
73 navit=g_list_prepend(navit, nav);
77 main_remove_navit(struct navit *nav)
79 navit=g_list_remove(navit, nav);
81 #ifdef USE_GTK_MAIN_LOOP
85 g_main_loop_quit(loop);
90 int main(int argc, char **argv)
93 char *config_file = NULL;
99 signal(SIGCHLD, sigchld);
102 setenv("LC_NUMERIC","C",1);
103 setlocale(LC_ALL,"");
104 setlocale(LC_NUMERIC,"C");
106 if (file_exists("navit.c") || file_exists("navit.o")) {
107 char buffer[PATH_MAX];
108 printf(_("Running from source directory\n"));
109 getcwd(buffer, PATH_MAX);
110 setenv("NAVIT_PREFIX", buffer, 0);
111 setenv("NAVIT_LIBDIR", buffer, 0);
112 setenv("NAVIT_SHAREDIR", buffer, 0);
113 setenv("NAVIT_LIBPREFIX", "*/.libs/", 0);
114 s=g_strdup_printf("%s/../locale", buffer);
115 setenv("NAVIT_LOCALEDIR", s, 0);
118 if (!getenv("NAVIT_PREFIX")) {
120 if (l > 10 && !strcmp(argv[0]+l-10,"/bin/navit")) {
123 if (strcmp(s, PREFIX))
124 printf(_("setting '%s' to '%s'\n"), "NAVIT_PREFIX", s);
125 setenv("NAVIT_PREFIX", s, 0);
128 setenv("NAVIT_PREFIX", PREFIX, 0);
131 s=g_strdup_printf("locale");
133 s=g_strdup_printf("%s/share/locale", getenv("NAVIT_PREFIX"));
135 setenv("NAVIT_LOCALEDIR", s, 0);
138 s=g_strdup_printf(".");
140 s=g_strdup_printf("%s/share/navit", getenv("NAVIT_PREFIX"));
142 setenv("NAVIT_SHAREDIR", s, 0);
144 s=g_strdup_printf("%s/lib/navit", getenv("NAVIT_PREFIX"));
145 setenv("NAVIT_LIBDIR", s, 0);
148 bindtextdomain(PACKAGE, getenv("NAVIT_LOCALEDIR"));
149 bind_textdomain_codeset (PACKAGE, "UTF-8");
154 extern void builtin_init(void);
158 /* handled in gui/gtk */
160 gtk_init(&argc, &argv);
163 s = getenv("NAVIT_WID");
165 setenv("SDL_WINDOWID", s, 0);
173 config_file=g_strjoin(NULL,get_home_directory(), "/.navit/navit.xml" , NULL);
174 if (!file_exists(config_file)) {
180 if (file_exists("navit.xml.local"))
181 config_file="navit.xml.local";
184 if (file_exists("navit.xml"))
185 config_file="navit.xml";
188 config_file=g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml.local" , NULL);
189 if (!file_exists(config_file)) {
195 config_file=g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml" , NULL);
196 if (!file_exists(config_file)) {
202 printf(_("No config file navit.xml, navit.xml.local found\n"));
205 if (!config_load(config_file, &error)) {
206 printf(_("Error parsing '%s': %s\n"), config_file, error->message);
209 printf(_("Using '%s'\n"), config_file);
212 printf(_("No instance has been created, exiting\n"));
216 gui_run_main_loop(main_loop_gui);
218 #ifdef USE_GTK_MAIN_LOOP
221 loop = g_main_loop_new (NULL, TRUE);
222 if (g_main_loop_is_running (loop))
224 g_main_loop_run (loop);