Skip to content

Commit

Permalink
Remove test/debug code
Browse files Browse the repository at this point in the history
  • Loading branch information
XorTroll committed Sep 17, 2019
1 parent 2ee23dc commit 2a50b35
Show file tree
Hide file tree
Showing 7 changed files with 14 additions and 153 deletions.
3 changes: 1 addition & 2 deletions Goldleaf/Include/nsp/nsp_Builder.hpp
Expand Up @@ -17,6 +17,5 @@

namespace nsp
{
int Build(pu::String ContentsDir, pu::String Out, std::function<void(u64, u64)> Callback);
bool BuildNew(pu::String Input, pu::String Out, std::function<void(u64, u64)> Callback);
bool GenerateFrom(pu::String Input, pu::String Out, std::function<void(u64, u64)> Callback);
}
29 changes: 5 additions & 24 deletions Goldleaf/Source/hos/hos_Content.cpp
Expand Up @@ -26,38 +26,19 @@ namespace hos

SetSysFirmwareVersion GetPendingUpdateInfo()
{
bool found = false;
auto sysnand = fs::GetNANDSystemExplorer();
auto ncas = sysnand->GetFiles("Contents/placehld");
FILE *f = fopen("sdmc:/UpdateDemo.log", "a");
if(f)
{
fprintf(f, "NCA count: %d\n", ncas.size());
fclose(f);
}
auto sys = fs::GetNANDSystemExplorer();
auto ncas = sys->GetFiles("Contents/placehld");
SetSysFirmwareVersion fwver = {0};
for(auto &nca: ncas)
{
std::string path = "@SystemContent://placehld/" + nca.AsUTF8();
path.reserve(FS_MAX_PATH);
FsFileSystem ncafs;
auto rc = fsOpenFileSystemWithId(&ncafs, 0x0100000000000809, FsFileSystemType_ContentData, path.c_str());
FILE *f = fopen("sdmc:/UpdateDemo.log", "a");
if(f)
{
fprintf(f, "Result: 0x%X\n", rc);
fclose(f);
}
if(R_SUCCEEDED(rc))
{
fs::FileSystemExplorer fwfs("gncafwver", "...", &ncafs);
fwfs.ReadFileBlock("file", 0, sizeof(fwver), (u8*)&fwver);
FILE *f = fopen("sdmc:/UpdateDemo.log", "a");
if(f)
{
fprintf(f, "Found system version NCA: %s\n", nca.AsUTF8().c_str());
fclose(f);
}
break;
}
}
Expand All @@ -66,8 +47,8 @@ namespace hos

void CleanPendingUpdate()
{
auto sysnand = fs::GetNANDSystemExplorer();
sysnand->DeleteDirectory("Contents/placehld");
sysnand->CreateDirectory("Contents/placehld");
auto sys = fs::GetNANDSystemExplorer();
sys->DeleteDirectory("Contents/placehld");
sys->CreateDirectory("Contents/placehld");
}
}
111 changes: 1 addition & 110 deletions Goldleaf/Source/nsp/nsp_Builder.cpp
Expand Up @@ -8,7 +8,7 @@

namespace nsp
{
bool BuildNew(pu::String Input, pu::String Out, std::function<void(u64, u64)> Callback)
bool GenerateFrom(pu::String Input, pu::String Out, std::function<void(u64, u64)> Callback)
{
auto exp = fs::GetExplorerForPath(Input);
auto files = exp->GetFiles(Input);
Expand All @@ -34,7 +34,6 @@ namespace nsp
fentries.push_back(entry);
}
strtablesize = (strtablesize + 0x1f) &~ 0x1f;
size_t offset_afterpfs0 = sizeof(PFS0Header) + (sizeof(PFS0FileEntry) * header.FileCount) + strtablesize;
header.StringTableSize = strtablesize;
auto outexp = fs::GetExplorerForPath(Out);
outexp->WriteFileBlock(Out, (u8*)&header, sizeof(PFS0Header));
Expand Down Expand Up @@ -62,112 +61,4 @@ namespace nsp
}
return true;
}

