summaryrefslogtreecommitdiff
path: root/src/ai/ai_scanner.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2011-09-08 09:55:04 +0000
committerrubidium <rubidium@openttd.org>2011-09-08 09:55:04 +0000
commit62777dbd84f380b701e7be8b6aac86af9a511de4 (patch)
tree698bb9ce6358115bbd58f5796f47e21daa19d87a /src/ai/ai_scanner.cpp
parent414c397000935162df4641dbe0c056b39d32205e (diff)
downloadopenttd-62777dbd84f380b701e7be8b6aac86af9a511de4.tar.xz
(svn r22905) -Fix [FS#4753] (r22836): the name of the tar was removed from the AI filenames, so record it differently. Also removes some of the hackery to get the tar's filename
Diffstat (limited to 'src/ai/ai_scanner.cpp')
-rw-r--r--src/ai/ai_scanner.cpp24
1 files changed, 9 insertions, 15 deletions
diff --git a/src/ai/ai_scanner.cpp b/src/ai/ai_scanner.cpp
index 100147f5a..8b30e8c9f 100644
--- a/src/ai/ai_scanner.cpp
+++ b/src/ai/ai_scanner.cpp
@@ -423,15 +423,8 @@ static bool IsSameAI(const ContentInfo *ci, bool md5sum, AIFileInfo *info)
if (!md5sum) return true;
AIFileChecksumCreator checksum;
- char path[MAX_PATH];
- strecpy(path, info->GetMainScript(), lastof(path));
- /* There'll always be at least 2 path separator characters in an AI's
- * main script name as the search algorithm requires the main script to
- * be in a subdirectory of the AI directory; so ai/<path>/main.nut. */
- *strrchr(path, PATHSEPCHAR) = '\0';
- *strrchr(path, PATHSEPCHAR) = '\0';
- TarList::iterator iter = _tar_list.find(path);
-
+ const char *tar_filename = info->GetTarFile();
+ TarList::iterator iter = _tar_list.find(tar_filename);
if (iter != _tar_list.end()) {
/* The main script is in a tar file, so find all files that
* are in the same tar and add them to the MD5 checksumming. */
@@ -444,14 +437,15 @@ static bool IsSameAI(const ContentInfo *ci, bool md5sum, AIFileInfo *info)
const char *ext = strrchr(tar->first.c_str(), '.');
if (ext == NULL || strcasecmp(ext, ".nut") != 0) continue;
- /* Create the full path name, */
- seprintf(path, lastof(path), "%s%c%s", tar->second.tar_filename, PATHSEPCHAR, tar->first.c_str());
- checksum.AddFile(path, 0, NULL);
+ checksum.AddFile(tar->first.c_str(), 0, tar_filename);
}
} else {
- /* Add the path sep char back when searching a directory, so we are
- * in the actual directory. */
- path[strlen(path)] = PATHSEPCHAR;
+ char path[MAX_PATH];
+ strecpy(path, info->GetMainScript(), lastof(path));
+ /* There'll always be at least 1 path separator character in an AI's
+ * main script name as the search algorithm requires the main script to
+ * be in a subdirectory of the AI directory; so ai/<path>/main.nut. */
+ *strrchr(path, PATHSEPCHAR) = '\0';
checksum.Scan(".nut", path);
}