#endif
}
-#if 0
-static gchar *get_home_directory(void)
-{
- static gchar *homedir = NULL;
-
- if (homedir) return homedir;
- homedir = getenv("HOME");
- if (!homedir)
- {
- dbg(0,"Could not find home directory. Using current directory as home directory.\n");
- homedir =g_strdup(".");
- } else {
- homedir=g_strdup(homedir);
- }
- return homedir;
-}
-#endif
-
-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);
- callback_list_call_2(cbl, nav, 1);
-}
-
-void
-main_remove_navit(struct navit *nav)
-{
- navit=g_list_remove(navit, nav);
- callback_list_call_2(cbl, nav, 0);
- if (! navit)
- event_main_loop_quit();
-}
-
-int
-main_add_attr(struct attr *attr)
-{
- switch (attr->type)
- {
- case attr_callback:
- callback_list_add(cbl, attr->u.callback);
- return 1;
- default:
- return 0;
- }
-}
-
-int
-main_remove_attr(struct attr *attr)
-{
- switch (attr->type)
- {
- case attr_callback:
- callback_list_remove(cbl, attr->u.callback);
- return 1;
- default:
- return 0;
- }
-}
-
-
#ifdef HAVE_API_WIN32
void
setenv(char *var, char *val, int overwrite)
{"NAVIT_SHAREDIR", ":", ":/share/navit", ":", ":/share"},
{"NAVIT_LOCALEDIR", ":/../locale",":/share/locale",":\\locale", ":/locale"},
{"NAVIT_USER_DATADIR",":", "~/.navit", ":\\data", ":/home"},
+#if 1
{"NAVIT_LOGFILE", NULL, NULL, ":\\navit.log",NULL},
+#endif
{"NAVIT_LIBPREFIX", "*/.libs/", NULL, NULL, NULL},
{NULL, NULL, NULL, NULL, NULL},
};
main_setup_environment(int mode)
{
int i=0;
- char *var,*val;
+ char *var,*val,*homedir;
while ((var=environment_vars[i][0])) {
val=environment_vars[i][mode+1];
if (val) {
val=g_strdup_printf("%s%s", getenv("NAVIT_PREFIX"), val+1);
break;
case '~':
- val=g_strdup_printf("%s%s", getenv("HOME"), val+1);
+ homedir=getenv("HOME");
+ if (!homedir)
+ homedir="./";
+ val=g_strdup_printf("%s%s", homedir, val+1);
break;
default:
val=g_strdup(val);
}
}
+#ifdef HAVE_API_WIN32_BASE
+char *nls_table[][3]={
+ {"DAN","DNK","da_DK"},
+ {"DEU","DEU","de_DE"},
+ {"DEA","AUT","de_AT"},
+ {"ENU","USA","en_US"},
+ {"FRA","FRA","fr_FR"},
+ {"RUS","RUS","ru_RU"},
+ {NULL,NULL,NULL},
+};
+
+static void
+win_set_nls(void)
+{
+ wchar_t wcountry[32],wlang[32];
+ char country[32],lang[32];
+ int i=0;
+
+ GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVLANGNAME, wlang, sizeof(wlang));
+ WideCharToMultiByte(CP_ACP,0,wlang,-1,lang,sizeof(lang),NULL,NULL);
+ GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVCTRYNAME, wcountry, sizeof(wcountry));
+ WideCharToMultiByte(CP_ACP,0,wcountry,-1,country,sizeof(country),NULL,NULL);
+ while (nls_table[i][0]) {
+ if (!strcmp(nls_table[i][0], lang) && !(strcmp(nls_table[i][1], country))) {
+ dbg(1,"Setting LANG=%s for Lang %s Country %s\n",nls_table[i][2], lang, country);
+ setenv("LANG",nls_table[i][2],0);
+ return;
+ }
+ i++;
+ }
+ dbg(1,"Lang %s Country %s not found\n",lang,country);
+}
+#endif
+
void
main_init(char *program)
{
signal(SIGCHLD, sigchld);
#endif
cbl=callback_list_new();
+#ifdef HAVE_API_WIN32_BASE
+ win_set_nls();
+#endif
setenv("LC_NUMERIC","C",1);
setlocale(LC_ALL,"");
setlocale(LC_NUMERIC,"C");