diff options
author | Jay Freeman (saurik) <saurik@saurik.com> | 2008-06-16 20:04:36 +0000 |
---|---|---|
committer | Jay Freeman (saurik) <saurik@saurik.com> | 2008-06-16 20:04:36 +0000 |
commit | 756bdb9f9e524b16c12d17d2d19d8bdaff860425 (patch) | |
tree | f3c6c10ea5c7a9e50b7c0867005f3ec6793cc7d4 /arid.cpp | |
parent | efd6cd4a4be2d0725ade53a64bbb5d68bdda43ef (diff) | |
download | ldid-756bdb9f9e524b16c12d17d2d19d8bdaff860425.tar.gz ldid-756bdb9f9e524b16c12d17d2d19d8bdaff860425.tar.zst ldid-756bdb9f9e524b16c12d17d2d19d8bdaff860425.zip |
Added .ar and .elc determinism.
Diffstat (limited to 'arid.cpp')
-rw-r--r-- | arid.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/arid.cpp b/arid.cpp new file mode 100644 index 0000000..ab2bccb --- /dev/null +++ b/arid.cpp @@ -0,0 +1,29 @@ +#include <iostream> +#include "minimal/mapping.h" + +struct ar_hdr { + char ar_name[16]; + char ar_date[12]; + char ar_uid[6]; + char ar_gid[6]; + char ar_mode[8]; + char ar_size[10]; +#define ARFMAG "`\n" + char ar_fmag[2]; +}; + +int main(int argc, char *argv[]) { + size_t size; + _assert(argc == 2); + uint8_t *data = reinterpret_cast<uint8_t *>(map(argv[1], 0, _not(size_t), &size, false)); + data += 8; + uint8_t *end = data + size; + while (end - data >= sizeof(struct ar_hdr)) { + struct ar_hdr *head = reinterpret_cast<struct ar_hdr *>(data); + memset(head->ar_date + 1, ' ', sizeof(head->ar_date) - 1); + head->ar_date[0] = '0'; + size_t length = strtoul(head->ar_size, NULL, 10); + data += length + sizeof(struct ar_hdr); + } + return 0; +} |