diff options
| author | Jasper St. Pierre <jstpierre@mecheye.net> | 2013-12-07 15:14:29 -0500 |
|---|---|---|
| committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2013-12-31 14:03:19 -0500 |
| commit | 34692ab826abc8f8faa61bdb2280b742424528f1 (patch) | |
| tree | b0eedc645badbea316ff59c125eaf808b28777ec /Source/Core/Common/SettingsHandler.cpp | |
| parent | 43e618682e8093602fc83dfa902ee7ae3fd3a4f6 (diff) | |
Remove unnecessary Src/ folders
Diffstat (limited to 'Source/Core/Common/SettingsHandler.cpp')
| -rw-r--r-- | Source/Core/Common/SettingsHandler.cpp | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/Source/Core/Common/SettingsHandler.cpp b/Source/Core/Common/SettingsHandler.cpp new file mode 100644 index 0000000000..555cf0eae9 --- /dev/null +++ b/Source/Core/Common/SettingsHandler.cpp @@ -0,0 +1,126 @@ +// Copyright 2013 Dolphin Emulator Project +// Licensed under GPLv2 +// Refer to the license.txt file included. + +// Thanks to Treeki for writing the original class - 29/01/2012 + +#include "CommonPaths.h" +#include "Timer.h" +#include "SettingsHandler.h" + +#include <time.h> + +#ifdef _WIN32 +#include <Windows.h> +#include <mmsystem.h> +#include <sys/timeb.h> +#else +#include <sys/time.h> +#endif + +SettingsHandler::SettingsHandler() +{ + Reset(); +} + +const u8* SettingsHandler::GetData() const +{ + return m_buffer; +} + +const std::string SettingsHandler::GetValue(const std::string key) +{ + std::string delim = std::string("\r\n"); + std::string toFind = delim + key + "="; + size_t found = decoded.find(toFind); + + if (found != decoded.npos) + { + size_t delimFound = decoded.find(delim, found + toFind.length()); + if (delimFound == decoded.npos) + delimFound = decoded.length() - 1; + return decoded.substr(found + toFind.length(), delimFound - (found + toFind.length())); + } + else + { + toFind = key + "="; + found = decoded.find(toFind); + if (found == 0) + { + size_t delimFound = decoded.find(delim, found + toFind.length()); + if (delimFound == decoded.npos) + delimFound = decoded.length() - 1; + return decoded.substr(found + toFind.length(), delimFound - (found + toFind.length())); + } + } + + return ""; +} + +void SettingsHandler::Decrypt() +{ + const u8 *str = m_buffer; + while (*str != 0) + { + if (m_position >= SETTINGS_SIZE) + return; + decoded.push_back((u8)(m_buffer[m_position] ^ m_key)); + m_position++; + str++; + m_key = (m_key >> 31) | (m_key << 1); + } +} + +void SettingsHandler::Reset() +{ + decoded = ""; + m_position = 0; + m_key = INITIAL_SEED; + memset(m_buffer, 0, SETTINGS_SIZE); +} + +void SettingsHandler::AddSetting(const char *key, const char *value) +{ + while (*key != 0) + { + WriteByte(*key); + key++; + } + + WriteByte('='); + + while (*value != 0) + { + WriteByte(*value); + value++; + } + + WriteByte(13); + WriteByte(10); +} + +void SettingsHandler::WriteByte(u8 b) +{ + if (m_position >= SETTINGS_SIZE) + return; + + m_buffer[m_position] = b ^ m_key; + m_position++; + m_key = (m_key >> 31) | (m_key << 1); +} + +const std::string SettingsHandler::generateSerialNumber() +{ + time_t rawtime; + tm *timeinfo; + char buffer[12]; + char serialNumber[12]; + + time(&rawtime); + timeinfo = localtime(&rawtime); + strftime(buffer, 11, "%j%H%M%S", timeinfo); + + snprintf(serialNumber, 11, "%s%i", buffer, (Common::Timer::GetTimeMs() >> 1) & 0xF); + serialNumber[10] = 0; + return std::string(serialNumber); +} |
