summaryrefslogtreecommitdiff
path: root/navit/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'navit/main.c')
-rw-r--r--navit/main.c281
1 files changed, 0 insertions, 281 deletions
diff --git a/navit/main.c b/navit/main.c
deleted file mode 100644
index bd0dcf58..00000000
--- a/navit/main.c
+++ /dev/null
@@ -1,281 +0,0 @@
-#include <windows.h>
-#include <locale.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <getopt.h>
-#include <string.h>
-#include <signal.h>
-#include <glib.h>
-#include <sys/types.h>
-
-#ifndef _WIN32
-#include <sys/wait.h>
-#include <signal.h>
-#endif
-
-#include <unistd.h>
-#include <libintl.h>
-#include "config.h"
-#include "file.h"
-#include "debug.h"
-#include "main.h"
-#include "navit.h"
-#include "gui.h"
-#include "xmlconfig.h"
-#include "item.h"
-#include "coord.h"
-#include "route.h"
-#include "navigation.h"
-#include "event.h"
-
-#define _(STRING) gettext(STRING)
-
-#if !defined(PREFIX)
-#define PREFIX "/usr/bin"
-#endif
-#if !defined(PATH_MAX)
-#define PATH_MAX 259
-#endif
-struct map_data *map_data_default;
-
-#ifndef _WIN32
-static void sigchld(int sig)
-{
- int status;
- while (waitpid(-1, &status, WNOHANG) > 0);
-}
-#endif
-
-
-gchar *get_home_directory(void)
-{
- static gchar *homedir = NULL;
-
- if (homedir) return homedir;
- homedir = getenv("HOME");
- if (!homedir)
- {
- g_warning("Could not find home directory. Using current directory as home directory.");
- homedir = ".";
- } else {
- homedir=g_strdup(homedir);
- }
- return homedir;
-}
-
-static GList *navit;
-
-struct iter {
- GList *list;
-};
-
-struct iter *
-main_iter_new(void)
-{
- struct iter *ret=g_new0(struct iter, 1);
- ret->list=navit;
- return ret;
-}
-
-void
-main_iter_destroy(struct iter *iter)
-{
- g_free(iter);
-}
-
-struct navit *
-main_get_navit(struct iter *iter)
-{
- GList *list;
- struct navit *ret=NULL;
- if (iter)
- list=iter->list;
- else
- list=navit;
- if (list) {
- ret=(struct navit *)(list->data);
- if (iter)
- iter->list=g_list_next(iter->list);
- }
- return ret;
-
-}
-void
-main_add_navit(struct navit *nav)
-{
- navit=g_list_prepend(navit, nav);
-}
-
-void
-main_remove_navit(struct navit *nav)
-{
- navit=g_list_remove(navit, nav);
- if (! navit)
- event_main_loop_quit();
-}
-
-void
-print_usage(void)
-{
- 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"));
-}
-
-int main(int argc, char **argv)
-{
- GError *error = NULL;
- char *config_file = NULL;
- char *s;
- int l;
-
-
-#ifndef _WIN32
- signal(SIGCHLD, sigchld);
-#endif
-
- setenv("LC_NUMERIC","C",1);
- setlocale(LC_ALL,"");
- setlocale(LC_NUMERIC,"C");
- if (file_exists("navit.c") || file_exists("navit.o")) {
- char buffer[PATH_MAX];
- printf(_("Running from source directory\n"));
- getcwd(buffer, PATH_MAX);
- setenv("NAVIT_PREFIX", buffer, 0);
- setenv("NAVIT_LIBDIR", buffer, 0);
- setenv("NAVIT_SHAREDIR", buffer, 0);
- setenv("NAVIT_LIBPREFIX", "*/.libs/", 0);
- s=g_strdup_printf("%s/../locale", buffer);
- setenv("NAVIT_LOCALEDIR", s, 0);
- g_free(s);
- } else {
- if (!getenv("NAVIT_PREFIX")) {
- l=strlen(argv[0]);
- if (l > 10 && !strcmp(argv[0]+l-10,"/bin/navit")) {
- s=g_strdup(argv[0]);
- s[l-10]='\0';
- if (strcmp(s, PREFIX))
- printf(_("setting '%s' to '%s'\n"), "NAVIT_PREFIX", s);
- setenv("NAVIT_PREFIX", s, 0);
- g_free(s);
- } else
- setenv("NAVIT_PREFIX", PREFIX, 0);
- }
-#ifdef _WIN32
- s=g_strdup_printf("locale");
-#else
- s=g_strdup_printf("%s/share/locale", getenv("NAVIT_PREFIX"));
-#endif
- setenv("NAVIT_LOCALEDIR", s, 0);
- g_free(s);
-#ifdef _WIN32
- s=g_strdup_printf(".");
-#else
- s=g_strdup_printf("%s/share/navit", getenv("NAVIT_PREFIX"));
-#endif
- setenv("NAVIT_SHAREDIR", s, 0);
- g_free(s);
- s=g_strdup_printf("%s/lib/navit", getenv("NAVIT_PREFIX"));
- setenv("NAVIT_LIBDIR", s, 0);
- g_free(s);
- }
- bindtextdomain(PACKAGE, getenv("NAVIT_LOCALEDIR"));
- bind_textdomain_codeset (PACKAGE, "UTF-8");
- textdomain(PACKAGE);
-
- debug_init(argv[0]);
- if (getenv("LC_ALL"))
- dbg(0,"Warning: LC_ALL is set, this might lead to problems\n");
-#ifndef USE_PLUGINS
- extern void builtin_init(void);
- builtin_init();
-#endif
-#if 0
- /* handled in gui/gtk */
- gtk_set_locale();
- gtk_init(&argc, &argv);
- gdk_rgb_init();
-#endif
- s = getenv("NAVIT_WID");
- if (s) {
- setenv("SDL_WINDOWID", s, 0);
- }
- route_init();
- navigation_init();
- config_file=NULL;
- int opt;
- opterr=0; //don't bomb out on errors.
- if (argc > 1) {
- while((opt = getopt(argc, argv, ":hvc:d:")) != -1) {
- switch(opt) {
- case 'h':
- print_usage();
- exit(0);
- break;
- case 'v':
- printf("%s %s\n", "navit", "0.0.4+svn");
- exit(0);
- break;
- case 'c':
- printf("config file n is set to `%s'\n", optarg);
- config_file = optarg;
- break;
- case 'd':
- printf("TODO Verbose option is set to `%s'\n", optarg);
- break;
- case ':':
- fprintf(stderr, "navit: Error - Option `%c' needs a value\n", optopt);
- print_usage();
- exit(1);
- break;
- case '?':
- fprintf(stderr, "navit: Error - No such option: `%c'\n", optopt);
- print_usage();
- exit(1);
- }
- }
- }
- // use 1st cmd line option that is left for the config file
- if (optind < argc) config_file = argv[optind];
-
- GList *list = NULL, *li;
- // 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,get_home_directory(), "/.navit/navit.xml" , NULL));
- list = g_list_append(list,g_strjoin(NULL,get_home_directory(), "/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));
- }
- li = list;
- do {
- if (li == NULL) {
- // We have not found an existing config file from all possibilities
- printf(_("No config file navit.xml, navit.xml.local found\n"));
- exit(1);
- }
- // Try the next config file possibility from the list
- config_file = li->data;
- li = g_list_next(li);
- } while (!file_exists(config_file));
-
- if (!config_load(config_file, &error)) {
- printf(_("Error parsing '%s': %s\n"), config_file, error->message);
- } else {
- printf(_("Using '%s'\n"), config_file);
- }
-
- g_list_foreach(list, g_free, NULL);
- g_list_free(list);
-
- if (! navit) {
- printf(_("No instance has been created, exiting\n"));
- exit(1);
- }
- if (main_loop_gui) {
- gui_run_main_loop(main_loop_gui);
- } else
- event_main_loop_run();
-
- return 0;
-}