ObjFW  History of src/OFLHAArchive.m of 5fed36df4155cb29

History of the file that is called src/OFLHAArchive.m at check-in 5fed36df4155cb29

2024-04-03
02:16
[3329a01d33] part of check-in [7413a728a7] Change license to LGPLv3 only (check-in: [7413a728a7] user: js, branch: trunk, size: 14546) [annotate] [blame] [check-ins using] [diff]
2024-03-04
01:21
[ddea1bb0a0] part of check-in [34a3e817b3] Rename schemes for archive IRI handlers back

The naming was confusing, as it is used to refer to a specific file in
an archive and not the entire archive. (check-in: [34a3e817b3] user: js, branch: trunk, size: 14338) [annotate] [blame] [check-ins using] [diff]

2024-03-03
20:03
[1e418bf0dc] part of check-in [b8afc53cce] OFLHAArchive: Don't default to ISO 8859-1 (check-in: [b8afc53cce] user: js, branch: trunk, size: 14352) [annotate] [blame] [check-ins using] [diff]
19:42
[de067758a4] part of check-in [13f0321eff] Rename schemes for archive IRI handlers

Some names are too generic and might cause conflicts (e.g. zoo). (check-in: [13f0321eff] user: js, branch: trunk, size: 14394) [annotate] [blame] [check-ins using] [diff]

19:29
[7fd2208cb9] part of check-in [b431203426] OFZooArchive: Add write support (check-in: [b431203426] user: js, branch: trunk, size: 14380) [annotate] [blame] [check-ins using] [diff]
2024-02-28
00:24
[97efb45aaf] part of check-in [9a95da71d5] Add OFZooArchive

Only support for reading so far.

Compression methods 0 (uncompressed) and 2 (LZ77 + Huffman, apparently
identical to lh4/lh5) are supported. (check-in: [9a95da71d5] user: js, branch: trunk, size: 14379) [annotate] [blame] [check-ins using] [diff]

