unix.c
changeset 437 0d279780f819
parent 410 0efd84450b01
child 507 04b5403aaf6b
equal deleted inserted replaced
436:02955496f740 437:0d279780f819
    43 	int r;
    43 	int r;
    44 
    44 
    45 	if (_savegame_sort_order < 2) // sort by date
    45 	if (_savegame_sort_order < 2) // sort by date
    46     r = da->mtime < db->mtime ? -1 : 1;
    46     r = da->mtime < db->mtime ? -1 : 1;
    47 	else
    47 	else
    48 		r = strcmp(da->title[0] ? da->title : da->name, db->title[0] ? db->title : db->name);
    48 		r = strcasecmp(da->title[0] ? da->title : da->name, db->title[0] ? db->title : db->name);
    49 
    49 
    50 	if (_savegame_sort_order & 1) r = -r;
    50 	if (_savegame_sort_order & 1) r = -r;
    51 	return r;
    51 	return r;
    52 }
    52 }
    53 
    53 
   122 		while ((dirent = readdir(dir))) {
   122 		while ((dirent = readdir(dir))) {
   123 			sprintf (filename, "%s/%s", _fios_path, dirent->d_name);
   123 			sprintf (filename, "%s/%s", _fios_path, dirent->d_name);
   124 			if (!stat(filename, &sb)) {
   124 			if (!stat(filename, &sb)) {
   125 				if (!S_ISDIR(sb.st_mode)) {
   125 				if (!S_ISDIR(sb.st_mode)) {
   126 					char *t = strrchr(dirent->d_name, '.');
   126 					char *t = strrchr(dirent->d_name, '.');
   127 					if (t && !strcmp(t, ".sav")) { // OpenTTD
   127 					if (t && !strcasecmp(t, ".sav")) { // OpenTTD
   128 						*t = 0; // cut extension
   128 						*t = 0; // cut extension
   129 						fios = FiosAlloc();
   129 						fios = FiosAlloc();
   130 						fios->type = FIOS_TYPE_FILE;
   130 						fios->type = FIOS_TYPE_FILE;
   131 						fios->mtime = sb.st_mtime;
   131 						fios->mtime = sb.st_mtime;
   132 						fios->title[0] = 0;
   132 						fios->title[0] = 0;
   133 						ttd_strlcpy(fios->name, dirent->d_name, sizeof(fios->name));
   133 						ttd_strlcpy(fios->name, dirent->d_name, sizeof(fios->name));
   134 					} else if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO) {
   134 					} else if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO) {
   135 						int ext = 0; // start of savegame extensions in _old_extensions[]
   135 						int ext = 0; // start of savegame extensions in _old_extensions[]
   136 						if (t && ((ext++, !strcmp(t, ".ss1")) || (ext++, !strcmp(t, ".sv1")) || (ext++, !strcmp(t, ".sv2"))) ) { // TTDLX(Patch)
   136 						if (t && ((ext++, !strcasecmp(t, ".ss1")) || (ext++, !strcasecmp(t, ".sv1")) || (ext++, !strcasecmp(t, ".sv2"))) ) { // TTDLX(Patch)
   137 							*t = 0; // cut extension
   137 							*t = 0; // cut extension
   138 							fios = FiosAlloc();
   138 							fios = FiosAlloc();
   139 							fios->old_extension = ext-1;
   139 							fios->old_extension = ext-1;
   140 							fios->type = FIOS_TYPE_OLDFILE;
   140 							fios->type = FIOS_TYPE_OLDFILE;
   141 							fios->mtime = sb.st_mtime;
   141 							fios->mtime = sb.st_mtime;
   203 		while ((dirent = readdir(dir))) {
   203 		while ((dirent = readdir(dir))) {
   204 			sprintf (filename, "%s/%s", _fios_path, dirent->d_name);
   204 			sprintf (filename, "%s/%s", _fios_path, dirent->d_name);
   205 			if (!stat(filename, &sb)) {
   205 			if (!stat(filename, &sb)) {
   206 				if (!S_ISDIR(sb.st_mode)) {
   206 				if (!S_ISDIR(sb.st_mode)) {
   207 					char *t = strrchr(dirent->d_name, '.');
   207 					char *t = strrchr(dirent->d_name, '.');
   208 					if (t && !strcmp(t, ".scn")) { // OpenTTD
   208 					if (t && !strcasecmp(t, ".scn")) { // OpenTTD
   209 						*t = 0; // cut extension
   209 						*t = 0; // cut extension
   210 						fios = FiosAlloc();
   210 						fios = FiosAlloc();
   211 						fios->type = FIOS_TYPE_SCENARIO;
   211 						fios->type = FIOS_TYPE_SCENARIO;
   212 						fios->mtime = sb.st_mtime;
   212 						fios->mtime = sb.st_mtime;
   213 						fios->title[0] = 0;
   213 						fios->title[0] = 0;
   214 						ttd_strlcpy(fios->name, dirent->d_name, sizeof(fios->name)-3);
   214 						ttd_strlcpy(fios->name, dirent->d_name, sizeof(fios->name)-3);
   215 					} else if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO || mode == SLD_NEW_GAME) {
   215 					} else if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO || mode == SLD_NEW_GAME) {
   216 						int ext = 3; // start of scenario extensions in _old_extensions[]
   216 						int ext = 3; // start of scenario extensions in _old_extensions[]
   217 						if (t && ((ext++, !strcmp(t, ".sv0")) || (ext++, !strcmp(t, ".ss0"))) ) { // TTDLX(Patch)
   217 						if (t && ((ext++, !strcasecmp(t, ".sv0")) || (ext++, !strcasecmp(t, ".ss0"))) ) { // TTDLX(Patch)
   218 							*t = 0; // cut extension
   218 							*t = 0; // cut extension
   219 							fios = FiosAlloc();
   219 							fios = FiosAlloc();
   220 							fios->old_extension = ext-1;
   220 							fios->old_extension = ext-1;
   221 							fios->type = FIOS_TYPE_OLD_SCENARIO;
   221 							fios->type = FIOS_TYPE_OLD_SCENARIO;
   222 							fios->mtime = sb.st_mtime;
   222 							fios->mtime = sb.st_mtime;