int Build(pu::String ContentsDir, pu::String Out, std::function<void(u64, u64)> Callback)
{
struct dirent *cur_dirent = NULL;
struct stat objstats;
int ret = 0;
u64 tmplen = 0;
u32 pos;
u32 objcount = 0;
u32 stringtable_offset=0;
u64 filedata_reloffset=0;
PFS0Header header;
PFS0FileEntry fsentries[0x400];
PFS0FileEntry *fsentry;
char objpath[257];
char stringtable[0x4000];
memset(&header, 0, sizeof(header));
memset(fsentries, 0, sizeof(fsentries));
memset(stringtable, 0, sizeof(stringtable));
DIR *dir = opendir(ContentsDir.AsUTF8().c_str());
if(dir == NULL) return 1;
FILE *fout = fopen(Out.AsUTF8().c_str(), "wb");
if(fout == NULL)
{
closedir(dir);
return 2;
}
while((cur_dirent = readdir(dir)))
{
if(strcmp(cur_dirent->d_name, ".") == 0 || strcmp(cur_dirent->d_name, "..") == 0) continue;
memset(objpath, 0, sizeof(objpath));
snprintf(objpath, sizeof(objpath)-1, "%s/%s", ContentsDir.AsUTF8().c_str(), cur_dirent->d_name);
if(stat(objpath, &objstats) == -1)
{
ret = false;
break;
}
if((objstats.st_mode & S_IFMT) == S_IFREG)
{
fsentry = &fsentries[objcount];
fsentry->Offset = filedata_reloffset;
fsentry->Size = objstats.st_size;
filedata_reloffset+= fsentry->Size;
fsentry->StringTableOffset = stringtable_offset;
tmplen = strlen(cur_dirent->d_name) + 1;
if((stringtable_offset + tmplen) > sizeof(stringtable))
{
ret = false;
break;
}
strncpy(&stringtable[stringtable_offset], cur_dirent->d_name, sizeof(stringtable) - stringtable_offset);
stringtable_offset+= tmplen;
objcount++;
}
}
closedir(dir);
if(ret == 0)
{
stringtable_offset = (stringtable_offset + 0x1f) & ~0x1f;
header.Magic = Magic;
header.FileCount = objcount;
header.StringTableSize = stringtable_offset;
fwrite(&header, 1, sizeof(header), fout);
fwrite(fsentries, 1, sizeof(PFS0FileEntry) * objcount, fout);
fwrite(stringtable, 1, stringtable_offset, fout);
stringtable_offset = 0;
for(pos = 0; pos < objcount; pos++)
{
tmplen = strlen(&stringtable[stringtable_offset]);
if(tmplen == 0)
{
ret = false;
break;
}
tmplen++;
if(stringtable_offset+tmplen > sizeof(stringtable))
{
ret = false;
break;
}
memset(objpath, 0, sizeof(objpath));
snprintf(objpath, sizeof(objpath) - 1, "%s/%s", ContentsDir.AsUTF8().c_str(), &stringtable[stringtable_offset]);
stringtable_offset+=tmplen;
FILE *fin = fopen(objpath, "rb");
if(fin == NULL)
{
ret = false;
break;
}
u64 rsize = fs::GetFileSystemOperationsBufferSize();
u64 szread = 0;
u64 szrem = fsentries[pos].Size;
u8 *tmpbuf = fs::GetFileSystemOperationsBuffer();
while(szrem)
{
u64 rrsize = std::min(rsize, szrem);
tmplen = fread(tmpbuf, 1, rrsize, fin);
szrem -= tmplen;
szread += tmplen;
fwrite(tmpbuf, 1, tmplen, fout);
Callback(szread, fsentries[pos].Size);
}
fclose(fin);
}
}
fclose(fout);
return ret;
}
}
4 changes: 2 additions & 2 deletions Goldleaf/Source/ui/ui_SettingsLayout.cpp
Expand Up @@ -69,7 +69,7 @@ namespace ui
mainapp->LoadMenuHead(set::GetDictionaryEntry(359) + " " + Fw.display_version + "...");
auto outnsp = sd->FullPathFor(GoldleafDir + "/dump/update/" + Fw.display_version + ".nsp");
sd->DeleteFile(outnsp);
int r = nsp::Build(exp->FullPathFor(Input), outnsp, [&](double Done, double Total)
nsp::GenerateFrom(exp->FullPathFor(Input), outnsp, [&](u64 Done, u64 Total)
{
this->progressInfo->SetMaxValue((double)Total);
this->progressInfo->SetProgress((double)Done);
Expand All @@ -78,7 +78,7 @@ namespace ui
mainapp->LoadMenuData(set::GetDictionaryEntry(43), "Settings", set::GetDictionaryEntry(44));
this->optsMenu->SetVisible(true);
this->progressInfo->SetVisible(false);
mainapp->ShowNotification(set::GetDictionaryEntry(358) + " '" + outnsp + "'. --- " + std::to_string(r));
mainapp->ShowNotification(set::GetDictionaryEntry(358) + " '" + outnsp + "'.");
}

void SettingsLayout::HandleUpdate(pu::String Base, SetSysFirmwareVersion Fw)
Expand Down
2 changes: 1 addition & 1 deletion Goldleaf/Source/ui/ui_TitleDumperLayout.cpp
Expand Up @@ -282,7 +282,7 @@ namespace ui
fs::CreateConcatenationFile(fout);
this->ncaBar->SetVisible(true);
this->dumpText->SetText(set::GetDictionaryEntry(196));
ok = nsp::BuildNew(outdir, fout, [&](u64 done, u64 total)
ok = nsp::GenerateFrom(outdir, fout, [&](u64 done, u64 total)
{
this->ncaBar->SetMaxValue((double)total);
this->ncaBar->SetProgress((double)done);
Expand Down
10 changes: 0 additions & 10 deletions Goldleaf/Source/ui/ui_UpdateLayout.cpp
Expand Up @@ -20,16 +20,6 @@ namespace ui

void UpdateLayout::StartUpdateSearch()
{
nsp::BuildNew("sdmc:/switch/Goldleaf/title", "sdmc:/Dummy.nsp", [&](u64 done, u64 total)
{
this->downloadBar->SetMaxValue((double)total);
this->downloadBar->SetProgress((double)done);
mainapp->CallForRender();
});
return;



if(!net::HasConnection())
{
mainapp->CreateShowDialog(set::GetDictionaryEntry(284), set::GetDictionaryEntry(304), { set::GetDictionaryEntry(234) }, true);
Expand Down
8 changes: 4 additions & 4 deletions Makefile
Expand Up @@ -2,9 +2,9 @@
.PHONY: all clean

all:
$(MAKE) -C Goldleaf/
$(MAKE) -C Forwarder/
@$(MAKE) -C Goldleaf/
@$(MAKE) -C Forwarder/

clean:
$(MAKE) clean -C Goldleaf/
$(MAKE) clean -C Forwarder/
@$(MAKE) clean -C Goldleaf/
@$(MAKE) clean -C Forwarder/

0 comments on commit 2a50b35

Please sign in to comment.