2 * Navit, a modular navigation system.
3 * Copyright (C) 2005-2008 Navit Team
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * version 2 as published by the Free Software Foundation.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the
16 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
30 #include "navigation.h"
34 #include "event_glib.h"
35 #include "xmlconfig.h"
38 #include "navit_nls.h"
44 printf(_("navit usage:\nnavit [options] [configfile]\n\t-c <file>: use <file> as config file\n\t-d <n>: set the debug output level to <n>. (TODO)\n\t-h: print this usage info and exit.\n\t-v: Print the version and exit.\n"));
49 get_home_directory(void)
51 static gchar *homedir = NULL;
53 if (homedir) return homedir;
54 homedir = getenv("HOME");
57 dbg(0,"Could not find home directory. Using current directory as home directory.");
59 homedir = "/Storage Card/";
64 homedir=g_strdup(homedir);
69 int main(int argc, char **argv)
72 char *config_file = NULL;
75 GList *list = NULL, *li;
85 debug_set_logfile("/Storage Card/navit.log");
89 extern void builtin_init(void);
97 opterr=0; //don't bomb out on errors.
99 /* DEVELOPPERS : don't forget to update the manpage if you modify theses options */
100 while((opt = getopt(argc, argv, ":hvc:d:")) != -1) {
107 printf("%s %s\n", "navit", PACKAGE_VERSION" "SVN_VERSION);
111 printf("config file n is set to `%s'\n", optarg);
112 config_file = optarg;
115 printf("TODO Verbose option is set to `%s'\n", optarg);
118 fprintf(stderr, "navit: Error - Option `%c' needs a value\n", optopt);
123 fprintf(stderr, "navit: Error - No such option: `%c'\n", optopt);
129 // use 1st cmd line option that is left for the config file
130 if (optind < argc) config_file = argv[optind];
132 // if config file is explicitely given only look for it, otherwise try std paths
133 if (config_file) list = g_list_append(list,g_strdup(config_file));
135 list = g_list_append(list,g_strjoin(NULL,get_home_directory(), "/.navit/navit.xml" , NULL));
136 list = g_list_append(list,g_strdup("navit.xml.local"));
137 list = g_list_append(list,g_strdup("navit.xml"));
138 list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml.local" , NULL));
139 list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml" , NULL));
141 list = g_list_append(list,g_strdup("/etc/navit/navit.xml"));
147 // We have not found an existing config file from all possibilities
148 printf(_("No config file navit.xml, navit.xml.local found\n"));
151 // Try the next config file possibility from the list
152 config_file = li->data;
153 if (!file_exists(config_file)) g_free(config_file);
154 li = g_list_next(li);
155 } while (!file_exists(config_file));
159 event_request_system("glib","start");
161 #ifdef HAVE_API_WIN32_CE
162 config_file="\\Storage Card\\navit.xml";
164 if (!config_load(config_file, &error)) {
165 printf(_("Error parsing '%s': %s\n"), config_file, error ? error->message : "");
168 printf(_("Using '%s'\n"), config_file);
170 if (! main_get_navit(NULL)) {
171 printf(_("No instance has been created, exiting\n"));
174 event_main_loop_run();