Skip to content

Commit

Permalink
Add more keys to read_headers.py
Browse files Browse the repository at this point in the history
  • Loading branch information
dhinakg committed Jun 23, 2024
1 parent d6e29f2 commit 67c643d
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion read_headers.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,14 @@ class AAFieldKeys(enum.Enum):
SIZE = AAFieldKey("SIZ", AAFieldTypes.UINT)
ENTRY_OFFSET = AAFieldKey("IDX", AAFieldTypes.UINT)
ENTRY_SIZE = AAFieldKey("IDZ", AAFieldTypes.UINT)
PATH = AAFieldKey("PAT", AAFieldTypes.STRING)
LINK_PATH = AAFieldKey("LNK", AAFieldTypes.STRING)
FLAGS = AAFieldKey("FLG", AAFieldTypes.UINT)
UID = AAFieldKey("UID", AAFieldTypes.UINT)
GID = AAFieldKey("GID", AAFieldTypes.UINT)
MODE = AAFieldKey("MOD", AAFieldTypes.UINT)
MODIFICATION_TIME = AAFieldKey("MTM", AAFieldTypes.TIMESPEC)
CREATION_TIME = AAFieldKey("CTM", AAFieldTypes.TIMESPEC)

@classmethod
def _missing_(cls, value):
Expand Down Expand Up @@ -189,8 +197,12 @@ def scan_range(view: memoryview, indent="", offset=0):

idx += size
blob_size += size
elif key.type == AAFieldTypes.TIMESPEC:
# TODO: Figure out how to represent this
size = {"S": 8, "T": 12}[subtype]
val = int.from_bytes(fields.read(size), "little")
else:
raise ValueError(f"Unknown key type: {key}")
raise ValueError(f"Unknown key type: {key.type}")

parsed_fields[key] = val

Expand All @@ -199,6 +211,7 @@ def scan_range(view: memoryview, indent="", offset=0):
if AAFieldKeys.DATA.value in parsed_fields:
blob_start, blob_size = parsed_fields[AAFieldKeys.DATA.value]
with view[blob_start : blob_start + 4] as inner_magic:
# TODO: This does not handle compressed blobs
if inner_magic == b"AA01":
scan_range(view[blob_start : blob_start + blob_size], indent + " ", offset + blob_start)

Expand Down

0 comments on commit 67c643d

Please sign in to comment.