NOISSUE fix log-related legacy instance crash and show hidden log files

This commit is contained in:
Petr Mrázek 2015-08-19 02:04:56 +02:00
parent 96fdaebb5c
commit 5bc29b06a9
6 changed files with 21 additions and 4 deletions

View File

@ -56,12 +56,11 @@ public:
values.append(new NotesPage(legacy.get()));
values.append(new ScreenshotsPage(PathCombine(legacy->minecraftRoot(), "screenshots")));
values.append(new InstanceSettingsPage(legacy.get()));
values.append(new OtherLogsPage(legacy->minecraftRoot(), inst->getLogFileMatcher()));
}
auto logMatcher = inst->getLogFileMatcher();
if(logMatcher)
{
values.append(new OtherLogsPage(onesix->minecraftRoot(), logMatcher));
values.append(new OtherLogsPage(inst->getLogFileRoot(), logMatcher));
}
return values;
}

View File

@ -169,6 +169,11 @@ public:
*/
virtual IPathMatcher::Ptr getLogFileMatcher() = 0;
/*!
* Returns the root folder to use for looking up log files
*/
virtual QString getLogFileRoot() = 0;
/*!
* does any necessary cleanups after the instance finishes. also runs before\
* TODO: turn into a task that can run asynchronously

View File

@ -74,4 +74,8 @@ public:
{
return nullptr;
}
virtual QString getLogFileRoot()
{
return instanceRoot();
}
};

View File

@ -86,11 +86,11 @@ QStringList RecursiveFileSystemWatcher::scanRecursive(const QDir &directory)
{
return {};
}
for (const QString &dir : directory.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
for (const QString &dir : directory.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden))
{
ret.append(scanRecursive(directory.absoluteFilePath(dir)));
}
for (const QString &file : directory.entryList(QDir::Files))
for (const QString &file : directory.entryList(QDir::Files | QDir::Hidden))
{
auto relPath = m_root.relativeFilePath(directory.absoluteFilePath(file));
if (m_matcher->matches(relPath))

View File

@ -284,7 +284,14 @@ IPathMatcher::Ptr MinecraftInstance::getLogFileMatcher()
auto combined = std::make_shared<MultiMatcher>();
combined->add(std::make_shared<RegexpMatcher>(".*\\.log(\\.[0-9]*)?(\\.gz)?$"));
combined->add(std::make_shared<RegexpMatcher>("crash-.*\\.txt"));
combined->add(std::make_shared<RegexpMatcher>("IDMap dump.*\\.txt$"));
combined->add(std::make_shared<RegexpMatcher>("ModLoader\\.txt(\\..*)?$"));
return combined;
}
QString MinecraftInstance::getLogFileRoot()
{
return minecraftRoot();
}
#include "MinecraftInstance.moc"

View File

@ -46,6 +46,8 @@ public:
virtual IPathMatcher::Ptr getLogFileMatcher() override;
virtual QString getLogFileRoot() override;
protected:
QMap<QString, QString> createCensorFilterFromSession(AuthSessionPtr session);
};