(svn r5763) - Cleanup: Move the now unified GetLanguageList and comparator function to strings.c where it belongs.
authorDarkvater
Fri, 04 Aug 2006 23:45:20 +0000
changeset 4219 4211284f29ec
parent 4218 384c7451e3bb
child 4220 86ca889037b3
(svn r5763) - Cleanup: Move the now unified GetLanguageList and comparator function to strings.c where it belongs.
os2.c
strings.c
unix.c
win32.c
--- a/os2.c	Fri Aug 04 23:41:13 2006 +0000
+++ b/os2.c	Fri Aug 04 23:45:20 2006 +0000
@@ -424,34 +424,6 @@
 	return access(filename, 0) == 0;
 }
 
-static int LanguageCompareFunc(const void *a, const void *b)
-{
-	return strcmp(*(const char* const *)a, *(const char* const *)b);
-}
-
-int GetLanguageList(char **languages, int max)
-{
-	DIR *dir;
-	struct dirent *dirent;
-	int num = 0;
-
-	dir = opendir(_path.lang_dir);
-	if (dir != NULL) {
-		while ((dirent = readdir(dir)) != NULL) {
-			char *t = strrchr(dirent->d_name, '.');
-
-			if (t != NULL && strcmp(t, ".lng") == 0) {
-				languages[num++] = strdup(dirent->d_name);
-				if (num == max) break;
-			}
-		}
-		closedir(dir);
-	}
-
-	qsort(languages, num, sizeof(char*), LanguageCompareFunc);
-	return num;
-}
-
 static void ChangeWorkingDirectory(char *exe)
 {
 	char *s = strrchr(exe, '\\');
--- a/strings.c	Fri Aug 04 23:41:13 2006 +0000
+++ b/strings.c	Fri Aug 04 23:45:20 2006 +0000
@@ -20,6 +20,14 @@
 #include "table/landscape_const.h"
 #include "music.h"
 
+#ifdef WIN32
+/* for opendir/readdir/closedir */
+# include "fios.h"
+#else
+# include <sys/types.h>
+# include <dirent.h>
+#endif /* WIN32 */
+
 char _userstring[128];
 
 static char *StationGetSpecialString(char *buff, int x);
@@ -1168,6 +1176,34 @@
 	return getenv("LANG");
 }
 
+static int CDECL LanguageCompareFunc(const void *a, const void *b)
+{
+	return strcmp(*(const char* const *)a, *(const char* const *)b);
+}
+
+static int GetLanguageList(char **languages, int max)
+{
+	DIR *dir;
+	struct dirent *dirent;
+	int num = 0;
+
+	dir = opendir(_path.lang_dir);
+	if (dir != NULL) {
+		while ((dirent = readdir(dir)) != NULL) {
+			char *t = strrchr(dirent->d_name, '.');
+
+			if (t != NULL && strcmp(t, ".lng") == 0) {
+				languages[num++] = strdup(dirent->d_name);
+				if (num == max) break;
+			}
+		}
+		closedir(dir);
+	}
+
+	qsort(languages, num, sizeof(char*), LanguageCompareFunc);
+	return num;
+}
+
 // make a list of the available language packs. put the data in _dynlang struct.
 void InitializeLanguagePacks(void)
 {
--- a/unix.c	Fri Aug 04 23:41:13 2006 +0000
+++ b/unix.c	Fri Aug 04 23:45:20 2006 +0000
@@ -414,34 +414,6 @@
 	return access(filename, 0) == 0;
 }
 
-static int LanguageCompareFunc(const void *a, const void *b)
-{
-	return strcmp(*(const char* const *)a, *(const char* const *)b);
-}
-
-int GetLanguageList(char **languages, int max)
-{
-	DIR *dir;
-	struct dirent *dirent;
-	int num = 0;
-
-	dir = opendir(_path.lang_dir);
-	if (dir != NULL) {
-		while ((dirent = readdir(dir)) != NULL) {
-			char *t = strrchr(dirent->d_name, '.');
-
-			if (t != NULL && strcmp(t, ".lng") == 0) {
-				languages[num++] = strdup(dirent->d_name);
-				if (num == max) break;
-			}
-		}
-		closedir(dir);
-	}
-
-	qsort(languages, num, sizeof(char*), LanguageCompareFunc);
-	return num;
-}
-
 #if defined(__BEOS__) || defined(__linux__)
 static void ChangeWorkingDirectory(char *exe)
 {
--- a/win32.c	Fri Aug 04 23:41:13 2006 +0000
+++ b/win32.c	Fri Aug 04 23:45:20 2006 +0000
@@ -1097,34 +1097,6 @@
 	return true;
 }
 
-static int CDECL LanguageCompareFunc(const void *a, const void *b)
-{
-	return strcmp(*(const char* const *)a, *(const char* const *)b);
-}
-
-int GetLanguageList(char **languages, int max)
-{
-	HANDLE hand;
-	int num = 0;
-	char filedir[MAX_PATH];
-	WIN32_FIND_DATA fd;
-	sprintf(filedir, "%s*.lng", _path.lang_dir);
-
-	hand = FindFirstFile(filedir, &fd);
-	if (hand != INVALID_HANDLE_VALUE) {
-		do {
-			if (!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) {
-				languages[num++] = strdup(fd.cFileName);
-				if (num == max) break;
-			}
-		} while (FindNextFile(hand, &fd));
-		FindClose(hand);
-	}
-
-	qsort(languages, num, sizeof(char*), LanguageCompareFunc);
-	return num;
-}
-
 static int ParseCommandLine(char *line, char **argv, int max_argc)
 {
 	int n = 0;