2024-02-27
21:07
[565fa84624] part of check-in [7234d82dff] Add missing imports when using --disable-sockets (check-in: [7234d82dff] user: js, branch: 1.0, size: 14089) [annotate] [blame] [check-ins using] [diff]
21:06
[b00facb75e] part of check-in [2d14df1979] Add missing imports when using --disable-sockets (check-in: [2d14df1979] user: js, branch: trunk, size: 14377) [annotate] [blame] [check-ins using] [diff]
2024-02-26
21:46
[ac15e6d468] part of check-in [9d9fa168aa] OFLHAArchive: Add support for files > 4 GB (check-in: [9d9fa168aa] user: js, branch: trunk, size: 14343) [annotate] [blame] [check-ins using] [diff]
20:09
[81c53ddb5d] part of check-in [4fbf5837fd] OFLHAArchive: Properly zero-terminate archives (check-in: [4fbf5837fd] user: js, branch: 1.0, size: 14055) [annotate] [blame] [check-ins using] [diff]
20:09
[7a342795be] part of check-in [413965aa27] OFLHAArchive: Properly zero-terminate archives (check-in: [413965aa27] user: js, branch: trunk, size: 14343) [annotate] [blame] [check-ins using] [diff]
2024-02-24
17:27
[f4f3dda99f] part of check-in [f588271db7] OFLHAArchive: Add support for -pm0- files (check-in: [f588271db7] user: js, branch: trunk, size: 13991) [annotate] [blame] [check-ins using] [diff]
17:25
[70eb128b91] part of check-in [927d1693c6] OFLHAArchive: Ignore trailing garbage (check-in: [927d1693c6] user: js, branch: 1.0, size: 13703) [annotate] [blame] [check-ins using] [diff]
17:24
[26a6d95955] part of check-in [35257251ec] OFLHAArchive: Ignore trailing garbage (check-in: [35257251ec] user: js, branch: trunk, size: 13944) [annotate] [blame] [check-ins using] [diff]
16:17
[f92b1ecdad] part of check-in [42ab7308b9] OFLHAArchive: Add support for -lz4- files (check-in: [42ab7308b9] user: js, branch: trunk, size: 13576) [annotate] [blame] [check-ins using] [diff]
2024-02-23
23:25
[80292dff55] part of check-in [9350b01931] OFLHAArchive: Add support for decompressing -lhx- (check-in: [9350b01931] user: js, branch: trunk, size: 13529) [annotate] [blame] [check-ins using] [diff]
23:11
[e41cd8005a] part of check-in [91089d4e47] OFLHAArchive: Treat directory as uncompressed (check-in: [91089d4e47] user: js, branch: trunk, size: 13335) [annotate] [blame] [check-ins using] [diff]
22:55
[55f03233bb] part of check-in [bf45f06d9b] OFLHAArchive: Don't assume method is uncompressed (check-in: [bf45f06d9b] user: js, branch: trunk, size: 13288) [annotate] [blame] [check-ins using] [diff]
2024-01-02
17:17
[653818a552] part of check-in [26ddd2e4e4] Update copyright (check-in: [26ddd2e4e4] user: js, branch: trunk, size: 13106) [annotate] [blame] [check-ins using] [diff]
2023-01-06
09:04
[9e5bf54c20] part of check-in [8939cbdb52] Update copyright (check-in: [8939cbdb52] user: js, branch: trunk, size: 13106) [annotate] [blame] [check-ins using] [diff]
2022-11-24
00:21
[e14841e9db] part of check-in [23272e6d43] Rename OFURI to OFIRI (check-in: [23272e6d43] user: js, branch: trunk, size: 13106) [annotate] [blame] [check-ins using] [diff]
2022-11-23
21:47
[9bc5b44666] part of check-in [4f76840749] OFLHAArchive: Fix iterating without reading (check-in: [4f76840749] user: js, branch: trunk, size: 13106) [annotate] [blame] [check-ins using] [diff]
2022-10-11
00:28
[fa04eb799a] part of check-in [a8bc0b31d0] +[URIForFile{ -> Path}:inArchive{ -> WithURI}:] (check-in: [a8bc0b31d0] user: js, branch: trunk, size: 12785) [annotate] [blame] [check-ins using] [diff]
2022-10-09
16:33
[4f2f21f0fa] part of check-in [9b3cae6cba] Drop of- prefix from URI schemes

It's generally uncommon to prefix those.

Additionally, it might be worthwhile to try to get those actually
registered, which requires usage. (check-in: [9b3cae6cba] user: js, branch: trunk, size: 12782) [annotate] [blame] [check-ins using] [diff]

2022-10-08
23:47
[3876237eb4] part of check-in [55858a10bb] Move all archive URI handling to a single file (check-in: [55858a10bb] user: js, branch: trunk, size: 12785) [annotate] [blame] [check-ins using] [diff]
2022-10-06
23:18
[7d50694f14] part of check-in [b53baf71ad] OFLHAArchive: Make returned streams retain archive

In order to not create a retain cycle, this changes the reference to the
last returned stream to an unsafe unretained one that the stream itself
resets to nil in its dealloc. (check-in: [b53baf71ad] user: js, branch: trunk, size: 12736) [annotate] [blame] [check-ins using] [diff]

2022-10-04
22:27
[9e5adce105] part of check-in [f3bdf29f07] Add of-lha: URI handler (check-in: [f3bdf29f07] user: js, branch: trunk, size: 12268) [annotate] [blame] [check-ins using] [diff]
2022-09-28
21:40
[37612138b5] part of check-in [e7ab06503c] Rename OFUR{L -> I} in preparation for URI support (check-in: [e7ab06503c] user: js, branch: trunk, size: 12120) [annotate] [blame] [check-ins using] [diff]
2022-08-27
21:42
[42c3ad0bd8] part of check-in [7094055a27] Make GCC happy again (check-in: [7094055a27] user: js, branch: trunk, size: 12120) [annotate] [blame] [check-ins using] [diff]
20:58
[356333f064] part of check-in [73f5e3aa84] OFSeekableStream: Add OFSeekWhence enum (check-in: [73f5e3aa84] user: js, branch: trunk, size: 12119) [annotate] [blame] [check-ins using] [diff]
20:39
[16be8d0f67] part of check-in [51589c6496] Rename OFFileOffset -> OFStreamOffset (check-in: [51589c6496] user: js, branch: trunk, size: 12101) [annotate] [blame] [check-ins using] [diff]
20:23
[39715cb197] part of check-in [6f13f74134] OFLHAArchiveEntry: Make (un)compressedSize ull

