12 #include "../stdafx.h" 
   14 #include "../string_func.h" 
   15 #include "../settings_type.h" 
   17 #include "../script/squirrel.hpp" 
   21 #if defined(ENABLE_NETWORK) 
   22 #include "../network/network_content.h" 
   23 #include "../3rdparty/md5/md5.h" 
   24 #include "../tar_type.h" 
   27 #include "../safeguards.h" 
   36   if (tar_filename != NULL) {
 
   38     if (this->
tar_file == NULL) 
return false;
 
   62 ScriptScanner::ScriptScanner() :
 
   76 void ScriptScanner::Initialize(
const char *name)
 
   85 ScriptScanner::~ScriptScanner()
 
  105   ScriptInfoList::iterator it = this->
info_list.begin();
 
  106   for (; it != this->
info_list.end(); it++) {
 
  121   char script_original_name[1024];
 
  125   char script_name[1024];
 
  130     DEBUG(script, 0, 
"The script '%s' returned a string from GetShortName() which is not four characaters. Unable to load the script.", info->
GetName());
 
  147     DEBUG(script, 1, 
"Registering two scripts with the same name and version");
 
  150     DEBUG(script, 1, 
"The first is taking precedence.");
 
  173   ScriptInfoList::const_iterator it = list.begin();
 
  174   for (; it != list.end(); it++) {
 
  183 #if defined(ENABLE_NETWORK) 
  197     memset(this->md5sum, 0, 
sizeof(this->md5sum));
 
  201   virtual bool AddFile(
const char *filename, 
size_t basepath_length, 
const char *tar_filename)
 
  209     FILE *f = 
FioFOpenFile(filename, 
"rb", this->dir, &size);
 
  210     if (f == NULL) 
return false;
 
  213     while ((len = fread(buffer, 1, (size > 
sizeof(buffer)) ? 
sizeof(buffer) : size, f)) != 0 && size != 0) {
 
  215       checksum.Append(buffer, len);
 
  217     checksum.Finish(tmp_md5sum);
 
  222     for (uint i = 0; i < 
sizeof(md5sum); i++) this->md5sum[i] ^= tmp_md5sum[i];
 
  240   for (
int j = 0; j < 4 && *str != 
'\0'; j++, str++) 
id |= *str << (8 * j);
 
  243   if (!md5sum) 
return true;
 
  246   const char *tar_filename = info->
GetTarFile();
 
  247   TarList::iterator iter;
 
  248   if (tar_filename != NULL && (iter = _tar_list[dir].find(tar_filename)) != _tar_list[dir].end()) {
 
  251     TarFileList::iterator tar;
 
  252     FOR_ALL_TARS(tar, dir) {
 
  254       if (tar->second.tar_filename != iter->first) 
continue;
 
  257       const char *ext = strrchr(tar->first.c_str(), 
'.');
 
  258       if (ext == NULL || strcasecmp(ext, 
".nut") != 0) 
continue;
 
  260       checksum.
AddFile(tar->first.c_str(), 0, tar_filename);
 
  268     *strrchr(path, PATHSEPCHAR) = 
'\0';
 
  269     checksum.
Scan(
".nut", path);
 
  277   for (ScriptInfoList::iterator it = this->
info_list.begin(); it != this->
info_list.end(); it++) {
 
  278     if (
IsSameScript(ci, md5sum, (*it).second, this->GetDirectory())) 
return true;
 
  285   for (ScriptInfoList::iterator it = this->
info_list.begin(); it != this->
info_list.end(); it++) {
 
  286     if (
IsSameScript(ci, md5sum, (*it).second, this->GetDirectory())) 
return (*it).second->GetMainScript();