@ -53,22 +53,15 @@ NSP::NSP(VirtualFile file_)
return ;
return ;
}
}
const auto files = pfs - > GetFiles ( ) ;
if ( IsDirectoryExeFS ( pfs ) ) {
if ( IsDirectoryExeFS ( pfs ) ) {
extracted = true ;
extracted = true ;
exefs = pfs ;
InitializeExeFSAndRomFS ( files ) ;
const auto & files = pfs - > GetFiles ( ) ;
const auto romfs_iter =
std : : find_if ( files . begin ( ) , files . end ( ) , [ ] ( const FileSys : : VirtualFile & file ) {
return file - > GetName ( ) . find ( " .romfs " ) ! = std : : string : : npos ;
} ) ;
if ( romfs_iter ! = files . end ( ) )
romfs = * romfs_iter ;
return ;
return ;
}
}
extracted = false ;
extracted = false ;
const auto files = pfs - > GetFiles ( ) ;
SetTicketKeys ( files ) ;
SetTicketKeys ( files ) ;
ReadNCAs ( files ) ;
ReadNCAs ( files ) ;
@ -212,6 +205,20 @@ bool NSP::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
return false ;
return false ;
}
}
void NSP : : InitializeExeFSAndRomFS ( const std : : vector < VirtualFile > & files ) {
exefs = pfs ;
const auto romfs_iter = std : : find_if ( files . begin ( ) , files . end ( ) , [ ] ( const VirtualFile & file ) {
return file - > GetName ( ) . find ( " .romfs " ) ! = std : : string : : npos ;
} ) ;
if ( romfs_iter = = files . end ( ) ) {
return ;
}
romfs = * romfs_iter ;
}
void NSP : : ReadNCAs ( const std : : vector < VirtualFile > & files ) {
void NSP : : ReadNCAs ( const std : : vector < VirtualFile > & files ) {
for ( const auto & outer_file : files ) {
for ( const auto & outer_file : files ) {
if ( outer_file - > GetName ( ) . substr ( outer_file - > GetName ( ) . size ( ) - 9 ) ! = " .cnmt.nca " ) {
if ( outer_file - > GetName ( ) . substr ( outer_file - > GetName ( ) . size ( ) - 9 ) ! = " .cnmt.nca " ) {