There's newer, less common LHA versions that allow 64 bit for the size.
However, for consistency with OFTarArchiveEntry, use unsigned long long
instead of uint64_t. (check-in: [6f13f74134] user: js, branch: trunk, size: 12091) [annotate] [blame] [check-ins using] [diff]

2022-08-15
23:02
[3c453bb2f0] part of check-in [fee2316eca] OF{LHA,Tar,ZIP}Archive: Use URL instead of path (check-in: [fee2316eca] user: js, branch: trunk, size: 12039) [annotate] [blame] [check-ins using] [diff]
2022-02-12
07:46
[5dc375ab00] part of check-in [1a86b8175b] Update copyright (check-in: [1a86b8175b] user: js, branch: trunk, size: 12029) [annotate] [blame] [check-ins using] [diff]
2022-01-28
19:34
[ff32dec968] part of check-in [d9586ed175] Don't assume EWOULDBLOCK and EAGAIN are the same (check-in: [d9586ed175] user: js, branch: trunk, size: 12029) [annotate] [blame] [check-ins using] [diff]
2021-11-06
17:00
[6f31d26ec9] part of check-in [0eb7274946] Fix too strict OFEnsure introduced in last checkin (check-in: [0eb7274946] user: js, branch: trunk, size: 12008) [annotate] [blame] [check-ins using] [diff]
15:57
[9340f7479b] part of check-in [d1d36ae522] OFStream: New write API

The old write API made it too easy to lose bytes when a stream is set to
non-blocking mode. The new API always throws when not all bytes were
written, which forces handling the number of bytes being written being
smaller than the number of bytes requested to be written. (check-in: [d1d36ae522] user: js, branch: trunk, size: 12007) [annotate] [blame] [check-ins using] [diff]

2021-04-28
20:56
[8caabc2fe9] part of check-in [fc4697adbf] OF{LHA,ZIP}Archive: Make mode enum private (check-in: [fc4697adbf] user: js, branch: trunk, size: 11963) [annotate] [blame] [check-ins using] [diff]
2021-04-18
20:51
[164897d7b4] part of check-in [35de667566] Rename everything in several smaller files (check-in: [35de667566] user: js, branch: new-naming-convention, size: 12043) [annotate] [blame] [check-ins using] [diff]
2021-04-17
18:36
[53cd493a82] part of check-in [aa74e85220] Rename all remaining enums (check-in: [aa74e85220] user: js, branch: new-naming-convention, size: 12045) [annotate] [blame] [check-ins using] [diff]
14:19
[ad2e9808eb] part of check-in [e69db838d9] of_offset_t -> OFFileOffset (check-in: [e69db838d9] user: js, branch: new-naming-convention, size: 12090) [annotate] [blame] [check-ins using] [diff]
02:10
[0005d98cda] part of check-in [255f21fb3d] of_string_encoding_t -> OFStringEncoding (check-in: [255f21fb3d] user: js, branch: new-naming-convention, size: 12086) [annotate] [blame] [check-ins using] [diff]
2021-03-07
20:25
[7c9dae9bb4] part of check-in [1b82d3bf4f] *.m: Fold methods into one line where it fits (check-in: [1b82d3bf4f] user: js, branch: trunk, size: 12102) [annotate] [blame] [check-ins using] [diff]
2021-01-02
22:04
[2ae2007028] part of check-in [374e1a1bfa] Update copyright (check-in: [374e1a1bfa] user: js, branch: trunk, size: 12244) [annotate] [blame] [check-ins using] [diff]
2020-09-27
03:08
[d4b33ee3bc] part of check-in [9e9ce6aa1c] Work around bugs in Apple GCC 4.0.1

