summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAl <gabriel.cortesi@outlook.com>2019-06-25 22:50:57 +0200
committerGitHub <noreply@github.com>2019-06-25 22:50:57 +0200
commitd683ee652c9bf15cb319c5783479917c2c6b7bd0 (patch)
tree395b65d903b229e5c13e01a894b7b7ffd66951d1 /src
parentc216442eb4368004055246222b7224769c37db82 (diff)
parentc3b57c90d1884afa6ec50c62216fdaaff483d06b (diff)
Merge pull request #773 from isanae/formatmessage-logging
Refactored FormatMessage() calls into formatSystemMessage()
Diffstat (limited to 'src')
-rw-r--r--src/settings.cpp61
1 files changed, 43 insertions, 18 deletions
diff --git a/src/settings.cpp b/src/settings.cpp
index 53dd32dc..b45912d4 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -81,6 +81,38 @@ private:
int m_SortRole;
};
+
+QString formatSystemMessage(DWORD id)
+{
+ wchar_t* message = nullptr;
+
+ const auto ret = FormatMessageW(
+ FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ id,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
+ reinterpret_cast<LPWSTR>(&message),
+ 0, NULL);
+
+ QString s;
+ const QString idString = QString("0x%1").arg(id, 0, 16);
+
+ if (ret == 0 || !message) {
+ s = idString;
+ } else {
+ s = QString("%1 (%2)")
+ .arg(QString::fromStdWString(message).trimmed())
+ .arg(idString);
+ }
+
+ LocalFree(message);
+
+ return s;
+}
+
+
Settings *Settings::s_Instance = nullptr;
@@ -217,12 +249,11 @@ QString Settings::deObfuscate(const QString key)
result = QString::fromWCharArray(charData, creds->CredentialBlobSize / sizeof(wchar_t));
CredFree(creds);
} else {
- if (GetLastError() != ERROR_NOT_FOUND) {
- wchar_t buffer[256];
- FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- buffer, (sizeof(buffer) / sizeof(wchar_t)), NULL);
- qCritical() << "Retrieving encrypted data failed:" << buffer;
+ const auto e = GetLastError();
+ if (e != ERROR_NOT_FOUND) {
+ qCritical().nospace()
+ << "Retrieving encrypted data failed: "
+ << formatSystemMessage(e);
}
}
delete[] keyData;
@@ -366,13 +397,8 @@ bool Settings::getNexusApiKey(QString &apiKey) const
bool Settings::setNexusApiKey(const QString& apiKey)
{
if (!obfuscate("APIKEY", apiKey)) {
- wchar_t buffer[256];
-
- FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- buffer, (sizeof(buffer) / sizeof(wchar_t)), NULL);
-
- qCritical() << "Storing API key failed:" << buffer;
+ const auto e = GetLastError();
+ qCritical().nospace() << "Storing API key failed: " << formatSystemMessage(e);
return false;
}
@@ -487,11 +513,10 @@ void Settings::setSteamLogin(QString username, QString password)
m_Settings.setValue("Settings/steam_username", username);
}
if (!obfuscate("steam_password", password)) {
- wchar_t buffer[256];
- FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- buffer, (sizeof(buffer) / sizeof(wchar_t)), NULL);
- qCritical() << "Storing or deleting password failed:" << buffer;
+ const auto e = GetLastError();
+ qCritical().nospace()
+ << "Storing or deleting password failed: "
+ << formatSystemMessage(e);
}
}