summaryrefslogtreecommitdiff
path: root/src/script
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/script
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/script')
-rw-r--r--src/script/script_info.cpp3
-rw-r--r--src/script/script_info.hpp7
-rw-r--r--src/script/script_scanner.cpp8
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) {