@@ -77,10 +77,29 @@ static inline void check_error(int cond, const char* str) {
7777 }
7878}
7979
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+
8098
8199int main (int argc , char * * argv ) {
82100
83101 const char * language = 0 ;
102+ char langbuf [260 ];
84103 #if defined(_WIN32 ) || defined(_WIN64 )
85104 const char english [] = "lang/english.txt" ;
86105 const char chinese [] = "lang/chinese.txt" ;
@@ -90,37 +109,40 @@ int main(int argc, char** argv) {
90109
91110 setlocale (LC_ALL , "" );
92111
112+ DWORD length = GetModuleFileName (NULL , langbuf , 260 );
113+ length = strip_filename (langbuf , '\\' );
93114 switch (GetUserDefaultUILanguage () | 0xFF ) { // first byte is lang id
94115 case 0x09 : // english
95- language = "lang/english.txt" ;
116+ language = "/ lang/english.txt" ;
96117 break ;
97118 case 0x04 : // chinese
98- language = "lang/chinese.txt" ;
119+ language = "/ lang/chinese.txt" ;
99120 break ;
100121 case 0x11 : // japanese
101- language = "lang/japanese.txt" ;
122+ language = "/ lang/japanese.txt" ;
102123 break ;
103124 case 0x19 : // russian
104- language = "lang/russian.txt" ;
125+ language = "/ lang/russian.txt" ;
105126 break ;
106127 case 0x16 : // portuguese
107- language = "lang/portuguese.txt" ;
128+ language = "/ lang/portuguese.txt" ;
108129 break ;
109130 case 0x0A : // spanish
110- language = "lang/spanish.txt" ;
131+ language = "/ lang/spanish.txt" ;
111132 break ;
112133 default : // needs translation >:(
113- language = "lang/english.txt" ;
134+ language = "/ lang/english.txt" ;
114135 break ;
115136 }
137+ strcat (langbuf , language );
116138 #else
117- language = "lang/english.txt" ;
139+ language = "/ lang/english.txt" ;
118140 #endif
119141
120- language = "lang/english.txt" ;
142+ language = "/ lang/english.txt" ;
121143
122144 // load language file
123- lang = langfile_load (language );
145+ lang = langfile_load (langbuf );
124146 if (lang == 0 ) {
125147 puts ("Failed to load lang file!" );
126148 return EXIT_FAILURE ;
@@ -280,7 +302,6 @@ int main(int argc, char** argv) {
280302 }
281303
282304 #if defined(_WIN32 ) || defined(_WIN64 )
283- printf ("Loading %s\n" , ARGS .luaver == 0 ? DEFAULT_LUA : luastr );
284305 HMODULE luacxt ;
285306 luacxt = LoadLibrary (ARGS .luaver == 0 ? DEFAULT_LUA : luastr );
286307 check_error (luacxt == 0 , _ ("LC_DLL_MIA" ));
0 commit comments