Still miscompiles things. (check-in: [9e9ce6aa1c] user: js, branch: trunk, size: 12333) [annotate] [blame] [check-ins using] [diff]

2020-06-28
15:03
[493061fab4] part of check-in [b6cb3addd0] Use OF_DIRECT(_MEMBERS) where appropriate (check-in: [b6cb3addd0] user: js, branch: trunk, size: 12396) [annotate] [blame] [check-ins using] [diff]
2020-02-16
18:22
[a8a54167d4] part of check-in [1d6d3eb61c] OF{LHA,Tar,ZIP}Archive: Gracefully handle close (check-in: [1d6d3eb61c] user: js, branch: trunk, size: 12360) [annotate] [blame] [check-ins using] [diff]
2020-01-14
00:16
[a09f2c8a17] part of check-in [3b43d51006] More consistent -[close] behavior

This means refusing to close twice, calling -[close] from -[dealloc] and
not calling -[cancelAsyncRequests].

Calling -[cancelAsyncRequests] in -[close] is too dangerous, as -[close]
gets called by -[dealloc]: If the queue is the last reference to the
object, at the point where -[cancelAsyncRequests] removes it from the
queue, the object will start to deallocate and call into
-[cancelAsyncRequests] again, which is still in the middle of removing
it and now finds itself with an inconsistent state. (check-in: [3b43d51006] user: js, branch: trunk, size: 12018) [annotate] [blame] [check-ins using] [diff]

2020-01-02
01:51
[dd17a9200e] part of check-in [c7f0229795] Update copyright (check-in: [c7f0229795] user: js, branch: trunk, size: 11771) [annotate] [blame] [check-ins using] [diff]
2019-09-29
20:53
[e8d8679991] part of check-in [e0a330b377] Reduce ivar scopes (check-in: [e0a330b377] user: js, branch: trunk, size: 11768) [annotate] [blame] [check-ins using] [diff]
2019-06-17
02:33
[e91adc15fc] part of check-in [17d57e01ff] Remove underscores from class names (check-in: [17d57e01ff] user: js, branch: trunk, size: 11770) [annotate] [blame] [check-ins using] [diff]
2019-03-09
10:48
[ba6f864ebc] part of check-in [c1e949a8c6] Several minor fixes (check-in: [c1e949a8c6] user: js, branch: trunk, size: 11719) [annotate] [blame] [check-ins using] [diff]
2019-03-08
00:35
[12097984b6] part of check-in [bceb7ed4c9] Use dot syntax (check-in: [bceb7ed4c9] user: js, branch: trunk, size: 11729) [annotate] [blame] [check-ins using] [diff]
2019-01-03
19:13
[9fc92038be] part of check-in [0509d7a844] Update copyright (check-in: [0509d7a844] user: js, branch: trunk, size: 11599) [annotate] [blame] [check-ins using] [diff]
2018-07-08
18:00
[164823b060] part of check-in [8333373867] OF{LHA,Tar}Archive: Fix skipping over entries (check-in: [8333373867] user: js, branch: trunk, size: 11593) [annotate] [blame] [check-ins using] [diff]
2018-06-17
16:32
[6e9b4cb571] part of check-in [bf8788d709] ofarc: Add LHA write and append support (check-in: [bf8788d709] user: js, branch: trunk, size: 11569) [annotate] [blame] [check-ins using] [diff]
01:01
[6b42000b6a] part of check-in [54fe3999b7] OFLHAArchive: Add write and append support (check-in: [54fe3999b7] user: js, branch: trunk, size: 11450) [annotate] [blame] [check-ins using] [diff]
2018-06-16
15:50
[34e73a192a] part of check-in [3d7f5098f2] Move OFLHAArchive_LHStream to a separate file (check-in: [3d7f5098f2] user: js, branch: trunk, size: 7691) [annotate] [blame] [check-ins using] [diff]
2018-06-12
21:33
[1f3aa621cb] part of check-in [8f21e8acb5] Rename OFChecksum{Failed -> Mismatch}Exception

