diff options
author | rubidium <rubidium@openttd.org> | 2011-09-08 09:55:04 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2011-09-08 09:55:04 +0000 |
commit | 62777dbd84f380b701e7be8b6aac86af9a511de4 (patch) | |
tree | 698bb9ce6358115bbd58f5796f47e21daa19d87a /src/script | |
parent | 414c397000935162df4641dbe0c056b39d32205e (diff) | |
download | openttd-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/script')
-rw-r--r-- | src/script/script_info.cpp | 3 | ||||
-rw-r--r-- | src/script/script_info.hpp | 7 | ||||
-rw-r--r-- | src/script/script_scanner.cpp | 8 |
3 files changed, 18 insertions, 0 deletions
diff --git a/src/script/script_info.cpp b/src/script/script_info.cpp index 152bb02f3..dc21e26f2 100644 --- a/src/script/script_info.cpp +++ b/src/script/script_info.cpp @@ -31,6 +31,7 @@ ScriptFileInfo::~ScriptFileInfo() free((void *)this->instance_name); free((void *)this->url); free(this->main_script); + free(this->tar_file); free(this->SQ_instance); } @@ -69,6 +70,8 @@ bool ScriptFileInfo::CheckMethod(const char *name) const } info->main_script = strdup(scanner->GetMainScript()); + const char *tar_name = scanner->GetTarFile(); + if (tar_name != NULL) info->tar_file = strdup(tar_name); /* Cache the data the info file gives us. */ if (!info->engine->CallStringMethodStrdup(*info->SQ_instance, "GetAuthor", &info->author, MAX_GET_OPS)) return SQ_ERROR; diff --git a/src/script/script_info.hpp b/src/script/script_info.hpp index 69af93768..ad30bf756 100644 --- a/src/script/script_info.hpp +++ b/src/script/script_info.hpp @@ -20,6 +20,7 @@ public: ScriptFileInfo() : SQ_instance(NULL), main_script(NULL), + tar_file(NULL), author(NULL), name(NULL), short_name(NULL), @@ -77,6 +78,11 @@ public: const char *GetMainScript() const { return this->main_script; } /** + * Get the filename of the tar the script is in. + */ + const char *GetTarFile() const { return this->tar_file; } + + /** * Check if a given method exists. */ bool CheckMethod(const char *name) const; @@ -91,6 +97,7 @@ protected: HSQOBJECT *SQ_instance; private: char *main_script; + char *tar_file; const char *author; const char *name; const char *short_name; diff --git a/src/script/script_scanner.cpp b/src/script/script_scanner.cpp index 75f4ba074..9a4988d68 100644 --- a/src/script/script_scanner.cpp +++ b/src/script/script_scanner.cpp @@ -23,6 +23,14 @@ bool ScriptScanner::AddFile(const char *filename, size_t basepath_length, const this->main_script = strdup(filename); if (this->main_script == NULL) return false; + free(this->tar_file); + if (tar_filename != NULL) { + this->tar_file = strdup(tar_filename); + if (this->tar_file == NULL) return false; + } else { + this->tar_file = NULL; + } + const char *end = this->main_script + strlen(this->main_script) + 1; char *p = strrchr(this->main_script, PATHSEPCHAR); if (p == NULL) { |