Only extract contents marked in the CIA content index.

This commit is contained in:
Steveice10
2018-07-06 17:01:51 -07:00
parent 046bb359ee
commit 52dbe5e187
2 changed files with 16 additions and 14 deletions
+2
View File
@@ -102,6 +102,7 @@ void cia_save(cia_context* ctx, u32 type, u32 flags)
chunk = (ctr_tmd_contentchunk*)(body->contentinfo + (sizeof(ctr_tmd_contentinfo) * TMD_MAX_CONTENTS)); chunk = (ctr_tmd_contentchunk*)(body->contentinfo + (sizeof(ctr_tmd_contentinfo) * TMD_MAX_CONTENTS));
for(i = 0; i < getbe16(body->contentcount); i++) { for(i = 0; i < getbe16(body->contentcount); i++) {
if(ctx->header.contentindex[i >> 3] & (0x80 >> (i & 7))) {
sprintf(tmpname, "%s.%04x.%08x", path->pathname, getbe16(chunk->index), getbe32(chunk->id)); sprintf(tmpname, "%s.%04x.%08x", path->pathname, getbe16(chunk->index), getbe32(chunk->id));
fprintf(stdout, "Saving content #%04x to %s\n", getbe16(chunk->index), tmpname); fprintf(stdout, "Saving content #%04x to %s\n", getbe16(chunk->index), tmpname);
@@ -119,6 +120,7 @@ void cia_save(cia_context* ctx, u32 type, u32 flags)
cia_save_blob(ctx, tmpname, offset, getbe64(chunk->size) & 0xffffffff, docrypto); cia_save_blob(ctx, tmpname, offset, getbe64(chunk->size) & 0xffffffff, docrypto);
offset += getbe64(chunk->size) & 0xffffffff; offset += getbe64(chunk->size) & 0xffffffff;
}
chunk++; chunk++;
} }
BIN
View File
Binary file not shown.