src/fileio.cpp
branchgamebalance
changeset 9908 0fa543611bbe
parent 9895 7bd07f43b0e3
child 9912 1ac8aac92385
equal deleted inserted replaced
9907:3b068c3a1c74 9908:0fa543611bbe
   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