diff options
author | edo9300 | 2019-02-13 21:02:02 +0100 |
---|---|---|
committer | edo9300 | 2019-02-13 21:02:02 +0100 |
commit | 82eda30cfd49a850da43ad7cd3806514f51db49d (patch) | |
tree | 72e410c20bda7950d9af2e6f56f3db18c098b00e | |
parent | b5f65106cac3128119d4548dab2ebc728392c8e8 (diff) |
Formatted source files
-rw-r--r-- | arm9/source/apppatch.cpp | 37 | ||||
-rw-r--r-- | arm9/source/file_browse.cpp | 120 | ||||
-rw-r--r-- | arm9/source/file_browse.h | 2 | ||||
-rw-r--r-- | arm9/source/inifile.cpp | 582 | ||||
-rw-r--r-- | arm9/source/inifile.h | 93 | ||||
-rw-r--r-- | arm9/source/main.cpp | 118 | ||||
-rw-r--r-- | arm9/source/maketmd.cpp | 2 | ||||
-rw-r--r-- | arm9/source/menu.cpp | 20 | ||||
-rw-r--r-- | arm9/source/menu.h | 8 |
9 files changed, 464 insertions, 518 deletions
diff --git a/arm9/source/apppatch.cpp b/arm9/source/apppatch.cpp index 274c821..1e91cd9 100644 --- a/arm9/source/apppatch.cpp +++ b/arm9/source/apppatch.cpp @@ -10,7 +10,7 @@ class CRC16 { std::vector<uint16_t>crc16_tab; uint16_t crc16_constant = 0xA001; bool mdflag; - public: +public: CRC16(bool modbus_flag = false) { // initialize the precalculated tables if(crc16_tab.empty()) { @@ -47,20 +47,23 @@ class CRC16 { int32_t GetBanerSize(uint16_t banner_type) { switch(banner_type) { - case NDS_BANNER_VER_ZH: { - return NDS_BANNER_SIZE_ZH; - break; - } - case NDS_BANNER_VER_ZH_KO: { - return NDS_BANNER_SIZE_ZH_KO; - break; - } - case NDS_BANNER_VER_DSi: { - return NDS_BANNER_SIZE_DSi; - break; - } - default: - return NDS_BANNER_SIZE_ORIGINAL; + case NDS_BANNER_VER_ZH: + { + return NDS_BANNER_SIZE_ZH; + break; + } + case NDS_BANNER_VER_ZH_KO: + { + return NDS_BANNER_SIZE_ZH_KO; + break; + } + case NDS_BANNER_VER_DSi: + { + return NDS_BANNER_SIZE_DSi; + break; + } + default: + return NDS_BANNER_SIZE_ORIGINAL; } } void ReplaceBanner(const std::string& target, const std::string& input, const std::string& output) { @@ -230,7 +233,7 @@ int PathStringReplace(std::string path) { if(!target.is_open()) return 255; std::string str((std::istreambuf_iterator<char>(target)), - std::istreambuf_iterator<char>()); + std::istreambuf_iterator<char>()); std::size_t found = str.find("sd:/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); if(found == std::string::npos) return 5; @@ -238,4 +241,4 @@ int PathStringReplace(std::string path) { target.write(&path[0], path.size()); target.put('\0'); return 0; - }
\ No newline at end of file +}
\ No newline at end of file diff --git a/arm9/source/file_browse.cpp b/arm9/source/file_browse.cpp index 9c5d096..91c72fe 100644 --- a/arm9/source/file_browse.cpp +++ b/arm9/source/file_browse.cpp @@ -41,41 +41,41 @@ using namespace std; struct DirEntry { string name; bool isDirectory; -} ; +}; -bool nameEndsWith (const string& name, const vector<string> extensionList) { +bool nameEndsWith(const string& name, const vector<string> extensionList) { - if (name.size() == 0) return false; + if(name.size() == 0) return false; - if (extensionList.size() == 0) return true; + if(extensionList.size() == 0) return true; - for (int i = 0; i < (int)extensionList.size(); i++) { + for(int i = 0; i < (int)extensionList.size(); i++) { const string ext = extensionList.at(i); - if ( strcasecmp (name.c_str() + name.size() - ext.size(), ext.c_str()) == 0) return true; + if(strcasecmp(name.c_str() + name.size() - ext.size(), ext.c_str()) == 0) return true; } return false; } -bool dirEntryPredicate (const DirEntry& lhs, const DirEntry& rhs) { +bool dirEntryPredicate(const DirEntry& lhs, const DirEntry& rhs) { - if (!lhs.isDirectory && rhs.isDirectory) { + if(!lhs.isDirectory && rhs.isDirectory) { return false; } - if (lhs.isDirectory && !rhs.isDirectory) { + if(lhs.isDirectory && !rhs.isDirectory) { return true; } return strcasecmp(lhs.name.c_str(), rhs.name.c_str()) < 0; } -void getDirectoryContents (vector<DirEntry>& dirContents, const vector<string> extensionList) { +void getDirectoryContents(vector<DirEntry>& dirContents, const vector<string> extensionList) { struct stat st; dirContents.clear(); - DIR *pdir = opendir ("."); + DIR *pdir = opendir("."); - if (pdir == NULL) { - iprintf ("Unable to open the directory.\n"); + if(pdir == NULL) { + iprintf("Unable to open the directory.\n"); } else { while(true) { @@ -88,8 +88,8 @@ void getDirectoryContents (vector<DirEntry>& dirContents, const vector<string> e dirEntry.name = pent->d_name; dirEntry.isDirectory = (st.st_mode & S_IFDIR) ? true : false; - if (dirEntry.name.compare(".") != 0 && (dirEntry.isDirectory || nameEndsWith(dirEntry.name, extensionList))) { - dirContents.push_back (dirEntry); + if(dirEntry.name.compare(".") != 0 && (dirEntry.isDirectory || nameEndsWith(dirEntry.name, extensionList))) { + dirContents.push_back(dirEntry); } } @@ -100,124 +100,124 @@ void getDirectoryContents (vector<DirEntry>& dirContents, const vector<string> e sort(dirContents.begin(), dirContents.end(), dirEntryPredicate); } -void getDirectoryContents (vector<DirEntry>& dirContents) { +void getDirectoryContents(vector<DirEntry>& dirContents) { vector<string> extensionList; - getDirectoryContents (dirContents, extensionList); + getDirectoryContents(dirContents, extensionList); } -void showDirectoryContents (const vector<DirEntry>& dirContents, int startRow) { +void showDirectoryContents(const vector<DirEntry>& dirContents, int startRow) { char path[PATH_MAX]; getcwd(path, PATH_MAX); // Clear the screen - iprintf ("\x1b[2J"); + iprintf("\x1b[2J"); // Print the path - if (strlen(path) < SCREEN_COLS) { - iprintf ("%s", path); + if(strlen(path) < SCREEN_COLS) { + iprintf("%s", path); } else { - iprintf ("%s", path + strlen(path) - SCREEN_COLS); + iprintf("%s", path + strlen(path) - SCREEN_COLS); } // Move to 2nd row - iprintf ("\x1b[1;0H"); + iprintf("\x1b[1;0H"); // Print line of dashes - iprintf ("--------------------------------"); + iprintf("--------------------------------"); // Print directory listing - for (int i = 0; i < ((int)dirContents.size() - startRow) && i < ENTRIES_PER_SCREEN; i++) { + for(int i = 0; i < ((int)dirContents.size() - startRow) && i < ENTRIES_PER_SCREEN; i++) { const DirEntry* entry = &dirContents.at(i + startRow); char entryName[SCREEN_COLS + 1]; // Set row - iprintf ("\x1b[%d;0H", i + ENTRIES_START_ROW); + iprintf("\x1b[%d;0H", i + ENTRIES_START_ROW); - if (entry->isDirectory) { - strncpy (entryName, entry->name.c_str(), SCREEN_COLS); + if(entry->isDirectory) { + strncpy(entryName, entry->name.c_str(), SCREEN_COLS); entryName[SCREEN_COLS - 3] = '\0'; - iprintf (" [%s]", entryName); + iprintf(" [%s]", entryName); } else { - strncpy (entryName, entry->name.c_str(), SCREEN_COLS); + strncpy(entryName, entry->name.c_str(), SCREEN_COLS); entryName[SCREEN_COLS - 1] = '\0'; - iprintf (" %s", entryName); + iprintf(" %s", entryName); } } } -string browseForFile (const vector<string>& extensionList) { +string browseForFile(const vector<string>& extensionList) { int pressed = 0; int screenOffset = 0; int fileOffset = 0; vector<DirEntry> dirContents; - getDirectoryContents (dirContents, extensionList); - showDirectoryContents (dirContents, screenOffset); + getDirectoryContents(dirContents, extensionList); + showDirectoryContents(dirContents, screenOffset); - while (true) { + while(true) { // Clear old cursors - for (int i = ENTRIES_START_ROW; i < ENTRIES_PER_SCREEN + ENTRIES_START_ROW; i++) { - iprintf ("\x1b[%d;0H ", i); + for(int i = ENTRIES_START_ROW; i < ENTRIES_PER_SCREEN + ENTRIES_START_ROW; i++) { + iprintf("\x1b[%d;0H ", i); } // Show cursor - iprintf ("\x1b[%d;0H*", fileOffset - screenOffset + ENTRIES_START_ROW); + iprintf("\x1b[%d;0H*", fileOffset - screenOffset + ENTRIES_START_ROW); // Power saving loop. Only poll the keys once per frame and sleep the CPU if there is nothing else to do do { scanKeys(); pressed = keysDownRepeat(); swiWaitForVBlank(); - } while (!pressed); + } while(!pressed); - if (pressed & KEY_UP) fileOffset -= 1; - if (pressed & KEY_DOWN) fileOffset += 1; - if (pressed & KEY_LEFT) fileOffset -= ENTRY_PAGE_LENGTH; - if (pressed & KEY_RIGHT) fileOffset += ENTRY_PAGE_LENGTH; + if(pressed & KEY_UP) fileOffset -= 1; + if(pressed & KEY_DOWN) fileOffset += 1; + if(pressed & KEY_LEFT) fileOffset -= ENTRY_PAGE_LENGTH; + if(pressed & KEY_RIGHT) fileOffset += ENTRY_PAGE_LENGTH; - if (fileOffset < 0) fileOffset = dirContents.size() - 1; // Wrap around to bottom of list - if (fileOffset > ((int)dirContents.size() - 1)) fileOffset = 0; // Wrap around to top of list + if(fileOffset < 0) fileOffset = dirContents.size() - 1; // Wrap around to bottom of list + if(fileOffset > ((int)dirContents.size() - 1)) fileOffset = 0; // Wrap around to top of list // Scroll screen if needed - if (fileOffset < screenOffset) { + if(fileOffset < screenOffset) { screenOffset = fileOffset; - showDirectoryContents (dirContents, screenOffset); + showDirectoryContents(dirContents, screenOffset); } - if (fileOffset > screenOffset + ENTRIES_PER_SCREEN - 1) { + if(fileOffset > screenOffset + ENTRIES_PER_SCREEN - 1) { screenOffset = fileOffset - ENTRIES_PER_SCREEN + 1; - showDirectoryContents (dirContents, screenOffset); + showDirectoryContents(dirContents, screenOffset); } - if (pressed & KEY_A) { + if(pressed & KEY_A) { DirEntry* entry = &dirContents.at(fileOffset); - if (entry->isDirectory) { + if(entry->isDirectory) { iprintf("Entering directory\n"); // Enter selected directory - chdir (entry->name.c_str()); - getDirectoryContents (dirContents, extensionList); + chdir(entry->name.c_str()); + getDirectoryContents(dirContents, extensionList); screenOffset = 0; fileOffset = 0; - showDirectoryContents (dirContents, screenOffset); + showDirectoryContents(dirContents, screenOffset); } else { // Clear the screen - iprintf ("\x1b[2J"); + iprintf("\x1b[2J"); // Return the chosen file char cwd[PATH_MAX]; getcwd(cwd, PATH_MAX); std::string full_path; - full_path.resize(sizeof(cwd)+entry->name.size()+10); + full_path.resize(sizeof(cwd) + entry->name.size() + 10); sprintf(&full_path[0], "%s%s", cwd, entry->name.c_str()); return full_path; } } - if (pressed & KEY_B) { + if(pressed & KEY_B) { // Go up a directory - chdir (".."); - getDirectoryContents (dirContents, extensionList); + chdir(".."); + getDirectoryContents(dirContents, extensionList); screenOffset = 0; fileOffset = 0; - showDirectoryContents (dirContents, screenOffset); + showDirectoryContents(dirContents, screenOffset); } } } diff --git a/arm9/source/file_browse.h b/arm9/source/file_browse.h index 903b5aa..057d5f7 100644 --- a/arm9/source/file_browse.h +++ b/arm9/source/file_browse.h @@ -25,7 +25,7 @@ #include <string> #include <vector> -std::string browseForFile (const std::vector<std::string>& extensionList); +std::string browseForFile(const std::vector<std::string>& extensionList); diff --git a/arm9/source/inifile.cpp b/arm9/source/inifile.cpp index 2a7114c..c806ba3 100644 --- a/arm9/source/inifile.cpp +++ b/arm9/source/inifile.cpp @@ -1,21 +1,21 @@ /* - inifile.cpp - Copyright (C) 2007 Acekard, www.acekard.com - Copyright (C) 2007-2009 somebody - Copyright (C) 2009 yellow wood goblin - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. + inifile.cpp + Copyright (C) 2007 Acekard, www.acekard.com + Copyright (C) 2007-2009 somebody + Copyright (C) 2009 yellow wood goblin + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <cstdio> @@ -23,84 +23,69 @@ #include "inifile.h" //#include "stringtool.h" -static bool freadLine(FILE* f,std::string& str) -{ - str.clear(); +static bool freadLine(FILE* f, std::string& str) { + str.clear(); __read: - char p=0; - - size_t readed=fread(&p,1,1,f); - if(0==readed) - { - str=""; - return false; - } - if('\n'==p||'\r'==p) - { - str=""; - return true; - } - - while(p!='\n'&&p!='\r'&&readed) - { - str+=p; - readed=fread(&p,1,1,f); - } - - if(str.empty()||""==str) - { - goto __read; - } - - return true; + char p = 0; + + size_t readed = fread(&p, 1, 1, f); + if(0 == readed) { + str = ""; + return false; + } + if('\n' == p || '\r' == p) { + str = ""; + return true; + } + + while(p != '\n'&&p != '\r'&&readed) { + str += p; + readed = fread(&p, 1, 1, f); + } + + if(str.empty() || "" == str) { + goto __read; + } + + return true; } -static void trimString(std::string& str) -{ - size_t first=str.find_first_not_of(" \t"),last; - if(first==str.npos) - { - str=""; - } - else - { - last=str.find_last_not_of(" \t"); - if(first>0||(last+1)<str.length()) str=str.substr(first,last-first+1); - } +static void trimString(std::string& str) { + size_t first = str.find_first_not_of(" \t"), last; + if(first == str.npos) { + str = ""; + } else { + last = str.find_last_not_of(" \t"); + if(first > 0 || (last + 1) < str.length()) str = str.substr(first, last - first + 1); + } } -CIniFile::CIniFile() -{ - m_bLastResult=false; - m_bModified=false; - m_bReadOnly=false; +CIniFile::CIniFile() { + m_bLastResult = false; + m_bModified = false; + m_bReadOnly = false; } -CIniFile::CIniFile(const std::string& filename) -{ - m_sFileName=filename; - m_bLastResult=false; - m_bModified=false; - m_bReadOnly=false; - m_bHasHandle=false; - LoadIniFile(m_sFileName); +CIniFile::CIniFile(const std::string& filename) { + m_sFileName = filename; + m_bLastResult = false; + m_bModified = false; + m_bReadOnly = false; + m_bHasHandle = false; + LoadIniFile(m_sFileName); } -CIniFile::~CIniFile() -{ - if(m_FileContainer.size()>0) - { - m_FileContainer.clear(); - } +CIniFile::~CIniFile() { + if(m_FileContainer.size() > 0) { + m_FileContainer.clear(); + } } -void CIniFile::SetString(const std::string& Section,const std::string& Item,const std::string& Value) -{ - if(GetFileString(Section,Item)!=Value) - { - SetFileString(Section,Item,Value); - m_bModified=true; - } +void CIniFile::SetString(const std::string& Section, const std::string& Item, const std::string& Value) { + if(GetFileString(Section, Item) != Value) { + SetFileString(Section, Item, Value); + m_bModified = true; + } } /*void CIniFile::SetInt(const std::string& Section,const std::string& Item,int Value) @@ -109,65 +94,56 @@ void CIniFile::SetString(const std::string& Section,const std::string& Item,cons if(GetFileString(Section,Item)!=strtemp) { - SetFileString(Section,Item,strtemp); - m_bModified=true; + SetFileString(Section,Item,strtemp); + m_bModified=true; } }*/ -std::string CIniFile::GetString(const std::string& Section,const std::string& Item) -{ - return GetFileString(Section,Item); +std::string CIniFile::GetString(const std::string& Section, const std::string& Item) { + return GetFileString(Section, Item); } -std::string CIniFile::GetString(const std::string& Section,const std::string& Item,const std::string& DefaultValue) -{ - std::string temp=GetString(Section,Item); - if(!m_bLastResult) - { - SetString(Section,Item,DefaultValue); - temp=DefaultValue; - } - return temp; +std::string CIniFile::GetString(const std::string& Section, const std::string& Item, const std::string& DefaultValue) { + std::string temp = GetString(Section, Item); + if(!m_bLastResult) { + SetString(Section, Item, DefaultValue); + temp = DefaultValue; + } + return temp; } -void CIniFile::GetStringVector(const std::string& Section,const std::string& Item,std::vector< std::string >& strings,char delimiter) -{ - std::string strValue=GetFileString(Section,Item); - strings.clear(); - size_t pos; - while((pos=strValue.find(delimiter),strValue.npos!=pos)) - { - const std::string string=strValue.substr(0,pos); - if(string.length()) - { - strings.push_back(string); - } - strValue=strValue.substr(pos+1,strValue.npos); - } - if(strValue.length()) - { - strings.push_back(strValue); - } +void CIniFile::GetStringVector(const std::string& Section, const std::string& Item, std::vector< std::string >& strings, char delimiter) { + std::string strValue = GetFileString(Section, Item); + strings.clear(); + size_t pos; + while((pos = strValue.find(delimiter), strValue.npos != pos)) { + const std::string string = strValue.substr(0, pos); + if(string.length()) { + strings.push_back(string); + } + strValue = strValue.substr(pos + 1, strValue.npos); + } + if(strValue.length()) { + strings.push_back(strValue); + } } -void CIniFile::SetStringVector(const std::string& Section,const std::string& Item,std::vector<std::string>& strings,char delimiter) -{ - std::string strValue; - for(size_t ii=0;ii<strings.size();++ii) - { - if(ii) strValue+=delimiter; - strValue+=strings[ii]; - } - SetString(Section,Item,strValue); +void CIniFile::SetStringVector(const std::string& Section, const std::string& Item, std::vector<std::string>& strings, char delimiter) { + std::string strValue; + for(size_t ii = 0; ii < strings.size(); ++ii) { + if(ii) strValue += delimiter; + strValue += strings[ii]; + } + SetString(Section, Item, strValue); } /*int CIniFile::GetInt(const std::string& Section,const std::string& Item) { std::string value=GetFileString(Section,Item); if(value.size()>2&&'0'==value[0]&&('x'==value[1]||'X'==value[1])) - return strtol(value.c_str(),NULL,16); + return strtol(value.c_str(),NULL,16); else - return strtol(value.c_str(),NULL,10); + return strtol(value.c_str(),NULL,10); } int CIniFile::GetInt(const std::string& Section,const std::string& Item,int DefaultValue) @@ -176,224 +152,192 @@ int CIniFile::GetInt(const std::string& Section,const std::string& Item,int Defa temp=GetInt(Section,Item); if(!m_bLastResult) { - SetInt(Section,Item,DefaultValue); - temp=DefaultValue; + SetInt(Section,Item,DefaultValue); + temp=DefaultValue; } return temp; }*/ -bool CIniFile::LoadIniFile(const std::string& FileName) -{ - //dbg_printf("load %s\n",FileName.c_str()); - if(FileName!="") m_sFileName=FileName; +bool CIniFile::LoadIniFile(const std::string& FileName) { + //dbg_printf("load %s\n",FileName.c_str()); + if(FileName != "") m_sFileName = FileName; - FILE* f=fopen(FileName.c_str(),"rb"); + FILE* f = fopen(FileName.c_str(), "rb"); - if(NULL==f) return false; - - m_bHasHandle = true; - - //check for utf8 bom. - char bom[3]; - if(fread(bom,3,1,f)==1&&bom[0]==0xef&&bom[1]==0xbb&&bom[2]==0xbf) ; - else fseek(f,0,SEEK_SET); + if(NULL == f) return false; - std::string strline(""); - m_FileContainer.clear(); - - while(freadLine(f,strline)) - { - trimString(strline); - if(strline!=""&&';'!=strline[0]&&'/'!=strline[0]&&'!'!=strline[0]) m_FileContainer.push_back(strline); - } + m_bHasHandle = true; - fclose(f); + //check for utf8 bom. + char bom[3]; + if(fread(bom, 3, 1, f) == 1 && bom[0] == 0xef && bom[1] == 0xbb && bom[2] == 0xbf); + else fseek(f, 0, SEEK_SET); - m_bLastResult=false; - m_bModified=false; + std::string strline(""); + m_FileContainer.clear(); - return true; -} + while(freadLine(f, strline)) { + trimString(strline); + if(strline != ""&&';' != strline[0] && '/' != strline[0] && '!' != strline[0]) m_FileContainer.push_back(strline); + } -bool CIniFile::SaveIniFileModified(const std::string& FileName) -{ - if(m_bModified==true) - { - return SaveIniFile(FileName); - } + fclose(f); - return true; -} + m_bLastResult = false; + m_bModified = false; -bool CIniFile::HasFileHandle() -{ - return m_bHasHandle; + return true; } -bool CIniFile::SaveIniFile(const std::string& FileName) -{ - if(FileName!="") - m_sFileName=FileName; - - FILE* f=fopen(m_sFileName.c_str(),"wb"); - if(NULL==f) - { - return false; - } - - for(size_t ii=0;ii<m_FileContainer.size();ii++) - { - std::string& strline=m_FileContainer[ii]; - size_t notSpace=strline.find_first_not_of(' '); - strline=strline.substr(notSpace); - if(strline.find('[')==0&&ii>0) - { - if(!m_FileContainer[ii-1].empty()&&m_FileContainer[ii-1]!="") - fwrite("\r\n",1,2,f); - } - if(!strline.empty()&&strline!="") - { - fwrite(strline.c_str(),1,strline.length(),f); - fwrite("\r\n",1,2,f); - } - } - - fclose(f); +bool CIniFile::SaveIniFileModified(const std::string& FileName) { + if(m_bModified == true) { + return SaveIniFile(FileName); + } - m_bModified=false; - - return true; + return true; } -std::string CIniFile::GetFileString(const std::string& Section,const std::string& Item) -{ - std::string strline; - std::string strSection; - std::string strItem; - std::string strValue; - - size_t ii=0; - size_t iFileLines=m_FileContainer.size(); - - if(m_bReadOnly) - { - cSectionCache::iterator it=m_Cache.find(Section); - if((it!=m_Cache.end())) ii=it->second; - } - - m_bLastResult=false; - - if(iFileLines>=0) - { - while(ii<iFileLines) - { - strline=m_FileContainer[ii++]; - - size_t rBracketPos=0; - if('['==strline[0]) rBracketPos=strline.find(']'); - if(rBracketPos>0&&rBracketPos!=std::string::npos) - { - strSection=strline.substr(1,rBracketPos-1); - if(m_bReadOnly) m_Cache.insert(std::make_pair(strSection,ii-1)); - if(strSection==Section) - { - while(ii<iFileLines) - { - strline=m_FileContainer[ii++]; - size_t equalsignPos=strline.find('='); - if(equalsignPos!=strline.npos) - { - size_t last=equalsignPos?strline.find_last_not_of(" \t",equalsignPos-1):strline.npos; - if(last==strline.npos) strItem=""; - else strItem=strline.substr(0,last+1); - - if(strItem==Item) - { - size_t first=strline.find_first_not_of(" \t",equalsignPos+1); - if(first==strline.npos) strValue=""; - else strValue=strline.substr(first); - m_bLastResult=true; - return strValue; - } - } - else if('['==strline[0]) - { - break; - } - } - break; - } - } - } - } - return std::string(""); +bool CIniFile::HasFileHandle() { + return m_bHasHandle; } -void CIniFile::SetFileString(const std::string& Section,const std::string& Item,const std::string& Value) -{ - std::string strline; - std::string strSection; - std::string strItem; - - if(m_bReadOnly) return; - - size_t ii=0; - size_t iFileLines=m_FileContainer.size(); +bool CIniFile::SaveIniFile(const std::string& FileName) { + if(FileName != "") + m_sFileName = FileName; + + FILE* f = fopen(m_sFileName.c_str(), "wb"); + if(NULL == f) { + return false; + } + + for(size_t ii = 0; ii < m_FileContainer.size(); ii++) { + std::string& strline = m_FileContainer[ii]; + size_t notSpace = strline.find_first_not_of(' '); + strline = strline.substr(notSpace); + if(strline.find('[') == 0 && ii > 0) { + if(!m_FileContainer[ii - 1].empty() && m_FileContainer[ii - 1] != "") + fwrite("\r\n", 1, 2, f); + } + if(!strline.empty() && strline != "") { + fwrite(strline.c_str(), 1, strline.length(), f); + fwrite("\r\n", 1, 2, f); + } + } + + fclose(f); + + m_bModified = false; + + return true; +} - while(ii<iFileLines) - { - strline=m_FileContainer[ii++]; - - size_t rBracketPos=0; - if('['==strline[0]) rBracketPos=strline.find(']'); - if(rBracketPos>0&&rBracketPos!=std::string::npos) - { - strSection=strline.substr(1,rBracketPos-1); - if(strSection==Section) - { - while(ii<iFileLines) - { - strline=m_FileContainer[ii++]; - size_t equalsignPos=strline.find('='); - if(equalsignPos!=strline.npos) - { - size_t last=equalsignPos?strline.find_last_not_of(" \t",equalsignPos-1):strline.npos; - if(last==strline.npos) strItem=""; - else strItem=strline.substr(0,last+1); - - if(Item==strItem) - { - ReplaceLine(ii-1,Item+" = "+Value); - return; - } - } - else if('['==strline[0]) - { - InsertLine(ii-1,Item+" = "+Value); - return; - } - } - InsertLine(ii,Item+" = "+Value); - return; - } - } - } +std::string CIniFile::GetFileString(const std::string& Section, const std::string& Item) { + std::string strline; + std::string strSection; + std::string strItem; + std::string strValue; + + size_t ii = 0; + size_t iFileLines = m_FileContainer.size(); + + if(m_bReadOnly) { + cSectionCache::iterator it = m_Cache.find(Section); + if((it != m_Cache.end())) ii = it->second; + } + + m_bLastResult = false; + + if(iFileLines >= 0) { + while(ii < iFileLines) { + strline = m_FileContainer[ii++]; + + size_t rBracketPos = 0; + if('[' == strline[0]) rBracketPos = strline.find(']'); + if(rBracketPos > 0 && rBracketPos != std::string::npos) { + strSection = strline.substr(1, rBracketPos - 1); + if(m_bReadOnly) m_Cache.insert(std::make_pair(strSection, ii - 1)); + if(strSection == Section) { + while(ii < iFileLines) { + strline = m_FileContainer[ii++]; + size_t equalsignPos = strline.find('='); + if(equalsignPos != strline.npos) { + size_t last = equalsignPos ? strline.find_last_not_of(" \t", equalsignPos - 1) : strline.npos; + if(last == strline.npos) strItem = ""; + else strItem = strline.substr(0, last + 1); + + if(strItem == Item) { + size_t first = strline.find_first_not_of(" \t", equalsignPos + 1); + if(first == strline.npos) strValue = ""; + else strValue = strline.substr(first); + m_bLastResult = true; + return strValue; + } + } else if('[' == strline[0]) { + break; + } + } + break; + } + } + } + } + return std::string(""); +} - InsertLine(ii,"["+Section+"]"); - InsertLine(ii+1,Item+" = "+Value); - return; +void CIniFile::SetFileString(const std::string& Section, const std::string& Item, const std::string& Value) { + std::string strline; + std::string strSection; + std::string strItem; + + if(m_bReadOnly) return; + + size_t ii = 0; + size_t iFileLines = m_FileContainer.size(); + + while(ii < iFileLines) { + strline = m_FileContainer[ii++]; + + size_t rBracketPos = 0; + if('[' == strline[0]) rBracketPos = strline.find(']'); + if(rBracketPos > 0 && rBracketPos != std::string::npos) { + strSection = strline.substr(1, rBracketPos - 1); + if(strSection == Section) { + while(ii < iFileLines) { + strline = m_FileContainer[ii++]; + size_t equalsignPos = strline.find('='); + if(equalsignPos != strline.npos) { + size_t last = equalsignPos ? strline.find_last_not_of(" \t", equalsignPos - 1) : strline.npos; + if(last == strline.npos) strItem = ""; + else strItem = strline.substr(0, last + 1); + + if(Item == strItem) { + ReplaceLine(ii - 1, Item + " = " + Value); + return; + } + } else if('[' == strline[0]) { + InsertLine(ii - 1, Item + " = " + Value); + return; + } + } + InsertLine(ii, Item + " = " + Value); + return; + } + } + } + + InsertLine(ii, "[" + Section + "]"); + InsertLine(ii + 1, Item + " = " + Value); + return; } -bool CIniFile::InsertLine(size_t line,const std::string& str) -{ - m_FileContainer.insert(m_FileContainer.begin()+line,str); - return true; +bool CIniFile::InsertLine(size_t line, const std::string& str) { + m_FileContainer.insert(m_FileContainer.begin() + line, str); + return true; } -bool CIniFile::ReplaceLine(size_t line,const std::string& str) -{ - m_FileContainer[line]=str; - return true; +bool CIniFile::ReplaceLine(size_t line, const std::string& str) { + m_FileContainer[line] = str; + return true; } diff --git a/arm9/source/inifile.h b/arm9/source/inifile.h index 39543e8..cbf6e2c 100644 --- a/arm9/source/inifile.h +++ b/arm9/source/inifile.h @@ -1,21 +1,21 @@ /* - inifile.h - Copyright (C) 2007 Acekard, www.acekard.com - Copyright (C) 2007-2009 somebody - Copyright (C) 2009-2010 yellow wood goblin + inifile.h + Copyright (C) 2007 Acekard, www.acekard.com + Copyright (C) 2007-2009 somebody + Copyright (C) 2009-2010 yellow wood goblin - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. */ #ifndef _INIFILE_H_ @@ -25,44 +25,43 @@ #include <vector> #include <map> -class CIniFile -{ - public: - CIniFile(); - CIniFile(const std::string& filename); - virtual ~CIniFile(); +class CIniFile { +public: + CIniFile(); + CIniFile(const std::string& filename); + virtual ~CIniFile(); - public: - bool LoadIniFile(const std::string& FileName); - bool SaveIniFile(const std::string& FileName); - bool SaveIniFileModified(const std::string& FileName); - bool HasFileHandle(); +public: + bool LoadIniFile(const std::string& FileName); + bool SaveIniFile(const std::string& FileName); + bool SaveIniFileModified(const std::string& FileName); + bool HasFileHandle(); - std::string GetString(const std::string& Section,const std::string& Item,const std::string& DefaultValue); - void SetString(const std::string& Section,const std::string& Item,const std::string& Value); - int GetInt(const std::string& Section,const std::string& Item,int DefaultValue); - void SetInt(const std::string& Section,const std::string& Item,int Value); - void GetStringVector(const std::string& Section,const std::string& Item,std::vector<std::string>& strings,char delimiter=','); - void SetStringVector(const std::string& Section,const std::string& Item,std::vector<std::string>& strings,char delimiter=','); - protected: - std::string m_sFileName; - typedef std::vector<std::string> cStringArray; - cStringArray m_FileContainer; - bool m_bLastResult; - bool m_bModified; - bool m_bReadOnly; - bool m_bHasHandle; - typedef std::map<std::string,size_t> cSectionCache; - cSectionCache m_Cache; + std::string GetString(const std::string& Section, const std::string& Item, const std::string& DefaultValue); + void SetString(const std::string& Section, const std::string& Item, const std::string& Value); + int GetInt(const std::string& Section, const std::string& Item, int DefaultValue); + void SetInt(const std::string& Section, const std::string& Item, int Value); + void GetStringVector(const std::string& Section, const std::string& Item, std::vector<std::string>& strings, char delimiter = ','); + void SetStringVector(const std::string& Section, const std::string& Item, std::vector<std::string>& strings, char delimiter = ','); +protected: + std::string m_sFileName; + typedef std::vector<std::string> cStringArray; + cStringArray m_FileContainer; + bool m_bLastResult; + bool m_bModified; + bool m_bReadOnly; + bool m_bHasHandle; + typedef std::map<std::string, size_t> cSectionCache; + cSectionCache m_Cache; - bool InsertLine(size_t line,const std::string& str); - bool ReplaceLine(size_t line,const std::string& str); + bool InsertLine(size_t line, const std::string& str); + bool ReplaceLine(size_t line, const std::string& str); - void SetFileString(const std::string& Section,const std::string& Item,const std::string& Value); - std::string GetFileString(const std::string& Section,const std::string& Item); + void SetFileString(const std::string& Section, const std::string& Item, const std::string& Value); + std::string GetFileString(const std::string& Section, const std::string& Item); - std::string GetString(const std::string& Section,const std::string& Item); - int GetInt(const std::string& Section,const std::string& Item); + std::string GetString(const std::string& Section, const std::string& Item); + int GetInt(const std::string& Section, const std::string& Item); }; #endif // _INIFILE_H_ diff --git a/arm9/source/main.cpp b/arm9/source/main.cpp index f385ad9..15d7d4c 100644 --- a/arm9/source/main.cpp +++ b/arm9/source/main.cpp @@ -82,27 +82,27 @@ void displayInit() { } bool fileExists(const std::string& file) { - struct stat buf; - return (stat(file.c_str(), &buf) == 0); + struct stat buf; + return (stat(file.c_str(), &buf) == 0); } std::string ReplaceAll(std::string str, const std::string& from, const std::string& to) { - size_t start_pos = 0; - while((start_pos = str.find(from, start_pos)) != std::string::npos) { - str.replace(start_pos, from.length(), to); - start_pos += to.length(); // Handles case where 'to' is a substring of 'from' - } - return str; + size_t start_pos = 0; + while((start_pos = str.find(from, start_pos)) != std::string::npos) { + str.replace(start_pos, from.length(), to); + start_pos += to.length(); // Handles case where 'to' is a substring of 'from' + } + return str; } -void stop (void) { -//--------------------------------------------------------------------------------- - while (1) { +void stop(void) { + //--------------------------------------------------------------------------------- + while(true) { swiWaitForVBlank(); } } -void wait (void) { -//--------------------------------------------------------------------------------- - while (1) { +void wait(void) { + //--------------------------------------------------------------------------------- + while(true) { swiWaitForVBlank(); scanKeys(); int pressed = keysDown(); @@ -112,19 +112,19 @@ void wait (void) { const char* GetErrorString(int code) { - switch(code){ - case 1: - return "fatInitDefault failed!"; - case 2: - return "The MakeForwarder folder is missing!"; - case 3: - return "Template.nds is missing from the MakeForwarder folder!"; - case 4: - return "Error when reading the template.nds file, make sure to have the correct one!"; - case 5: - return "Couldn't open the target rom, or the rom is not a valid target!"; - default: - return ""; + switch(code) { + case 1: + return "fatInitDefault failed!"; + case 2: + return "The MakeForwarder folder is missing!"; + case 3: + return "Template.nds is missing from the MakeForwarder folder!"; + case 4: + return "Error when reading the template.nds file, make sure to have the correct one!"; + case 5: + return "Couldn't open the target rom, or the rom is not a valid target!"; + default: + return ""; } } @@ -135,7 +135,7 @@ void PrintError(int errorcode, bool halt = false) { consoleSetWindow(&upperScreen, 0, 3, DISPLAY_COLUMNS, 23); consoleSelect(&upperScreen); WriteMessage(GetErrorString(errorcode), true); - if (halt) + if(halt) stop(); else { WriteMessage("Press A to continue", false); @@ -147,7 +147,7 @@ void PrintError(int errorcode, bool halt = false) { std::string GetHexid(std::string file, int* chk) { std::ifstream infile(file, std::ifstream::binary); infile.seekg(0xc); - if(infile.tellg()!=0xc) { + if(infile.tellg() != 0xc) { *chk = 1; return ""; } @@ -159,20 +159,20 @@ std::string GetHexid(std::string file, int* chk) { } void CreateForwarder() { - std::vector<std::string> extensionList={".nds"}; + std::vector<std::string> extensionList = { ".nds" }; WriteMessage("Select the target rom", true, &upperScreen); consoleSelect(&lowerScreen); std::string file = browseForFile(extensionList); chdir("sd:/"); - + int chk = 0; std::string gameidhex = GetHexid(file, &chk); - if (chk){ + if(chk) { PrintError(5); return; } std::string folderpath("sd:/title/00030004/" + gameidhex); - + if(fileExists(folderpath + "/content/00000000.app")) { WriteMessage("A DsiWare with the same id already exists, do you want to overwrite it?", true, &upperScreen); int ret = yesno.DoMenu(&lowerScreen); @@ -181,63 +181,63 @@ void CreateForwarder() { if(ret) return; } - + WriteMessage("Creating forwarder", true, &lowerScreen); - + ReplaceBanner("sd:/MakeForwarder/template.nds", file, "sd:/MakeForwarder/banner.nds"); - + Patch("sd:/MakeForwarder/banner.nds", false); MakeTmd("sd:/MakeForwarder/banner.nds", "sd:/MakeForwarder/title.tmd"); - + chk = PathStringReplace("title/00030004/" + gameidhex + "/data/"); - + if(chk) { PrintError(chk); remove("sd:/MakeForwarder/banner.nds"); remove("sd:/MakeForwarder/title.tmd"); return; } - + if(CreatePath("title/00030004/" + gameidhex + "/data", "sd:/") && CreatePath("title/00030004/" + gameidhex + "/content", "sd:/")) { Movefile("sd:/MakeForwarder/banner.nds", folderpath + "/content/00000000.app"); Movefile("sd:/MakeForwarder/title.tmd", folderpath + "/content/title.tmd"); if(bootstrap_template.HasFileHandle()) { bootsrtapconfig.SaveIniFile((folderpath + "/data/config.ini").c_str()); - bootstrap_template.SetString( "NDS-BOOTSTRAP", "NDS_PATH", file.c_str()); + bootstrap_template.SetString("NDS-BOOTSTRAP", "NDS_PATH", file.c_str()); std::string savePath = ReplaceAll(file, ".nds", ".sav"); - bootstrap_template.SetString( "NDS-BOOTSTRAP", "SAV_PATH", savePath.c_str()); + bootstrap_template.SetString("NDS-BOOTSTRAP", "SAV_PATH", savePath.c_str()); bootstrap_template.SaveIniFile((folderpath + "/data/bootstrap.ini").c_str()); } } } void SetBootstrap() { - std::vector<std::string> extensionList={".nds"}; + std::vector<std::string> extensionList = { ".nds" }; WriteMessage("Select the target bootstrap file to be used", true, &upperScreen); consoleSelect(&lowerScreen); std::string file = browseForFile(extensionList); chdir("sd:/"); - - size_t found = file.find_last_of("/"); - - std::string bootstrappath=file.substr(0,found+1); - std::string bootstrapversion=file.substr(found+1); - - bootsrtapconfig.SetString( "NDS-FORWARDER", "BOOTSTRAP_PATH", bootstrappath.c_str()); - bootsrtapconfig.SetString( "NDS-FORWARDER", "BOOTSTRAP_VERSION", bootstrapversion.c_str()); - - bootstrap_template.LoadIniFile((bootstrappath+"nds-bootstrap.ini").c_str()); + + size_t found = file.find_last_of("/"); + + std::string bootstrappath = file.substr(0, found + 1); + std::string bootstrapversion = file.substr(found + 1); + + bootsrtapconfig.SetString("NDS-FORWARDER", "BOOTSTRAP_PATH", bootstrappath.c_str()); + bootsrtapconfig.SetString("NDS-FORWARDER", "BOOTSTRAP_VERSION", bootstrapversion.c_str()); + + bootstrap_template.LoadIniFile((bootstrappath + "nds-bootstrap.ini").c_str()); } void CheckResources() { - if (!fileExists("sd:/MakeForwarder")) + if(!fileExists("sd:/MakeForwarder")) PrintError(2, true); - if (!fileExists("sd:/MakeForwarder/template.nds")) + if(!fileExists("sd:/MakeForwarder/template.nds")) PrintError(3, true); std::ifstream ndstemplate("sd:/MakeForwarder/template.nds", std::ifstream::binary); std::string str((std::istreambuf_iterator<char>(ndstemplate)), - std::istreambuf_iterator<char>()); + std::istreambuf_iterator<char>()); std::size_t found = str.find("sd:/kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"); if(found == std::string::npos) PrintError(4, true); @@ -248,7 +248,7 @@ int main() { consoleSetWindow(&upperScreen, 0, 0, DISPLAY_COLUMNS, 3); WriteMessage("Forwarder maker by edo9300 v1.0", true, &upperScreen); consoleSetWindow(&upperScreen, 0, 3, DISPLAY_COLUMNS, 23); - if (!fatInitDefault()) + if(!fatInitDefault()) PrintError(1, true); CheckResources(); menu mainmenu; @@ -256,13 +256,13 @@ int main() { mainmenu.AddOption("Set target bootstrap"); yesno.AddOption("Yes"); yesno.AddOption("No"); - while(1){ + while(true) { swiWaitForVBlank(); WriteMessage("Use the option \"Set target bootstrap\" to avoid configuring the created forwarders at startup", true, &upperScreen); int ret = mainmenu.DoMenu(&lowerScreen); - if (ret==0) + if(ret == 0) CreateForwarder(); - else if (ret==1) + else if(ret == 1) SetBootstrap(); else break; diff --git a/arm9/source/maketmd.cpp b/arm9/source/maketmd.cpp index 05f6cde..c0575ce 100644 --- a/arm9/source/maketmd.cpp +++ b/arm9/source/maketmd.cpp @@ -65,7 +65,7 @@ void MakeTmd(const std::string& target, const std::string& destination) { // Phase 4 - offset 0x1AA (fill-in 0x80 value, 0x10 times) { - for(size_t i = 0; i<0x10; i++) { + for(size_t i = 0; i < 0x10; i++) { tmd[0x1AA + i] = 0x80; } } diff --git a/arm9/source/menu.cpp b/arm9/source/menu.cpp index 182540d..098c4b2 100644 --- a/arm9/source/menu.cpp +++ b/arm9/source/menu.cpp @@ -9,37 +9,37 @@ #include <string> #include "menu.h" -void menu::AddOption(const std::string& option){ +void menu::AddOption(const std::string& option) { options.push_back(option); } -int menu::DoMenu(PrintConsole* screen){ +int menu::DoMenu(PrintConsole* screen) { consoleSelect(screen); current = 0; consoleClear(); - consoleSetWindow(screen, 1, 0, DISPLAY_COLUMNS-1, DISPLAY_ROWS); + consoleSetWindow(screen, 1, 0, DISPLAY_COLUMNS - 1, DISPLAY_ROWS); for(auto option : options) - iprintf((option+"\n").c_str()); + iprintf((option + "\n").c_str()); consoleSetWindow(screen, 0, 0, 1, DISPLAY_ROWS); iprintf(">"); - while (true){ + while(true) { swiWaitForVBlank(); scanKeys(); int pressed = keysDownRepeat(); if(pressed & KEY_UP) { consoleClear(); current--; - if(current<0) + if(current < 0) current = options.size() - 1; - for (int a = 0; a<current; a++) + for(int a = 0; a < current; a++) iprintf("\n"); iprintf(">"); } if(pressed & KEY_DOWN) { consoleClear(); current++; - if(current>=options.size()) + if(current >= options.size()) current = 0; - for (int a = 0; a<current; a++) + for(int a = 0; a < current; a++) iprintf("\n"); iprintf(">"); } @@ -56,6 +56,6 @@ int menu::DoMenu(PrintConsole* screen){ } } } -int menu::GetLastSeletedOption(){ +int menu::GetLastSeletedOption() { return current; } diff --git a/arm9/source/menu.h b/arm9/source/menu.h index cb38e90..7e9399e 100644 --- a/arm9/source/menu.h +++ b/arm9/source/menu.h @@ -7,15 +7,15 @@ #define DISPLAY_COLUMNS 32 #define DISPLAY_ROWS 26 -class menu{ - private: +class menu { +private: std::vector<std::string> options; int current; - public: +public: void AddOption(const std::string& option); int DoMenu(PrintConsole* screen); int GetLastSeletedOption(); - + }; |