/[zanavi_public1]/navit/navit/main.c
ZANavi

Diff of /navit/navit/main.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 30 Revision 31
1/**
2 * ZANavi, Zoff Android Navigation system.
3 * Copyright (C) 2011-2012 Zoff <zoff@zoff.cc>
4 *
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.
8 *
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.
13 *
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.
18 */
19
1/** 20/**
2 * Navit, a modular navigation system. 21 * Navit, a modular navigation system.
3 * Copyright (C) 2005-2008 Navit Team 22 * Copyright (C) 2005-2008 Navit Team
4 * 23 *
5 * This program is free software; you can redistribute it and/or 24 * This program is free software; you can redistribute it and/or
67void 86void
68setenv(char *var, char *val, int overwrite) 87setenv(char *var, char *val, int overwrite)
69{ 88{
70 char *str=g_strdup_printf("%s=%s",var,val); 89 char *str=g_strdup_printf("%s=%s",var,val);
71 if (overwrite || !getenv(var)) 90 if (overwrite || !getenv(var))
72 putenv(str); 91 putenv(str);
73 g_free(str); 92 g_free(str);
74} 93}
75#endif 94#endif
76 95
77/* 96/*
78 * environment_vars[][0:name,1-3:mode] 97 * environment_vars[][0:name,1-3:mode]
79 * ':' replaced with NAVIT_PREFIX 98 * ':' replaced with NAVIT_PREFIX
80 * '::' replaced with NAVIT_PREFIX and LIBDIR 99 * '::' replaced with NAVIT_PREFIX and LIBDIR
81 * '~' replaced with HOME 100 * '~' replaced with HOME
82*/ 101 */
83static char *environment_vars[][5]={ 102static char *environment_vars[][5] = { { "NAVIT_LIBDIR", ":", "::/navit", ":\\lib", ":/lib" }, { "NAVIT_SHAREDIR", ":", ":/share/navit", ":", ":/share" }, { "NAVIT_LOCALEDIR", ":/../locale", ":/share/locale", ":\\locale", ":/locale" }, { "NAVIT_USER_DATADIR", ":", "~/.navit", ":\\data", ":/home" },
84 {"NAVIT_LIBDIR", ":", "::/navit", ":\\lib", ":/lib"},
85 {"NAVIT_SHAREDIR", ":", ":/share/navit", ":", ":/share"},
86 {"NAVIT_LOCALEDIR", ":/../locale",":/share/locale",":\\locale", ":/locale"},
87 {"NAVIT_USER_DATADIR",":", "~/.navit", ":\\data", ":/home"},
88#if 1 103#if 1
89 {"NAVIT_LOGFILE", NULL, NULL, ":\\navit.log",NULL}, 104 { "NAVIT_LOGFILE", NULL, NULL, ":\\navit.log", NULL },
90#endif 105#endif
91 {"NAVIT_LIBPREFIX", "*/.libs/", NULL, NULL, NULL}, 106 { "NAVIT_LIBPREFIX", "*/.libs/", NULL, NULL, NULL }, { NULL, NULL, NULL, NULL, NULL }, };
92 {NULL, NULL, NULL, NULL, NULL},
93};
94 107
95static void
96main_setup_environment(int mode) 108static void main_setup_environment(int mode)
97{ 109{
98 int i=0; 110 int i = 0;
99 char *var,*val,*homedir; 111 char *var, *val, *homedir;
100 while ((var=environment_vars[i][0])) { 112 while ((var = environment_vars[i][0]))
113 {
101 val=environment_vars[i][mode+1]; 114 val = environment_vars[i][mode + 1];
102 if (val) { 115 if (val)
116 {
103 switch (val[0]) { 117 switch (val[0])
118 {
104 case ':': 119 case ':':
105 if (val[1] == ':') 120 if (val[1] == ':')
106 val=g_strdup_printf("%s/%s%s", getenv("NAVIT_PREFIX"), LIBDIR+sizeof(PREFIX), val+2); 121 val = g_strdup_printf("%s/%s%s", getenv("NAVIT_PREFIX"), LIBDIR + sizeof(PREFIX), val + 2);
107 else 122 else
108 val=g_strdup_printf("%s%s", getenv("NAVIT_PREFIX"), val+1); 123 val = g_strdup_printf("%s%s", getenv("NAVIT_PREFIX"), val + 1);
109 break; 124 break;
110 case '~': 125 case '~':
111 homedir=getenv("HOME"); 126 homedir = getenv("HOME");
112 if (!homedir) 127 if (!homedir)
113 homedir="./"; 128 homedir = "./";
114 val=g_strdup_printf("%s%s", homedir, val+1); 129 val = g_strdup_printf("%s%s", homedir, val + 1);
115 break; 130 break;
116 default: 131 default:
117 val=g_strdup(val); 132 val = g_strdup(val);
118 break; 133 break;
119 } 134 }
120 setenv(var, val, 0); 135 setenv(var, val, 0);
121 g_free(val); 136 g_free(val);
122 } 137 }
123 i++; 138 i++;
124 } 139 }
125} 140}
126 141
127#ifdef HAVE_API_WIN32_BASE 142#ifdef HAVE_API_WIN32_BASE
128char *nls_table[][3]={ 143char *nls_table[][3]=
144{
129 // NLS Table compiled by Nick "Number6" Geoghegan 145 // NLS Table compiled by Nick "Number6" Geoghegan
130 // Not an exhaustive list, but supports 99% of all languages in Windows 146 // Not an exhaustive list, but supports 99% of all languages in Windows
131 //{"LANGNAME", "CTRYNAME", "Language Code"}, 147 //{"LANGNAME", "CTRYNAME", "Language Code"},
148
132 {"AFK", "ZAF", "af_ZA"}, // Afrikaans (South Africa) 149 { "AFK", "ZAF", "af_ZA"}, // Afrikaans (South Africa)
150
133 {"SQI", "ALB", "sq_AL"}, // Albanian (Albania) 151 { "SQI", "ALB", "sq_AL"}, // Albanian (Albania)
152
134 {"AMH", "ETH", "am_ET"}, // Amharic (Ethiopia) 153 { "AMH", "ETH", "am_ET"}, // Amharic (Ethiopia)
154
135 {"ARG", "DZA", "ar_DZ"}, // Arabic (Algeria) 155 { "ARG", "DZA", "ar_DZ"}, // Arabic (Algeria)
156
136 {"ARH", "BHR", "ar_BH"}, // Arabic (Bahrain) 157 { "ARH", "BHR", "ar_BH"}, // Arabic (Bahrain)
158
137 {"ARE", "EGY", "ar_EG"}, // Arabic (Egypt) 159 { "ARE", "EGY", "ar_EG"}, // Arabic (Egypt)
160
138 {"ARI", "IRQ", "ar_IQ"}, // Arabic (Iraq) 161 { "ARI", "IRQ", "ar_IQ"}, // Arabic (Iraq)
162
139 {"ARJ", "JOR", "ar_JO"}, // Arabic (Jordan) 163 { "ARJ", "JOR", "ar_JO"}, // Arabic (Jordan)
164
140 {"ARK", "KWT", "ar_KW"}, // Arabic (Kuwait) 165 { "ARK", "KWT", "ar_KW"}, // Arabic (Kuwait)
166
141 {"ARB", "LBN", "ar_LB"}, // Arabic (Lebanon) 167 { "ARB", "LBN", "ar_LB"}, // Arabic (Lebanon)
168
142 {"ARL", "LBY", "ar_LY"}, // Arabic (Libya) 169 { "ARL", "LBY", "ar_LY"}, // Arabic (Libya)
170
143 {"ARM", "MAR", "ar_MA"}, // Arabic (Morocco) 171 { "ARM", "MAR", "ar_MA"}, // Arabic (Morocco)
172
144 {"ARO", "OMN", "ar_OM"}, // Arabic (Oman) 173 { "ARO", "OMN", "ar_OM"}, // Arabic (Oman)
174
145 {"ARQ", "QAT", "ar_QA"}, // Arabic (Qatar) 175 { "ARQ", "QAT", "ar_QA"}, // Arabic (Qatar)
176
146 {"ARA", "SAU", "ar_SA"}, // Arabic (Saudi Arabia) 177 { "ARA", "SAU", "ar_SA"}, // Arabic (Saudi Arabia)
178
147 {"ARS", "SYR", "ar_SY"}, // Arabic (Syria) 179 { "ARS", "SYR", "ar_SY"}, // Arabic (Syria)
180
148 {"ART", "TUN", "ar_TN"}, // Arabic (Tunisia) 181 { "ART", "TUN", "ar_TN"}, // Arabic (Tunisia)
182
149 {"ARU", "ARE", "ar_AE"}, // Arabic (U.A.E.) 183 { "ARU", "ARE", "ar_AE"}, // Arabic (U.A.E.)
184
150 {"ARY", "YEM", "ar_YE"}, // Arabic (Yemen) 185 { "ARY", "YEM", "ar_YE"}, // Arabic (Yemen)
186
151 {"HYE", "ARM", "hy_AM"}, // Armenian (Armenia) 187 { "HYE", "ARM", "hy_AM"}, // Armenian (Armenia)
188
152 {"ASM", "IND", "as_IN"}, // Assamese (India) 189 { "ASM", "IND", "as_IN"}, // Assamese (India)
190
153 {"BAS", "RUS", "ba_RU"}, // Bashkir (Russia) 191 { "BAS", "RUS", "ba_RU"}, // Bashkir (Russia)
192
154 {"EUQ", "ESP", "eu_ES"}, // Basque (Basque) 193 { "EUQ", "ESP", "eu_ES"}, // Basque (Basque)
194
155 {"BEL", "BLR", "be_BY"}, // Belarusian (Belarus) 195 { "BEL", "BLR", "be_BY"}, // Belarusian (Belarus)
196
156 {"BNG", "BDG", "bn_BD"}, // Bengali (Bangladesh) 197 { "BNG", "BDG", "bn_BD"}, // Bengali (Bangladesh)
198
157 {"BNG", "IND", "bn_IN"}, // Bengali (India) 199 { "BNG", "IND", "bn_IN"}, // Bengali (India)
200
158 {"BRE", "FRA", "br_FR"}, // Breton (France) 201 { "BRE", "FRA", "br_FR"}, // Breton (France)
202
159 {"BGR", "BGR", "bg_BG"}, // Bulgarian (Bulgaria) 203 { "BGR", "BGR", "bg_BG"}, // Bulgarian (Bulgaria)
204
160 {"CAT", "ESP", "ca_ES"}, // Catalan (Catalan) 205 { "CAT", "ESP", "ca_ES"}, // Catalan (Catalan)
206
161 {"ZHH", "HKG", "zh_HK"}, // Chinese (Hong Kong S.A.R.) 207 { "ZHH", "HKG", "zh_HK"}, // Chinese (Hong Kong S.A.R.)
208
162 {"ZHM", "MCO", "zh_MO"}, // Chinese (Macao S.A.R.) 209 { "ZHM", "MCO", "zh_MO"}, // Chinese (Macao S.A.R.)
210
163 {"CHS", "CHN", "zh_CN"}, // Chinese (People's Republic of China) 211 { "CHS", "CHN", "zh_CN"}, // Chinese (People's Republic of China)
212
164 {"ZHI", "SGP", "zh_SG"}, // Chinese (Singapore) 213 { "ZHI", "SGP", "zh_SG"}, // Chinese (Singapore)
214
165 {"CHT", "TWN", "zh_TW"}, // Chinese (Taiwan) 215 { "CHT", "TWN", "zh_TW"}, // Chinese (Taiwan)
216
166 {"COS", "FRA", "co_FR"}, // Corsican (France) 217 { "COS", "FRA", "co_FR"}, // Corsican (France)
218
167 {"HRV", "HRV", "hr_HR"}, // Croatian (Croatia) 219 { "HRV", "HRV", "hr_HR"}, // Croatian (Croatia)
220
168 {"HRB", "BIH", "hr_BA"}, // Croatian (Latin, Bosnia and Herzegovina) 221 { "HRB", "BIH", "hr_BA"}, // Croatian (Latin, Bosnia and Herzegovina)
222
169 {"CSY", "CZE", "cs_CZ"}, // Czech (Czech Republic) 223 { "CSY", "CZE", "cs_CZ"}, // Czech (Czech Republic)
224
170 {"DAN", "DNK", "da_DK"}, // Danish (Denmark) 225 { "DAN", "DNK", "da_DK"}, // Danish (Denmark)
226
171 {"NLB", "BEL", "nl_BE"}, // Dutch (Belgium) 227 { "NLB", "BEL", "nl_BE"}, // Dutch (Belgium)
228
172 {"NLD", "NLD", "nl_NL"}, // Dutch (Netherlands) 229 { "NLD", "NLD", "nl_NL"}, // Dutch (Netherlands)
230
173 {"ENA", "AUS", "en_AU"}, // English (Australia) 231 { "ENA", "AUS", "en_AU"}, // English (Australia)
232
174 {"ENL", "BLZ", "en_BZ"}, // English (Belize) 233 { "ENL", "BLZ", "en_BZ"}, // English (Belize)
234
175 {"ENC", "CAN", "en_CA"}, // English (Canada) 235 { "ENC", "CAN", "en_CA"}, // English (Canada)
236
176 {"ENB", "CAR", "en_CB"}, // English (Caribbean) 237 { "ENB", "CAR", "en_CB"}, // English (Caribbean)
238
177 {"ENN", "IND", "en_IN"}, // English (India) 239 { "ENN", "IND", "en_IN"}, // English (India)
240
178 {"ENI", "IRL", "en_IE"}, // English (Ireland) 241 { "ENI", "IRL", "en_IE"}, // English (Ireland)
242
179 {"ENJ", "JAM", "en_JM"}, // English (Jamaica) 243 { "ENJ", "JAM", "en_JM"}, // English (Jamaica)
244
180 {"ENM", "MYS", "en_MY"}, // English (Malaysia) 245 { "ENM", "MYS", "en_MY"}, // English (Malaysia)
246
181 {"ENZ", "NZL", "en_NZ"}, // English (New Zealand) 247 { "ENZ", "NZL", "en_NZ"}, // English (New Zealand)
248
182 {"ENP", "PHL", "en_PH"}, // English (Republic of the Philippines) 249 { "ENP", "PHL", "en_PH"}, // English (Republic of the Philippines)
250
183 {"ENE", "SGP", "en_SG"}, // English (Singapore) 251 { "ENE", "SGP", "en_SG"}, // English (Singapore)
252
184 {"ENS", "ZAF", "en_ZA"}, // English (South Africa) 253 { "ENS", "ZAF", "en_ZA"}, // English (South Africa)
254
185 {"ENT", "TTO", "en_TT"}, // English (Trinidad and Tobago) 255 { "ENT", "TTO", "en_TT"}, // English (Trinidad and Tobago)
256
186 {"ENG", "GBR", "en_GB"}, // English (United Kingdom) 257 { "ENG", "GBR", "en_GB"}, // English (United Kingdom)
258
187 {"ENU", "USA", "en_US"}, // English (United States) 259 { "ENU", "USA", "en_US"}, // English (United States)
260
188 {"ENW", "ZWE", "en_ZW"}, // English (Zimbabwe) 261 { "ENW", "ZWE", "en_ZW"}, // English (Zimbabwe)
262
189 {"ETI", "EST", "et_EE"}, // Estonian (Estonia) 263 { "ETI", "EST", "et_EE"}, // Estonian (Estonia)
264
190 {"FOS", "FRO", "fo_FO"}, // Faroese (Faroe Islands) 265 { "FOS", "FRO", "fo_FO"}, // Faroese (Faroe Islands)
266
191 {"FIN", "FIN", "fi_FI"}, // Finnish (Finland) 267 { "FIN", "FIN", "fi_FI"}, // Finnish (Finland)
268
192 {"FRB", "BEL", "fr_BE"}, // French (Belgium) 269 { "FRB", "BEL", "fr_BE"}, // French (Belgium)
270
193 {"FRC", "CAN", "fr_CA"}, // French (Canada) 271 { "FRC", "CAN", "fr_CA"}, // French (Canada)
272
194 {"FRA", "FRA", "fr_FR"}, // French (France) 273 { "FRA", "FRA", "fr_FR"}, // French (France)
274
195 {"FRL", "LUX", "fr_LU"}, // French (Luxembourg) 275 { "FRL", "LUX", "fr_LU"}, // French (Luxembourg)
276
196 {"FRM", "MCO", "fr_MC"}, // French (Principality of Monaco) 277 { "FRM", "MCO", "fr_MC"}, // French (Principality of Monaco)
278
197 {"FRS", "CHE", "fr_CH"}, // French (Switzerland) 279 { "FRS", "CHE", "fr_CH"}, // French (Switzerland)
280
198 {"FYN", "NLD", "fy_NL"}, // Frisian (Netherlands) 281 { "FYN", "NLD", "fy_NL"}, // Frisian (Netherlands)
282
199 {"GLC", "ESP", "gl_ES"}, // Galician (Galician) 283 { "GLC", "ESP", "gl_ES"}, // Galician (Galician)
284
200 {"KAT", "GEO", "ka_GE"}, // Georgian (Georgia) 285 { "KAT", "GEO", "ka_GE"}, // Georgian (Georgia)
286
201 {"DEA", "AUT", "de_AT"}, // German (Austria) 287 { "DEA", "AUT", "de_AT"}, // German (Austria)
288
202 {"DEU", "DEU", "de_DE"}, // German (Germany) 289 { "DEU", "DEU", "de_DE"}, // German (Germany)
290
203 {"DEC", "LIE", "de_LI"}, // German (Liechtenstein) 291 { "DEC", "LIE", "de_LI"}, // German (Liechtenstein)
292
204 {"DEL", "LUX", "de_LU"}, // German (Luxembourg) 293 { "DEL", "LUX", "de_LU"}, // German (Luxembourg)
294
205 {"DES", "CHE", "de_CH"}, // German (Switzerland) 295 { "DES", "CHE", "de_CH"}, // German (Switzerland)
296
206 {"ELL", "GRC", "el_GR"}, // Greek (Greece) 297 { "ELL", "GRC", "el_GR"}, // Greek (Greece)
298
207 {"KAL", "GRL", "kl_GL"}, // Greenlandic (Greenland) 299 { "KAL", "GRL", "kl_GL"}, // Greenlandic (Greenland)
300
208 {"GUJ", "IND", "gu_IN"}, // Gujarati (India) 301 { "GUJ", "IND", "gu_IN"}, // Gujarati (India)
302
209 {"HEB", "ISR", "he_IL"}, // Hebrew (Israel) 303 { "HEB", "ISR", "he_IL"}, // Hebrew (Israel)
304
210 {"HIN", "IND", "hi_IN"}, // Hindi (India) 305 { "HIN", "IND", "hi_IN"}, // Hindi (India)
306
211 {"HUN", "HUN", "hu_HU"}, // Hungarian (Hungary) 307 { "HUN", "HUN", "hu_HU"}, // Hungarian (Hungary)
308
212 {"ISL", "ISL", "is_IS"}, // Icelandic (Iceland) 309 { "ISL", "ISL", "is_IS"}, // Icelandic (Iceland)
310
213 {"IBO", "NGA", "ig_NG"}, // Igbo (Nigeria) 311 { "IBO", "NGA", "ig_NG"}, // Igbo (Nigeria)
312
214 {"IND", "IDN", "id_ID"}, // Indonesian (Indonesia) 313 { "IND", "IDN", "id_ID"}, // Indonesian (Indonesia)
314
215 {"IRE", "IRL", "ga_IE"}, // Irish (Ireland) 315 { "IRE", "IRL", "ga_IE"}, // Irish (Ireland)
316
216 {"XHO", "ZAF", "xh_ZA"}, // isiXhosa (South Africa) 317 { "XHO", "ZAF", "xh_ZA"}, // isiXhosa (South Africa)
318
217 {"ZUL", "ZAF", "zu_ZA"}, // isiZulu (South Africa) 319 { "ZUL", "ZAF", "zu_ZA"}, // isiZulu (South Africa)
320
218 {"ITA", "ITA", "it_IT"}, // Italian (Italy) 321 { "ITA", "ITA", "it_IT"}, // Italian (Italy)
322
219 {"ITS", "CHE", "it_CH"}, // Italian (Switzerland) 323 { "ITS", "CHE", "it_CH"}, // Italian (Switzerland)
324
220 {"JPN", "JPN", "ja_JP"}, // Japanese (Japan) 325 { "JPN", "JPN", "ja_JP"}, // Japanese (Japan)
326
221 {"KDI", "IND", "kn_IN"}, // Kannada (India) 327 { "KDI", "IND", "kn_IN"}, // Kannada (India)
328
222 {"KKZ", "KAZ", "kk_KZ"}, // Kazakh (Kazakhstan) 329 { "KKZ", "KAZ", "kk_KZ"}, // Kazakh (Kazakhstan)
330
223 {"KHM", "KHM", "km_KH"}, // Khmer (Cambodia) 331 { "KHM", "KHM", "km_KH"}, // Khmer (Cambodia)
332
224 {"KIN", "RWA", "rw_RW"}, // Kinyarwanda (Rwanda) 333 { "KIN", "RWA", "rw_RW"}, // Kinyarwanda (Rwanda)
334
225 {"SWK", "KEN", "sw_KE"}, // Kiswahili (Kenya) 335 { "SWK", "KEN", "sw_KE"}, // Kiswahili (Kenya)
336
226 {"KOR", "KOR", "ko_KR"}, // Korean (Korea) 337 { "KOR", "KOR", "ko_KR"}, // Korean (Korea)
338
227 {"KYR", "KGZ", "ky_KG"}, // Kyrgyz (Kyrgyzstan) 339 { "KYR", "KGZ", "ky_KG"}, // Kyrgyz (Kyrgyzstan)
340
228 {"LAO", "LAO", "lo_LA"}, // Lao (Lao P.D.R.) 341 { "LAO", "LAO", "lo_LA"}, // Lao (Lao P.D.R.)
342
229 {"LVI", "LVA", "lv_LV"}, // Latvian (Latvia) 343 { "LVI", "LVA", "lv_LV"}, // Latvian (Latvia)
344
230 {"LTH", "LTU", "lt_LT"}, // Lithuanian (Lithuania) 345 { "LTH", "LTU", "lt_LT"}, // Lithuanian (Lithuania)
346
231 {"LBX", "LUX", "lb_LU"}, // Luxembourgish (Luxembourg) 347 { "LBX", "LUX", "lb_LU"}, // Luxembourgish (Luxembourg)
348
232 {"MKI", "MKD", "mk_MK"}, // Macedonian (Former Yugoslav Republic of Macedonia) 349 { "MKI", "MKD", "mk_MK"}, // Macedonian (Former Yugoslav Republic of Macedonia)
350
233 {"MSB", "BRN", "ms_BN"}, // Malay (Brunei Darussalam) 351 { "MSB", "BRN", "ms_BN"}, // Malay (Brunei Darussalam)
352
234 {"MSL", "MYS", "ms_MY"}, // Malay (Malaysia) 353 { "MSL", "MYS", "ms_MY"}, // Malay (Malaysia)
354
235 {"MYM", "IND", "ml_IN"}, // Malayalam (India) 355 { "MYM", "IND", "ml_IN"}, // Malayalam (India)
356
236 {"MLT", "MLT", "mt_MT"}, // Maltese (Malta) 357 { "MLT", "MLT", "mt_MT"}, // Maltese (Malta)
358
237 {"MRI", "NZL", "mi_NZ"}, // Maori (New Zealand) 359 { "MRI", "NZL", "mi_NZ"}, // Maori (New Zealand)
360
238 {"MAR", "IND", "mr_IN"}, // Marathi (India) 361 { "MAR", "IND", "mr_IN"}, // Marathi (India)
362
239 {"MON", "MNG", "mn_MN"}, // Mongolian (Cyrillic, Mongolia) 363 { "MON", "MNG", "mn_MN"}, // Mongolian (Cyrillic, Mongolia)
364
240 {"NEP", "NEP", "ne_NP"}, // Nepali (Nepal) 365 { "NEP", "NEP", "ne_NP"}, // Nepali (Nepal)
366
241 {"NOR", "NOR", "nb_NO"}, // Norwegian, Bokmå(Norway) 367 { "NOR", "NOR", "nb_NO"}, // Norwegian, Bokmå(Norway)
368
242 {"NON", "NOR", "nn_NO"}, // Norwegian, Nynorsk (Norway) 369 { "NON", "NOR", "nn_NO"}, // Norwegian, Nynorsk (Norway)
370
243 {"OCI", "FRA", "oc_FR"}, // Occitan (France) 371 { "OCI", "FRA", "oc_FR"}, // Occitan (France)
372
244 {"ORI", "IND", "or_IN"}, // Oriya (India) 373 { "ORI", "IND", "or_IN"}, // Oriya (India)
374
245 {"PAS", "AFG", "ps_AF"}, // Pashto (Afghanistan) 375 { "PAS", "AFG", "ps_AF"}, // Pashto (Afghanistan)
376
246 {"FAR", "IRN", "fa_IR"}, // Persian 377 { "FAR", "IRN", "fa_IR"}, // Persian
378
247 {"PLK", "POL", "pl_PL"}, // Polish (Poland) 379 { "PLK", "POL", "pl_PL"}, // Polish (Poland)
380
248 {"PTB", "BRA", "pt_BR"}, // Portuguese (Brazil) 381 { "PTB", "BRA", "pt_BR"}, // Portuguese (Brazil)
382
249 {"PTG", "PRT", "pt_PT"}, // Portuguese (Portugal) 383 { "PTG", "PRT", "pt_PT"}, // Portuguese (Portugal)
384
250 {"PAN", "IND", "pa_IN"}, // Punjabi (India) 385 { "PAN", "IND", "pa_IN"}, // Punjabi (India)
386
251 {"ROM", "ROM", "ro_RO"}, // Romanian (Romania) 387 { "ROM", "ROM", "ro_RO"}, // Romanian (Romania)
388
252 {"RMC", "CHE", "rm_CH"}, // Romansh (Switzerland) 389 { "RMC", "CHE", "rm_CH"}, // Romansh (Switzerland)
390
253 {"RUS", "RUS", "ru_RU"}, // Russian (Russia) 391 { "RUS", "RUS", "ru_RU"}, // Russian (Russia)
392
254 {"SMG", "FIN", "se_FI"}, // Sami, Northern (Finland) 393 { "SMG", "FIN", "se_FI"}, // Sami, Northern (Finland)
394
255 {"SME", "NOR", "se_NO"}, // Sami, Northern (Norway) 395 { "SME", "NOR", "se_NO"}, // Sami, Northern (Norway)
396
256 {"SMF", "SWE", "se_SE"}, // Sami, Northern (Sweden) 397 { "SMF", "SWE", "se_SE"}, // Sami, Northern (Sweden)
398
257 {"SAN", "IND", "sa_IN"}, // Sanskrit (India) 399 { "SAN", "IND", "sa_IN"}, // Sanskrit (India)
400
258 {"TSN", "ZAF", "tn_ZA"}, // Setswana (South Africa) 401 { "TSN", "ZAF", "tn_ZA"}, // Setswana (South Africa)
402
259 {"SIN", "LKA", "si_LK"}, // Sinhala (Sri Lanka) 403 { "SIN", "LKA", "si_LK"}, // Sinhala (Sri Lanka)
404
260 {"SKY", "SVK", "sk_SK"}, // Slovak (Slovakia) 405 { "SKY", "SVK", "sk_SK"}, // Slovak (Slovakia)
406
261 {"SLV", "SVN", "sl_SI"}, // Slovenian (Slovenia) 407 { "SLV", "SVN", "sl_SI"}, // Slovenian (Slovenia)
408
262 {"ESS", "ARG", "es_AR"}, // Spanish (Argentina) 409 { "ESS", "ARG", "es_AR"}, // Spanish (Argentina)
410
263 {"ESB", "BOL", "es_BO"}, // Spanish (Bolivia) 411 { "ESB", "BOL", "es_BO"}, // Spanish (Bolivia)
412
264 {"ESL", "CHL", "es_CL"}, // Spanish (Chile) 413 { "ESL", "CHL", "es_CL"}, // Spanish (Chile)
414
265 {"ESO", "COL", "es_CO"}, // Spanish (Colombia) 415 { "ESO", "COL", "es_CO"}, // Spanish (Colombia)
416
266 {"ESC", "CRI", "es_CR"}, // Spanish (Costa Rica) 417 { "ESC", "CRI", "es_CR"}, // Spanish (Costa Rica)
418
267 {"ESD", "DOM", "es_DO"}, // Spanish (Dominican Republic) 419 { "ESD", "DOM", "es_DO"}, // Spanish (Dominican Republic)
420
268 {"ESF", "ECU", "es_EC"}, // Spanish (Ecuador) 421 { "ESF", "ECU", "es_EC"}, // Spanish (Ecuador)
422
269 {"ESE", "SLV", "es_SV"}, // Spanish (El Salvador) 423 { "ESE", "SLV", "es_SV"}, // Spanish (El Salvador)
424
270 {"ESG", "GTM", "es_GT"}, // Spanish (Guatemala) 425 { "ESG", "GTM", "es_GT"}, // Spanish (Guatemala)
426
271 {"ESH", "HND", "es_HN"}, // Spanish (Honduras) 427 { "ESH", "HND", "es_HN"}, // Spanish (Honduras)
428
272 {"ESM", "MEX", "es_MX"}, // Spanish (Mexico) 429 { "ESM", "MEX", "es_MX"}, // Spanish (Mexico)
430
273 {"ESI", "NIC", "es_NI"}, // Spanish (Nicaragua) 431 { "ESI", "NIC", "es_NI"}, // Spanish (Nicaragua)
432
274 {"ESA", "PAN", "es_PA"}, // Spanish (Panama) 433 { "ESA", "PAN", "es_PA"}, // Spanish (Panama)
434
275 {"ESZ", "PRY", "es_PY"}, // Spanish (Paraguay) 435 { "ESZ", "PRY", "es_PY"}, // Spanish (Paraguay)
436
276 {"ESR", "PER", "es_PE"}, // Spanish (Peru) 437 { "ESR", "PER", "es_PE"}, // Spanish (Peru)
438
277 {"ESU", "PRI", "es_PR"}, // Spanish (Puerto Rico) 439 { "ESU", "PRI", "es_PR"}, // Spanish (Puerto Rico)
440
278 {"ESN", "ESP", "es_ES"}, // Spanish (Spain) 441 { "ESN", "ESP", "es_ES"}, // Spanish (Spain)
442
279 {"EST", "USA", "es_US"}, // Spanish (United States) 443 { "EST", "USA", "es_US"}, // Spanish (United States)
444
280 {"ESY", "URY", "es_UY"}, // Spanish (Uruguay) 445 { "ESY", "URY", "es_UY"}, // Spanish (Uruguay)
446
281 {"ESV", "VEN", "es_VE"}, // Spanish (Venezuela) 447 { "ESV", "VEN", "es_VE"}, // Spanish (Venezuela)
448
282 {"SVF", "FIN", "sv_FI"}, // Swedish (Finland) 449 { "SVF", "FIN", "sv_FI"}, // Swedish (Finland)
450
283 {"SVE", "SWE", "sv_SE"}, // Swedish (Sweden) 451 { "SVE", "SWE", "sv_SE"}, // Swedish (Sweden)
452
284 {"TAM", "IND", "ta_IN"}, // Tamil (India) 453 { "TAM", "IND", "ta_IN"}, // Tamil (India)
454
285 {"TTT", "RUS", "tt_RU"}, // Tatar (Russia) 455 { "TTT", "RUS", "tt_RU"}, // Tatar (Russia)
456
286 {"TEL", "IND", "te_IN"}, // Telugu (India) 457 { "TEL", "IND", "te_IN"}, // Telugu (India)
458
287 {"THA", "THA", "th_TH"}, // Thai (Thailand) 459 { "THA", "THA", "th_TH"}, // Thai (Thailand)
460
288 {"BOB", "CHN", "bo_CN"}, // Tibetan (PRC) 461 { "BOB", "CHN", "bo_CN"}, // Tibetan (PRC)
462
289 {"TRK", "TUR", "tr_TR"}, // Turkish (Turkey) 463 { "TRK", "TUR", "tr_TR"}, // Turkish (Turkey)
464
290 {"TUK", "TKM", "tk_TM"}, // Turkmen (Turkmenistan) 465 { "TUK", "TKM", "tk_TM"}, // Turkmen (Turkmenistan)
466
291 {"UIG", "CHN", "ug_CN"}, // Uighur (PRC) 467 { "UIG", "CHN", "ug_CN"}, // Uighur (PRC)
468
292 {"UKR", "UKR", "uk_UA"}, // Ukrainian (Ukraine) 469 { "UKR", "UKR", "uk_UA"}, // Ukrainian (Ukraine)
470
293 {"URD", "PAK", "ur_PK"}, // Urdu (Islamic Republic of Pakistan) 471 { "URD", "PAK", "ur_PK"}, // Urdu (Islamic Republic of Pakistan)
472
294 {"VIT", "VNM", "vi_VN"}, // Vietnamese (Vietnam) 473 { "VIT", "VNM", "vi_VN"}, // Vietnamese (Vietnam)
474
295 {"CYM", "GBR", "cy_GB"}, // Welsh (United Kingdom) 475 { "CYM", "GBR", "cy_GB"}, // Welsh (United Kingdom)
476
296 {"WOL", "SEN", "wo_SN"}, // Wolof (Senegal) 477 { "WOL", "SEN", "wo_SN"}, // Wolof (Senegal)
478
297 {"III", "CHN", "ii_CN"}, // Yi (PRC) 479 { "III", "CHN", "ii_CN"}, // Yi (PRC)
480
298 {"YOR", "NGA", "yo_NG"}, // Yoruba (Nigeria) 481 { "YOR", "NGA", "yo_NG"}, // Yoruba (Nigeria)
482
299 {NULL,NULL,NULL}, // Default - Can't find the language / Language not listed above 483 { NULL,NULL,NULL}, // Default - Can't find the language / Language not listed above
300}; 484};
301 485
302static void 486static void
303win_set_nls(void) 487win_set_nls(void)
304{ 488{
305 char country[32],lang[32]; 489 char country[32],lang[32];
306 int i=0; 490 int i=0;
307 491
308#ifdef HAVE_API_WIN32_CE 492#ifdef HAVE_API_WIN32_CE
309 wchar_t wcountry[32],wlang[32]; 493 wchar_t wcountry[32],wlang[32];
310 GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVLANGNAME, wlang, sizeof(wlang)); 494 GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVLANGNAME, wlang, sizeof(wlang));
311 WideCharToMultiByte(CP_ACP,0,wlang,-1,lang,sizeof(lang),NULL,NULL); 495 WideCharToMultiByte(CP_ACP,0,wlang,-1,lang,sizeof(lang),NULL,NULL);
312 GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVCTRYNAME, wcountry, sizeof(wcountry)); 496 GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVCTRYNAME, wcountry, sizeof(wcountry));
313 WideCharToMultiByte(CP_ACP,0,wcountry,-1,country,sizeof(country),NULL,NULL); 497 WideCharToMultiByte(CP_ACP,0,wcountry,-1,country,sizeof(country),NULL,NULL);
314#else 498#else
315 GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVLANGNAME, lang, sizeof(lang)); 499 GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVLANGNAME, lang, sizeof(lang));
316 GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVCTRYNAME, country, sizeof(country)); 500 GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SABBREVCTRYNAME, country, sizeof(country));
317#endif 501#endif
318 while (nls_table[i][0]) { 502 while (nls_table[i][0])
503 {
319 if (!strcmp(nls_table[i][0], lang) && !(strcmp(nls_table[i][1], country))) { 504 if (!strcmp(nls_table[i][0], lang) && !(strcmp(nls_table[i][1], country)))
505 {
320 dbg(1,"Setting LANG=%s for Lang %s Country %s\n",nls_table[i][2], lang, country); 506 dbg(1,"Setting LANG=%s for Lang %s Country %s\n",nls_table[i][2], lang, country);
321 setenv("LANG",nls_table[i][2],0); 507 setenv("LANG",nls_table[i][2],0);
322 return; 508 return;
323 } 509 }
324 i++; 510 i++;
325 } 511 }
326 dbg(1,"Lang %s Country %s not found\n",lang,country); 512 dbg(1,"Lang %s Country %s not found\n",lang,country);
327} 513}
328#endif 514#endif
329 515
330void
331main_init(const char *program) 516void main_init(const char *program)
332{ 517{
333 char *s; 518 char *s;
334#ifdef _UNICODE /* currently for wince */ 519#ifdef _UNICODE /* currently for wince */
335 wchar_t wfilename[MAX_PATH + 1]; 520 wchar_t wfilename[MAX_PATH + 1];
336#endif 521#endif
337 522
338 spawn_process_init(); 523 spawn_process_init();
339 524
340 cbl=callback_list_new(); 525 cbl = callback_list_new();
341#ifdef HAVE_API_WIN32_BASE 526#ifdef HAVE_API_WIN32_BASE
342 win_set_nls(); 527 win_set_nls();
343#endif 528#endif
344 setenv("LC_NUMERIC","C",1); 529 setenv("LC_NUMERIC", "C", 1);
345 setlocale(LC_ALL,""); 530 setlocale(LC_ALL, "");
346 setlocale(LC_NUMERIC,"C"); 531 setlocale(LC_NUMERIC, "C");
347#if !defined _WIN32 && !defined _WIN32_WCE 532#if !defined _WIN32 && !defined _WIN32_WCE
348 if (file_exists("navit.c") || file_exists("navit.o") || file_exists("navit.lo") || file_exists("version.h")) { 533 if (file_exists("navit.c") || file_exists("navit.o") || file_exists("navit.lo") || file_exists("version.h"))
534 {
349 char buffer[PATH_MAX]; 535 char buffer[PATH_MAX];
350 printf("Running from source directory\n"); 536 printf("Running from source directory\n");
351 getcwd(buffer, PATH_MAX); /* libc of navit returns "dummy" */ 537 getcwd(buffer, PATH_MAX); /* libc of navit returns "dummy" */
352 setenv("NAVIT_PREFIX", buffer, 0); 538 setenv("NAVIT_PREFIX", buffer, 0);
353 main_setup_environment(0); 539 main_setup_environment(0);
354 } else { 540 }
541 else
542 {
355 if (!getenv("NAVIT_PREFIX")) { 543 if (!getenv("NAVIT_PREFIX"))
544 {
356 int l; 545 int l;
357 int progpath_len; 546 int progpath_len;
358 char *progpath="/bin/navit"; 547 char *progpath = "/bin/navit";
359 l=strlen(program); 548 l = strlen(program);
360 progpath_len=strlen(progpath); 549 progpath_len = strlen(progpath);
361 if (l > progpath_len && !strcmp(program+l-progpath_len,progpath)) { 550 if (l > progpath_len && !strcmp(program + l - progpath_len, progpath))
551 {
362 s=g_strdup(program); 552 s = g_strdup(program);
363 s[l-progpath_len]='\0'; 553 s[l - progpath_len] = '\0';
364 if (strcmp(s, PREFIX)) 554 if (strcmp(s, PREFIX))
365 { 555 {
366 // printf("setting '%s' to '%s'\n", "NAVIT_PREFIX", s); 556 // printf("setting '%s' to '%s'\n", "NAVIT_PREFIX", s);
367 } 557 }
368 setenv("NAVIT_PREFIX", s, 0); 558 setenv("NAVIT_PREFIX", s, 0);
369 g_free(s); 559 g_free(s);
560 }
370 } else 561 else
371 setenv("NAVIT_PREFIX", PREFIX, 0); 562 setenv("NAVIT_PREFIX", PREFIX, 0);
372 } 563 }
373#ifdef HAVE_API_ANDROID 564#ifdef HAVE_API_ANDROID
374 main_setup_environment(3); 565 main_setup_environment(3);
375#else 566#else
378 } 569 }
379 570
380#else /* _WIN32 || _WIN32_WCE */ 571#else /* _WIN32 || _WIN32_WCE */
381 if (!getenv("NAVIT_PREFIX")) 572 if (!getenv("NAVIT_PREFIX"))
382 { 573 {
383 char filename[MAX_PATH + 1], 574 char filename[MAX_PATH + 1],
384 *end; 575 *end;
385 576
386 *filename = '\0'; 577 *filename = '\0';
387#ifdef _UNICODE /* currently for wince */ 578#ifdef _UNICODE /* currently for wince */
388 if (GetModuleFileNameW(NULL, wfilename, MAX_PATH)) 579 if (GetModuleFileNameW(NULL, wfilename, MAX_PATH))
389 { 580 {
390 wcstombs(filename, wfilename, MAX_PATH); 581 wcstombs(filename, wfilename, MAX_PATH);
391#else 582#else
392 if (GetModuleFileName(NULL, filename, MAX_PATH)) 583 if (GetModuleFileName(NULL, filename, MAX_PATH))
393 { 584 {
394#endif 585#endif
395 end = strrchr(filename, L'\\'); /* eliminate the file name which is on the right side */ 586 end = strrchr(filename, L'\\'); /* eliminate the file name which is on the right side */
396 if(end) 587 if(end)
397 *end = '\0'; 588 *end = '\0';
589 }
590 setenv("NAVIT_PREFIX", filename, 0);
398 } 591 }
399 setenv("NAVIT_PREFIX", filename, 0);
400 }
401 if (!getenv("HOME")) 592 if (!getenv("HOME"))
402 setenv("HOME", getenv("NAVIT_PREFIX"), 0); 593 setenv("HOME", getenv("NAVIT_PREFIX"), 0);
403 main_setup_environment(2); 594 main_setup_environment(2);
404#endif /* _WIN32 || _WIN32_WCE */ 595#endif /* _WIN32 || _WIN32_WCE */
405 596
406 if (getenv("LC_ALL")) 597 if (getenv("LC_ALL"))
407 dbg(0,"Warning: LC_ALL is set, this might lead to problems (e.g. strange positions from GPS)\n"); 598 dbg(0, "Warning: LC_ALL is set, this might lead to problems (e.g. strange positions from GPS)\n");
408 s = getenv("NAVIT_WID"); 599 s = getenv("NAVIT_WID");
409 if (s) { 600 if (s)
601 {
410 setenv("SDL_WINDOWID", s, 0); 602 setenv("SDL_WINDOWID", s, 0);
411 } 603 }
412} 604}
413 605
414void
415main_init_nls(void) 606void main_init_nls(void)
416{ 607{
417#ifdef ENABLE_NLS 608#ifdef ENABLE_NLS
418#ifdef FORCE_LOCALE 609#ifdef FORCE_LOCALE
419#define STRINGIFY2(x) #x 610#define STRINGIFY2(x) #x
420#define STRINGIFY(x) STRINGIFY2(x) 611#define STRINGIFY(x) STRINGIFY2(x)

Legend:
Removed from v.30  
changed lines
  Added in v.31

   
Visit the ZANavi Wiki