This also adds a parameter for the actual and expected checksum. (check-in: [8f21e8acb5] user: js, branch: trunk, size: 20045) [annotate] [blame] [check-ins using] [diff]

2018-06-10
20:29
[4f0d23572a] part of check-in [6b42e44f99] OF{LHA,ZIP}Archive: Improve truncation detection (check-in: [6b42e44f99] user: js, branch: trunk, size: 19759) [annotate] [blame] [check-ins using] [diff]
14:42
[f7e8cf8472] part of check-in [fd5dac720d] ofzip: Show compression method for ZIP archives (check-in: [fd5dac720d] user: js, branch: trunk, size: 19587) [annotate] [blame] [check-ins using] [diff]
12:29
[4ab39c71a2] part of check-in [2e354552ad] OFLHAArchive: Skip compressed entries much faster (check-in: [2e354552ad] user: js, branch: trunk, size: 19504) [annotate] [blame] [check-ins using] [diff]
2018-06-06
21:55
[a7a157c7cf] part of check-in [fd9801229f] Deflate & LHA: Return buffer to stream on close (check-in: [fd9801229f] user: js, branch: trunk, size: 18560) [annotate] [blame] [check-ins using] [diff]
2018-06-04
22:47
[19e9187eb0] part of check-in [744956a000] OFLHAArchive: Prefill the sliding window with ' '

Apparently, there are two incompatible variants of LHA: One where the
sliding window is prefilled with zeros and one where it is prefilled
with spaces. It seems prefilling it with spaces is the original way,
while LHA on Amiga prefilled it with zeros.

As it is impossible to detect which one was used, a flag will be added
later to provide an Amiga compatibility mode. (check-in: [744956a000] user: js, branch: trunk, size: 18365) [annotate] [blame] [check-ins using] [diff]

22:05
[6f9fadd6e2] part of check-in [fca5e53e12] OFLHAArchive: Verify CRC16 checksum (check-in: [fca5e53e12] user: js, branch: trunk, size: 18316) [annotate] [blame] [check-ins using] [diff]
2018-06-03
23:31
[56fa949e3a] part of check-in [aacb5897a0] Add -[OFObject allocZeroedMemoryWithSize:(count:)] (check-in: [aacb5897a0] user: js, branch: trunk, size: 18063) [annotate] [blame] [check-ins using] [diff]
20:11
[9530d9435c] part of check-in [44413ada84] Work around GCC being extremely buggy

This includes GCC thinking uint16_t and uint_fast16_t have a different
signedness and pointers to subclasses of OFStream and pointers to
OFStream being incompatible pointer types. (check-in: [44413ada84] user: js, branch: trunk, size: 18221) [annotate] [blame] [check-ins using] [diff]

18:15
[f1be19a9ae] part of check-in [6cbc2253b8] OFLHAArchive: Support for -lh[4567]- compression (check-in: [6cbc2253b8] user: js, branch: trunk, size: 18256) [annotate] [blame] [check-ins using] [diff]
2018-05-27
11:07
[1011e54787] part of check-in [57f9bc6ace] OFLHAArchiveEntry: Add support for LHA level 0 (check-in: [57f9bc6ace] user: js, branch: trunk, size: 5964) [annotate] [blame] [check-ins using] [diff]
07:32
[dc06a91f23] part of check-in [1a6e3816c1] OFLHAArchiveEntry: Keep the method as a string

It is only necessary to extract files, so it makes sense to keep it as
is to be able to list files using an unknown method. (check-in: [1a6e3816c1] user: js, branch: trunk, size: 5515) [annotate] [blame] [check-ins using] [diff]

2018-05-26
23:04
Added: [d7dfa4dbcd] part of check-in [790b5344d6] Add OFLHAArchive

This is currently limited to reading uncompressed LHA level 2 files. (check-in: [790b5344d6] user: js, branch: trunk, size: 5527) [annotate] [blame] [check-ins using]