@@ -77,10 +77,29 @@ static inline void check_error(int cond, const char* str) {
77
77
}
78
78
}
79
79
80
+ static inline size_t strip_filename (char * buffer , char delim )
81
+ {
82
+ char * iter = buffer ;
83
+ char * last_slash = 0 ;
84
+ while (* iter ++ != 0 )
85
+ {
86
+ if (* iter == delim )
87
+ last_slash = iter ;
88
+ }
89
+ iter = last_slash ;
90
+ while (* iter != 0 )
91
+ {
92
+ * iter = 0 ;
93
+ iter ++ ;
94
+ }
95
+ return strlen (buffer );
96
+ }
97
+
80
98
81
99
int main (int argc , char * * argv ) {
82
100
83
101
const char * language = 0 ;
102
+ char langbuf [260 ];
84
103
#if defined(_WIN32 ) || defined(_WIN64 )
85
104
const char english [] = "lang/english.txt" ;
86
105
const char chinese [] = "lang/chinese.txt" ;
@@ -90,37 +109,40 @@ int main(int argc, char** argv) {
90
109
91
110
setlocale (LC_ALL , "" );
92
111
112
+ DWORD length = GetModuleFileName (NULL , langbuf , 260 );
113
+ length = strip_filename (langbuf , '\\' );
93
114
switch (GetUserDefaultUILanguage () | 0xFF ) { // first byte is lang id
94
115
case 0x09 : // english
95
- language = "lang/english.txt" ;
116
+ language = "/ lang/english.txt" ;
96
117
break ;
97
118
case 0x04 : // chinese
98
- language = "lang/chinese.txt" ;
119
+ language = "/ lang/chinese.txt" ;
99
120
break ;
100
121
case 0x11 : // japanese
101
- language = "lang/japanese.txt" ;
122
+ language = "/ lang/japanese.txt" ;
102
123
break ;
103
124
case 0x19 : // russian
104
- language = "lang/russian.txt" ;
125
+ language = "/ lang/russian.txt" ;
105
126
break ;
106
127
case 0x16 : // portuguese
107
- language = "lang/portuguese.txt" ;
128
+ language = "/ lang/portuguese.txt" ;
108
129
break ;
109
130
case 0x0A : // spanish
110
- language = "lang/spanish.txt" ;
131
+ language = "/ lang/spanish.txt" ;
111
132
break ;
112
133
default : // needs translation >:(
113
- language = "lang/english.txt" ;
134
+ language = "/ lang/english.txt" ;
114
135
break ;
115
136
}
137
+ strcat (langbuf , language );
116
138
#else
117
- language = "lang/english.txt" ;
139
+ language = "/ lang/english.txt" ;
118
140
#endif
119
141
120
- language = "lang/english.txt" ;
142
+ language = "/ lang/english.txt" ;
121
143
122
144
// load language file
123
- lang = langfile_load (language );
145
+ lang = langfile_load (langbuf );
124
146
if (lang == 0 ) {
125
147
puts ("Failed to load lang file!" );
126
148
return EXIT_FAILURE ;
@@ -280,7 +302,6 @@ int main(int argc, char** argv) {
280
302
}
281
303
282
304
#if defined(_WIN32 ) || defined(_WIN64 )
283
- printf ("Loading %s\n" , ARGS .luaver == 0 ? DEFAULT_LUA : luastr );
284
305
HMODULE luacxt ;
285
306
luacxt = LoadLibrary (ARGS .luaver == 0 ? DEFAULT_LUA : luastr );
286
307
check_error (luacxt == 0 , _ ("LC_DLL_MIA" ));
0 commit comments