2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-08 18:24:55 +00:00

Various bug fixes

This commit is contained in:
Jack Andersen
2017-10-27 00:10:08 -10:00
parent 5e99ee1d95
commit a2c5d891b5
5 changed files with 40 additions and 14 deletions

View File

@@ -21,10 +21,27 @@ class ToolPackage final : public ToolBase
m_selectedItems.push_back(path);
}
void CheckFile(const hecl::ProjectPath& path)
{
if (!hecl::StrCmp(path.getLastComponent(), _S("!world.blend")))
AddSelectedItem(path);
else if (!hecl::StrCmp(path.getLastComponent(), _S("!original_ids.yaml")))
{
auto pathComps = path.getPathComponents();
if (pathComps.size() == 2 && pathComps[0] != _S("out"))
AddSelectedItem(path);
}
}
void FindSelectedItems(const hecl::ProjectPath& path, bool checkGeneral)
{
size_t origSize = m_selectedItems.size();
if (path.isFile())
{
CheckFile(path);
return;
}
size_t origSize = m_selectedItems.size();
hecl::DirectoryEnumerator dEnum(path.getAbsolutePath(),
hecl::DirectoryEnumerator::Mode::DirsThenFilesSorted, false, false, true);
for (const auto& ent : dEnum)
@@ -32,13 +49,12 @@ class ToolPackage final : public ToolBase
hecl::ProjectPath childPath(path, ent.m_name);
if (ent.m_isDir)
FindSelectedItems(childPath, checkGeneral && childPath.getPathComponents().size() <= 2);
else if (ent.m_name == _S("!world.blend"))
AddSelectedItem(childPath);
else
CheckFile(childPath);
}
/* Directory with 2 components, not "Shared" and no nested !world.blend files == General PAK */
if (path.getPathType() == hecl::ProjectPath::Type::Directory && checkGeneral &&
origSize == m_selectedItems.size())
/* Directory with 2 components not "Shared" and no nested !world.blend files == General PAK */
if (checkGeneral && origSize == m_selectedItems.size())
{
auto pathComps = path.getPathComponents();
if (pathComps.size() == 2 && pathComps[0] != _S("out") && pathComps[1] != _S("Shared"))

2
hecl/extern/athena vendored

Submodule hecl/extern/athena updated: e3ce09d914...0fa861b708

2
hecl/extern/boo vendored

Submodule hecl/extern/boo updated: d1b980b529...3c207386e7

View File

@@ -377,6 +377,15 @@ static inline int StrCmp(const SystemChar* str1, const SystemChar* str2)
#endif
}
static inline int StrNCmp(const SystemChar* str1, const SystemChar* str2, size_t count)
{
#if HECL_UCS2
return wcsncmp(str1, str2, count);
#else
return strncmp(str1, str2, count);
#endif
}
static inline int StrCaseCmp(const SystemChar* str1, const SystemChar* str2)
{
#if HECL_UCS2
@@ -1239,7 +1248,7 @@ public:
size_t len = StrLen(test);
if (len > str.size())
return false;
return !StrCmp(str.data(), test);
return !StrNCmp(str.data(), test, len);
}
static bool EndsWith(const SystemString& str, const SystemChar* test)
@@ -1247,7 +1256,7 @@ public:
size_t len = StrLen(test);
if (len > str.size())
return false;
return !StrCmp(&*(str.end() - len), test);
return !StrNCmp(&*(str.end() - len), test, len);
}
static std::string TrimWhitespace(const std::string& str)
@@ -1267,7 +1276,7 @@ public:
size_t len = strlen(test);
if (len > str.size())
return false;
return !strcmp(str.data(), test);
return !strncmp(str.data(), test, len);
}
static bool EndsWith(const std::string& str, const char* test)
@@ -1275,7 +1284,7 @@ public:
size_t len = strlen(test);
if (len > str.size())
return false;
return !strcmp(&*(str.end() - len), test);
return !strncmp(&*(str.end() - len), test, len);
}
static SystemString TrimWhitespace(const SystemString& str)

View File

@@ -98,7 +98,7 @@ static int Read(int fd, void* buf, size_t size)
}
else
return ret;
} while (intrCount < 3);
} while (intrCount < 1000);
return -1;
}
@@ -117,7 +117,7 @@ static int Write(int fd, const void* buf, size_t size)
}
else
return ret;
} while (intrCount < 3);
} while (intrCount < 1000);
return -1;
}
@@ -127,6 +127,7 @@ uint32_t BlenderConnection::_readStr(char* buf, uint32_t bufSz)
int ret = Read(m_readpipe[0], &readLen, 4);
if (ret < 4)
{
BlenderLog.report(logvisor::Error, "Pipe error %d %s", ret, strerror(errno));
_blenderDied();
return 0;
}