equal
deleted
inserted
replaced
168 |
168 |
169 #if defined(LIMITED_FDS) |
169 #if defined(LIMITED_FDS) |
170 FioFreeHandle(); |
170 FioFreeHandle(); |
171 #endif /* LIMITED_FDS */ |
171 #endif /* LIMITED_FDS */ |
172 f = FioFOpenFile(filename); |
172 f = FioFOpenFile(filename); |
173 if (f == NULL) error("Cannot open file '%s%s'", _paths.data_dir, filename); |
173 if (f == NULL) error("Cannot open file '%s'", filename); |
174 |
174 |
175 FioCloseFile(slot); // if file was opened before, close it |
175 FioCloseFile(slot); // if file was opened before, close it |
176 _fio.handles[slot] = f; |
176 _fio.handles[slot] = f; |
177 #if defined(LIMITED_FDS) |
177 #if defined(LIMITED_FDS) |
178 _fio.filename[slot] = filename; |
178 _fio.filename[slot] = filename; |
204 FILE *FioFOpenFile(const char *filename) |
204 FILE *FioFOpenFile(const char *filename) |
205 { |
205 { |
206 FILE *f; |
206 FILE *f; |
207 char buf[MAX_PATH]; |
207 char buf[MAX_PATH]; |
208 |
208 |
209 snprintf(buf, lengthof(buf), "%s%s", _paths.data_dir, filename); |
209 if (strrchr(filename, PATHSEPCHAR) == NULL) { |
|
210 snprintf(buf, lengthof(buf), "%s%s", _paths.data_dir, filename); |
|
211 } else { |
|
212 ttd_strlcpy(buf, filename, lengthof(buf)); |
|
213 } |
210 |
214 |
211 f = fopen(buf, "rb"); |
215 f = fopen(buf, "rb"); |
212 #if !defined(WIN32) |
216 #if !defined(WIN32) |
213 if (f == NULL) { |
217 if (f == NULL) { |
214 strtolower(buf + strlen(_paths.data_dir) - 1); |
218 strtolower(strrchr(buf, PATHSEPCHAR)); |
215 f = fopen(buf, "rb"); |
219 f = fopen(buf, "rb"); |
216 |
220 |
217 #if defined SECOND_DATA_DIR |
221 #if defined SECOND_DATA_DIR |
218 /* tries in the 2nd data directory */ |
222 /* tries in the 2nd data directory */ |
219 if (f == NULL) { |
223 if (f == NULL) { |
306 _paths.game_data_dir = MallocT<char>(MAX_PATH); |
310 _paths.game_data_dir = MallocT<char>(MAX_PATH); |
307 ttd_strlcpy(_paths.game_data_dir, GAME_DATA_DIR, MAX_PATH); |
311 ttd_strlcpy(_paths.game_data_dir, GAME_DATA_DIR, MAX_PATH); |
308 #if defined(SECOND_DATA_DIR) |
312 #if defined(SECOND_DATA_DIR) |
309 _paths.second_data_dir = MallocT<char>(MAX_PATH); |
313 _paths.second_data_dir = MallocT<char>(MAX_PATH); |
310 ttd_strlcpy(_paths.second_data_dir, SECOND_DATA_DIR, MAX_PATH); |
314 ttd_strlcpy(_paths.second_data_dir, SECOND_DATA_DIR, MAX_PATH); |
|
315 #else |
|
316 _paths.second_data_dir = NULL; |
311 #endif |
317 #endif |
312 |
318 |
313 #if defined(USE_HOMEDIR) |
319 #if defined(USE_HOMEDIR) |
314 const char *homedir = getenv("HOME"); |
320 const char *homedir = getenv("HOME"); |
315 |
321 |