diff src/textfile_gui.cpp @ 19081:c4cc3952965b draft

(svn r23935) -Codechange: generalise GetTextfile
author rubidium <rubidium@openttd.org>
date Sun, 12 Feb 2012 10:51:43 +0000
parents 8cb1275f2bb3
children b64f37b0e118
line wrap: on
line diff
--- a/src/textfile_gui.cpp
+++ b/src/textfile_gui.cpp
@@ -192,3 +192,39 @@
 	this->hscroll->SetCount(this->max_length + WD_FRAMETEXT_LEFT + WD_FRAMETEXT_RIGHT);
 	this->hscroll->SetStepSize(10); // Speed up horizontal scrollbar
 }
+
+/**
+ * Search a textfile file next to the given content.
+ * @param type The type of the textfile to search for.
+ * @param dir The subdirectory to search in.
+ * @param filename The filename of the content to look for.
+ * @return The path to the textfile, \c NULL otherwise.
+ */
+const char *GetTextfile(TextfileType type, Subdirectory dir, const char *filename)
+{
+	static const char * const prefixes[] = {
+		"readme",
+		"changelog",
+		"license",
+	};
+	assert_compile(lengthof(prefixes) == TFT_END);
+
+	const char *prefix = prefixes[type];
+
+	if (filename == NULL) return NULL;
+
+	static char file_path[MAX_PATH];
+	strecpy(file_path, filename, lastof(file_path));
+
+	char *slash = strrchr(file_path, PATHSEPCHAR);
+	if (slash == NULL) return NULL;
+
+	seprintf(slash + 1, lastof(file_path), "%s_%s.txt", prefix, GetCurrentLanguageIsoCode());
+	if (FioCheckFileExists(file_path, dir)) return file_path;
+
+	seprintf(slash + 1, lastof(file_path), "%s_%.2s.txt", prefix, GetCurrentLanguageIsoCode());
+	if (FioCheckFileExists(file_path, dir)) return file_path;
+
+	seprintf(slash + 1, lastof(file_path), "%s.txt", prefix);
+	return FioCheckFileExists(file_path, dir) ? file_path : NULL;
+}