Skip to content

refactor(filesystem): Port the upstream archive file system rework - #653

Open
tintinhamans wants to merge 13 commits into
GeneralsOnlineDevelopmentTeam:mainfrom
tintinhamans:arctic/go/fix/port-archive-filesystem
Open

tintinhamans wants to merge 13 commits into
GeneralsOnlineDevelopmentTeam:mainfrom
tintinhamans:arctic/go/fix/port-archive-filesystem

Conversation

@tintinhamans

@tintinhamans tintinhamans commented Oct 24, 2026 •

Copy link
Copy Markdown

Merge after #635.

Ports TheSuperHackers#3376, TheSuperHackers#3374, TheSuperHackers#3415, TheSuperHackers#3505 and TheSuperHackers#3588, with the upstream number in each commit title, so the BIG loaders are one BIGFileSystem and upstream syncs stop conflicting. GO's BIG header hardening and community patch loading are kept. Includes #654, closed as folded into this PR.

The TheSuperHackers#3588 commit reads the BIG header whole and checks it. GO main skipped the fourth header field, so a file cut off after the file count loaded as an empty archive. A header or directory that is cut short, a negative file count and a name that does not end are now rejected like a wrong identifier, and the half built archive is deleted.

It also ports TheSuperHackers#3571 and TheSuperHackers#3458, both approved and not merged upstream yet. An archive that overwrites others is placed first with lower_bound, where find on a multimap may return any of the equal keys. ArchiveFile::getFileListInDirectory lists subdirectories only when asked, as loose files already do.

Tested: z_generals builds.

@tintinhamans
tintinhamans force-pushed the arctic/go/fix/port-archive-filesystem branch from 73f827c to 24e01a7 Compare October 28, 2026 01:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants