diff options
Diffstat (limited to 'navit/start_real.c')
-rw-r--r-- | navit/start_real.c | 314 |
1 files changed, 156 insertions, 158 deletions
diff --git a/navit/start_real.c b/navit/start_real.c index 16e0d5edb..ad990d874 100644 --- a/navit/start_real.c +++ b/navit/start_real.c @@ -27,7 +27,6 @@ #include <XGetopt.h> #endif #include "config_.h" -#include "version.h" #include "item.h" #include "coord.h" #include "main.h" @@ -46,25 +45,23 @@ #include "atom.h" #include "command.h" #include "geom.h" +#include "traffic.h" #ifdef HAVE_API_WIN32_CE #include <windows.h> #include <winbase.h> #endif -char *version=PACKAGE_VERSION"+git:"GIT_VERSION""NAVIT_VARIANT; int main_argc; char * const* main_argv; -static void -print_usage(void) -{ - printf("%s",_("navit usage:\n" - "navit [options] [configfile]\n" - "\t-c <file>: use <file> as config file, instead of using the default file.\n" - "\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, 2=info, 3=debug).\n" - "\tSettings from config file will still take effect where they set a higher level.\n" - "\t-h: print this usage info and exit.\n" - "\t-v: print the version and exit.\n")); +static void print_usage(void) { + printf("%s",_("navit usage:\n" + "navit [options] [configfile]\n" + "\t-c <file>: use <file> as config file, instead of using the default file.\n" + "\t-d <n>: set the global debug output level to <n> (0=error, 1=warning, 2=info, 3=debug).\n" + "\tSettings from config file will still take effect where they set a higher level.\n" + "\t-h: print this usage info and exit.\n" + "\t-v: print the version and exit.\n")); } @@ -72,173 +69,174 @@ print_usage(void) extern void builtin_init(void); #endif /* USE_PLUGINS*/ -int main_real(int argc, char * const* argv) -{ - xmlerror *error = NULL; - char *config_file = NULL, *command=NULL, *startup_file=NULL; - int opt; - char *cp; - struct attr navit, conf; +int main_real(int argc, char * const* argv) { + xmlerror *error = NULL; + char *config_file = NULL, *command=NULL, *startup_file=NULL; + int opt; + char *cp; + struct attr navit, conf; - GList *list = NULL, *li; - main_argc=argc; - main_argv=argv; + GList *list = NULL, *li; + main_argc=argc; + main_argv=argv; #ifdef HAVE_GLIB - event_glib_init(); + event_glib_init(); #else - _g_slice_thread_init_nomessage(); + _g_slice_thread_init_nomessage(); #endif - atom_init(); - main_init(argv[0]); - navit_nls_main_init(); - debug_init(argv[0]); + atom_init(); + main_init(argv[0]); + navit_nls_main_init(); + debug_init(argv[0]); - cp = getenv("NAVIT_LOGFILE"); - if (cp) { - debug_set_logfile(cp); - } + cp = getenv("NAVIT_LOGFILE"); + if (cp) { + debug_set_logfile(cp); + } #ifdef HAVE_API_WIN32_CE - else { - debug_set_logfile("/Storage Card/navit.log"); - } + else { + debug_set_logfile("/Storage Card/navit.log"); + } #endif - file_init(); + file_init(); #ifndef USE_PLUGINS - builtin_init(); + builtin_init(); #endif - route_init(); - navigation_init(); - tracking_init(); - search_init(); - linguistics_init(); - geom_init(); - config_file=NULL; + route_init(); + navigation_init(); + tracking_init(); + search_init(); + linguistics_init(); + geom_init(); + traffic_init(); + config_file=NULL; #ifdef HAVE_GETOPT_H - opterr=0; //don't bomb out on errors. + opterr=0; //don't bomb out on errors. #endif /* _MSC_VER */ - /* ingore iphone command line argument */ - if (argc == 2 && !strcmp(argv[1],"-RegisterForSystemEvents")) - argc=1; - if (argc > 1) { - /* Don't forget to update the manpage if you modify theses options */ - while((opt = getopt(argc, argv, ":hvc:d:e:s:")) != -1) { - switch(opt) { - case 'h': - print_usage(); - exit(0); - break; - case 'v': - printf("%s %s\n", "navit", version); - exit(0); - break; - case 'c': - printf("config file n is set to `%s'\n", optarg); - config_file = optarg; - break; - case 'd': - debug_set_global_level(atoi(optarg), 1); - break; - case 'e': - command=optarg; - break; - case 's': - startup_file=optarg; - break; + /* ingore iphone command line argument */ + if (argc == 2 && !strcmp(argv[1],"-RegisterForSystemEvents")) + argc=1; + if (argc > 1) { + /* Don't forget to update the manpage if you modify theses options */ + while((opt = getopt(argc, argv, ":hvc:d:e:s:")) != -1) { + switch(opt) { + case 'h': + print_usage(); + exit(0); + break; + case 'v': + printf("%s %s\n", "navit", NAVIT_VERSION); + exit(0); + break; + case 'c': + printf("config file n is set to `%s'\n", optarg); + config_file = optarg; + break; + case 'd': + debug_set_global_level(atoi(optarg), 1); + break; + case 'e': + command=optarg; + break; + case 's': + startup_file=optarg; + break; #ifdef HAVE_GETOPT_H - case ':': - fprintf(stderr, "navit: Error - Option `%c' needs a value\n", optopt); - print_usage(); - exit(2); - break; - case '?': - fprintf(stderr, "navit: Error - No such option: `%c'\n", optopt); - print_usage(); - exit(3); + case ':': + fprintf(stderr, "navit: Error - Option `%c' needs a value\n", optopt); + print_usage(); + exit(2); + break; + case '?': + fprintf(stderr, "navit: Error - No such option: `%c'\n", optopt); + print_usage(); + exit(3); #endif - } - } - // use 1st cmd line option that is left for the config file - if (optind < argc) config_file = argv[optind]; - } + } + } + // use 1st cmd line option that is left for the config file + if (optind < argc) config_file = argv[optind]; + } - // if config file is explicitely given only look for it, otherwise try std paths - if (config_file) { - list = g_list_append(list,g_strdup(config_file)); - } else { - list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_USER_DATADIR"), "/navit.xml" , NULL)); - list = g_list_append(list,g_strdup("navit.xml.local")); - list = g_list_append(list,g_strdup("navit.xml")); - list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml.local" , NULL)); - list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml" , NULL)); + // if config file is explicitely given only look for it, otherwise try std paths + if (config_file) { + list = g_list_append(list,g_strdup(config_file)); + } else { + list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_USER_DATADIR"), "/navit.xml", NULL)); + list = g_list_append(list,g_strdup("navit.xml.local")); + list = g_list_append(list,g_strdup("navit.xml")); + list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml.local", NULL)); + list = g_list_append(list,g_strjoin(NULL,getenv("NAVIT_SHAREDIR"), "/navit.xml", NULL)); #ifndef _WIN32 - list = g_list_append(list,g_strdup("/etc/navit/navit.xml")); + list = g_list_append(list,g_strdup("/etc/navit/navit.xml")); #endif - } - li = list; - for (;;) { - if (li == NULL) { - // We have not found an existing config file from all possibilities - dbg(lvl_error, "%s", _("No config file navit.xml, navit.xml.local found\n")); - return 4; - } + } + li = list; + for (;;) { + if (li == NULL) { + // We have not found an existing config file from all possibilities + dbg(lvl_error, "%s", _("No config file navit.xml, navit.xml.local found")); + return 4; + } // Try the next config file possibility from the list - config_file = li->data; - dbg(lvl_debug,"trying %s\n",config_file); - if (file_exists(config_file)) { - break; - } - g_free(config_file); - li = g_list_next(li); - } + config_file = li->data; + dbg(lvl_debug,"trying %s",config_file); + if (file_exists(config_file)) { + break; + } + g_free(config_file); + li = g_list_next(li); + } - dbg(lvl_debug,"Loading %s\n",config_file); - if (!config_load(config_file, &error)) { - dbg(lvl_error, _("Error parsing config file '%s': %s\n"), config_file, error ? error->message : ""); - } else { - dbg(lvl_info, _("Using config file '%s'\n"), config_file); - } - if (! config) { - dbg(lvl_error, _("Error: No configuration found in config file '%s'\n"), config_file); + dbg(lvl_debug,"Loading config from '%s'",config_file); + if (!config_load(config_file, &error)) { + dbg(lvl_error, _("Error parsing config file '%s': %s"), config_file, error ? error->message : ""); + } else { + dbg(lvl_info, _("Using config file '%s'"), config_file); + } + if (! config) { + dbg(lvl_error, _("Error: No configuration found in config file '%s'"), config_file); + } + while (li) { + g_free(li->data); + li = g_list_next(li); + } + g_list_free(list); + if (! (config && config_get_attr(config, attr_navit, &navit, NULL))) { + dbg(lvl_error, "%s", _("Internal initialization failed, exiting. Check previous error messages.")); + exit(5); + } + main_update_default_layout(navit.u.navit); + conf.type=attr_config; + conf.u.config=config; + if (startup_file) { + FILE *f = fopen(startup_file,"r"); + if (f) { + char buffer[4096]; + int fclose_ret; + while(fgets(buffer, sizeof(buffer), f)) { + command_evaluate(&conf, buffer); + } + fclose_ret = fclose(f); + if (fclose_ret != 0) { + dbg(lvl_error, "Could not close the specified startup file: %s", startup_file); + } + } else { + dbg(lvl_error, "Could not open the specified startup file: %s", startup_file); } - while (li) { - g_free(li->data); - li = g_list_next(li); - } - g_list_free(list); - if (! (config && config_get_attr(config, attr_navit, &navit, NULL))) { - dbg(lvl_error, "%s", _("Internal initialization failed, exiting. Check previous error messages.\n")); - exit(5); - } - conf.type=attr_config; - conf.u.config=config; - if (startup_file) { - FILE *f = fopen(startup_file,"r"); - if (f) { - char buffer[4096]; - int fclose_ret; - while(fgets(buffer, sizeof(buffer), f)) { - command_evaluate(&conf, buffer); - } - fclose_ret = fclose(f); - if (fclose_ret != 0) { - dbg(lvl_error, "Could not close the specified startup file: %s\n", startup_file); - } - } else { - dbg(lvl_error, "Could not open the specified startup file: %s", startup_file); - } - } - if (command) { - command_evaluate(&conf, command); - } - event_main_loop_run(); + } + if (command) { + command_evaluate(&conf, command); + } + event_main_loop_run(); - /* TODO: Android actually has no event loop, so we can't free all allocated resources here. Have to find better place to - * free all allocations on program exit. And don't forget to free all the stuff allocated in the code above. - */ + /* TODO: Android actually has no event loop, so we can't free all allocated resources here. Have to find better place to + * free all allocations on program exit. And don't forget to free all the stuff allocated in the code above. + */ #ifndef HAVE_API_ANDROID - linguistics_free(); - debug_finished(); + linguistics_free(); + debug_finished(); #endif - return 0; + return 0; } |