* Add `current_bit_offset()` and `read_bits(...)` to `std::mem`
* Replace deprecated BitfieldOrder enum values with new clearer names
This adds new options named `MostToLeastSignificant` and `LeastToMostSignificant` to replace the old `LeftToRight` and `RightToLeft` names. These names should be much clearer about what they affect and how.
* Throw errors when `std::core::(get|set)_bitfield_order()` are called
* Update all patterns to work with the new bitfield behaviors
* ELF: make section/segment data arrays sealed
* ELF: set display names for section/segment data
* Added new functions to library
* Updated ELF pattern
---------
Co-authored-by: Nik <werwolv98@gmail.com>
* Initial format for Buddy Allocator structures in `.DS_Store` files
* Add list of entries for files in `.DS_Store`
* Add root block, offsets, toc and free lists structures
* Add parsing of block data
* Document `.DS_Store` pattern and add test file
* Update pbz pattern
- Rename pbzx to pbz; turns out the 'x' is the compression type.
- Use type::Magic for the "pbz" magic number.
- Decode compression type as an enum.
- Mention compression_tool in the header comment.
* Rename pbzx.hexpat to pbz.hexpat
* patterns: added a few voxel model patterns
* patterns: updated qbcl
according to https://gist.github.com/tostc/7f049207a2e5a7ccb714499702b5e2fd
* readme: added new voxel format petterns to the readme
* tests: added vxl test file
* ccvxl: updated two fields
* Update pe.hexpat
Implementing a number of things and fixing others
* Update pe.hexpat
Adding the readonlyData pattern
* Update pe.hexpat
Testing putting the number of tabs on Github to 4 instead of 8 (so that comments on the code for the Sections don't break)
* Update pe.hexpat
Reverting change that turned out to be needless
* Update pe.hexpat
Actually sending the `products[while($ != richHeaderEndPosition)]` to `products[while($ < richHeaderEndPosition)]` change
* Add files via upload
Adding NE test file
* Add files via upload
Adding NE pattern file
* Update ne.hexpat
Fixing the error with the entry table assignment
* Update README.md
Added the NE pattern file to the list of patterns
Previously, the zip pattern was searching for the end-of-central-directory
header signature (50 4B 05 06) by searching the entire file for it. This is
*very* slow for large files, and risks false positives since those bytes
could randomly appear in compressed data. I had this happen on the first
large (>2GB) zip file I tried.
I'm now checking for the EOCD signature at exactly 22 bytes from the end of
the file (in the common case there is no zip comment), and if that fails
I search for it in the last 64KB of the file (in case there *is* a comment
at the end of the EOCD, which can't be larger than 64KB). This is much
faster, and fixes loading my zip file where it was spuriously finding the
signature in the wrong place.
This still has a low risk of false positives (what if the comment has the
50 4B 05 06 bytes? what if there is a short comment but the signature
appears in the last 64KB of compressed data?), but I don't know what's the
"right" way to find the EOCD, or how proper zip-reading tools handle the
ambiguity...