Skip to content

Commit 314830c

Browse files
committed
added more fields
1 parent a3b8d54 commit 314830c

File tree

4 files changed

+21
-14
lines changed

4 files changed

+21
-14
lines changed

orbisFSTool/OrbisFSFormat.h

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ typedef struct {
6161
uint64_t unk3_is_0; //is expected to be 0
6262
char devpath[0x100];
6363
uint32_t inodesInRootFolder;//all the child iNodes inside /
64-
uint32_t unk5_is_0xffffffff;//is expected to be 0xFFFFFFFF
64+
uint32_t rdev_is_0xffffffff;//is expected to be 0xFFFFFFFF
6565
uint32_t highestUsedInode; //not neccessarily in use now, but was in use at some point
6666
uint8_t _pad2[0x34];
6767
uint64_t blocksUsed;
@@ -83,18 +83,21 @@ typedef struct {
8383
uint32_t uid;
8484
uint32_t gid;
8585
uint32_t unk1;
86-
uint32_t unk2;
87-
uint32_t unk3;
86+
uint32_t _pad2;
87+
union {
88+
uint32_t children; //only valid for directories??
89+
uint32_t unk2; //used for non-directories
90+
};
8891
uint64_t filesize;
89-
uint32_t unk4;
90-
uint32_t unk5;
92+
uint32_t usedBlocks;
93+
uint32_t flags; //only on '/user/app/NPXS40172/app.pkg' the value is 2, on all the other files it is 0
9194
uint64_t unk6;
9295
uint64_t createDate;
93-
uint64_t _pad2; //should be zero
94-
uint64_t modDate;
9596
uint64_t _pad3; //should be zero
96-
uint64_t accessDate;
97+
uint64_t modDate;
9798
uint64_t _pad4; //should be zero
99+
uint64_t accessDate;
100+
uint64_t _pad5; //should be zero
98101
OrbisFSChainLink_t resourceLnk[4];
99102
OrbisFSChainLink_t dataLnk[0x20];
100103
} ATTRIBUTE_PACKED OrbisFSInode_t;

orbisFSTool/OrbisFSImage.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ void OrbisFSImage::init(){
186186
printf("\tunk3 : 0x%llx\n",_diskinfoblock->unk3_is_0);
187187
printf("\tdevpath : '%.*s'\n",(int)sizeof(_diskinfoblock->devpath),_diskinfoblock->devpath);
188188
printf("\tinodesInRootFolder: 0x%x (%d)\n",_diskinfoblock->inodesInRootFolder,_diskinfoblock->inodesInRootFolder);
189-
printf("\tunk5 : 0x%x\n",_diskinfoblock->unk5_is_0xffffffff);
189+
printf("\trdev : 0x%x\n",_diskinfoblock->rdev_is_0xffffffff);
190190
printf("\thighestUsedInode : 0x%x (%d)\n",_diskinfoblock->highestUsedInode,_diskinfoblock->highestUsedInode);
191191
printf("\tblocksUsed : 0x%llx\n",_diskinfoblock->blocksUsed);
192192
printf("\tblocksAvailable : 0x%llx\n",_diskinfoblock->blocksAvailable);
@@ -201,7 +201,7 @@ void OrbisFSImage::init(){
201201
retassure(_diskinfoblock->unk1_is_2 == 2, "unexpected value for unk1");
202202
retassure(_diskinfoblock->unk2_is_0x40 == 0x40, "unexpected value for unk2");
203203
retassure(_diskinfoblock->unk3_is_0 == 0, "unexpected value for unk3");
204-
retassure(_diskinfoblock->unk5_is_0xffffffff == 0xFFFFFFFF, "unexpected value for unk5");
204+
retassure(_diskinfoblock->rdev_is_0xffffffff == 0xFFFFFFFF, "unexpected value for rdev_is_0xffffffff");
205205
retassure(memvcmp(_diskinfoblock->_pad2, sizeof(_diskinfoblock->_pad2), 0x00), "_pad2 is not zero");
206206
retassure(!memcmp(&_diskinfoblock->diskinfoLnk, &_superblock->diskinfoLnk, sizeof(_superblock->diskinfoLnk)), "diskinfoLnk mismatch between superblock and diskinfoblock");
207207
retassure(_diskinfoblock->inodedirLnk.type == ORBIS_FS_CHAINLINK_TYPE_LINK, "Unexpected inodedirLnk.type");

orbisFSTool/OrbisFSInodeDirectory.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ OrbisFSInode_t *OrbisFSInodeDirectory::findInode(uint32_t inodeNum){
117117
retassure(memvcmp(&ret->_pad2, sizeof(ret->_pad2), 0x00), "inode %d entry _pad2 is not zero",inodeNum);
118118
retassure(memvcmp(&ret->_pad3, sizeof(ret->_pad3), 0x00), "inode %d entry _pad3 is not zero",inodeNum);
119119
retassure(memvcmp(&ret->_pad4, sizeof(ret->_pad4), 0x00), "inode %d entry _pad4 is not zero",inodeNum);
120+
retassure(memvcmp(&ret->_pad5, sizeof(ret->_pad5), 0x00), "inode %d entry _pad5 is not zero",inodeNum);
120121
return ret;
121122
}
122123

orbisFSTool/main.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -327,11 +327,14 @@ int main_r(int argc, const char * argv[]) {
327327
printf("\tuid : %d\n",node.uid);
328328
printf("\tgid : %d\n",node.gid);
329329
printf("\tunk1 : %d\n",node.unk1);
330-
printf("\tunk2 : %d\n",node.unk2);
331-
printf("\tunk3 : %d\n",node.unk3);
330+
if (S_ISDIR(node.fileMode)) {
331+
printf("\tchildren : %d\n",node.children);
332+
}else{
333+
printf("\tunk2 : %d\n",node.unk2);
334+
}
332335
printf("\tfilesize : 0x%016llx (%lld)\n",node.filesize,node.filesize);
333-
printf("\tunk4 : %d\n",node.unk4);
334-
printf("\tunk5 : %d\n",node.unk5);
336+
printf("\tusedBlocks : %d\n",node.usedBlocks);
337+
printf("\tflags : %d\n",node.flags);
335338
printf("\tunk6 : %lld\n",node.unk6);
336339
printf("\tcreateDate : %10lld (%s)\n",node.createDate,strForDate(node.createDate).c_str());
337340
printf("\tmodDate : %10lld (%s)\n",node.modDate,strForDate(node.modDate).c_str());

0 commit comments

Comments
 (0)