64 Commits

Author SHA1 Message Date
mrkkrp 5d857874ba Add ‘getEntrySource’ function
Close #15.
2016-05-15 23:50:49 +07:00
mrkkrp 905328dd57 Speed up detection of invalid archives
Close #16.
2016-05-15 22:56:36 +07:00
mrkkrp 93c670fcc5 Calculate “version needed to extract” field
Close #14.

Two new features:

* Added explicit check of “version needed to extract”, so if archive
  uses some advanced features that we do not support yet, parsing fails.

* Value of “version needed to extract” field is now calculated
  dynamically with respect to actually used features, e.g. if you just
  store or deflate a not very big file, ‘2.0’ version will be
  written (previously we wrote ‘4.6’ unconditionally). This is needed to
  avoid scaring tools that can only handle basic Zip archives.
2016-04-09 14:55:44 +07:00
mrkkrp 1e7d02215c Fix a typo in description of ‘decodeText’ 2016-03-25 19:45:25 +06:00
Michael Thompson c108d12569 Update CP437.hs
One is supposed to accumulate a builder with a right fold:

 https://www.reddit.com/r/haskell/comments/35udfy/fixing_an_aeson_performance_bug_sometimes_the_old/cr94pdj

I skipped that with this attempt, which unfolds the text directly. It
seems 10 or more times as fast if I send /usr/share/dict/words through
it. ‘unfoldrN’ is a pretty strong function with text since it is
basically just replicates to the stream representation.
2016-03-05 23:54:03 +06:00
mrkkrp 26cfc197a2 Add missing word in docs 2016-03-03 21:51:14 +06:00
mrkkrp 740fe99ab7 Work around a bug in ‘path’ package
‘.’ should not be accepted as valid relative file name, it least in the
context of this package.
2016-03-02 23:22:21 +06:00
mrkkrp 52170ab594 Fix undoing 2016-03-02 17:51:35 +06:00
mrkkrp e4b4585322 Improve documentation of ‘getEntries’ and ‘commit’ 2016-03-02 16:50:54 +06:00
mrkkrp 7e6d8025f7 Add ‘doesEntryExist’ and ‘getEntryDesc’
Close #7.
2016-03-02 13:49:32 +06:00
mrkkrp c41b7529a7 Fix more bugs revealed by the new tests 2016-03-02 12:58:11 +06:00
mrkkrp e71dcfa69b Cosmetics and new bug fixes (thanks to new tests) 2016-03-01 21:39:22 +06:00
mrkkrp ab80d36aa5 Rename ‘edModified’ → ‘edModTime’ 2016-03-01 18:22:25 +06:00
mrkkrp 2f3d6c6cfa Remove redundant ‘Ord’ constraint 2016-03-01 17:41:26 +06:00
mrkkrp 167abc349e Fix bug revealed by the new tests 2016-03-01 17:19:52 +06:00
mrkkrp e18ffd269f Make it pass the tests… 2016-03-01 09:53:17 +06:00
mrkkrp a5cfdcf951 Add ‘checkEntry’ function
Close #6.
2016-03-01 09:52:03 +06:00
mrkkrp 3049c2d84d Rename ‘modifyEntries’ → ‘forEntries’ 2016-03-01 09:50:07 +06:00
mrkkrp 5f562af5c0 Improve ‘needsUnicode’ check in ‘Internal.hs’ 2016-02-29 14:47:43 +06:00
mrkkrp 3d81432d44 Minor cosmetic improvements in docs 2016-02-29 12:16:54 +06:00
mrkkrp 99dc0abf18 Improve opening phrase of main module's docs 2016-02-29 00:55:41 +06:00
mrkkrp fcb8e78eb5 Add proper support for CP437
Close #4.
2016-02-28 19:05:06 +06:00
mrkkrp ccde335847 Better typing, limit some values
Close #2.
2016-02-28 16:26:27 +06:00
mrkkrp 13388e4c86 Add ‘modifyEntries’ utility function
Close #5.
2016-02-28 15:41:37 +06:00
mrkkrp 26b96440e1 Making low-level machinery less ugly 2016-02-28 01:53:19 +06:00
mrkkrp 593952d89c Make ‘ZipArchive’ instance of ‘MonadIO’
That protection was not very strong anyway, user could do something via
conduit sinks, etc.
2016-02-28 01:01:17 +06:00
mrkkrp a752bedbe4 Improve handling of big files (> 4GB)
Close #3.

This fixes numerous bugs and refactors things a bit. Now the Zip64
feature works flawlessly.
2016-02-27 23:10:33 +06:00
mrkkrp fa9e4ae4ba Eliminate duplicates in final distribution 2016-02-27 00:26:25 +06:00
mrkkrp d5974736fe Fix a nasty typo 2016-02-27 00:09:54 +06:00
mrkkrp 75da4927ed Improve documentation 2016-02-26 22:17:18 +06:00
mrkkrp 0a4dba1ef2 Append actions, not prepend 2016-02-26 22:16:49 +06:00
mrkkrp a172f96350 Fix copying of entries 2016-02-26 20:01:27 +06:00
mrkkrp 332bc55f2c Make writing operations finally work 2016-02-26 15:03:59 +06:00
mrkkrp 58daa99dd4 More work done 2016-02-25 18:19:39 +06:00
mrkkrp fe3a876ed0 Work on writing operations… 2016-02-23 20:15:17 +06:00
mrkkrp 1b2c74b3ad Progress in implementation of modifying operations 2016-02-22 18:51:10 +06:00
mrkkrp 27033960bd Implemented detection of end of central directory
Not the prettiest code I've ever written, but it handles all the corner
cases.
2016-02-15 22:33:12 +06:00
mrkkrp 18f44bcde3 Make decompression work 2016-02-13 19:44:47 +06:00
mrkkrp bdcb8a57f3 Now reading of archives should be possible
We still need to write out ‘locateECD’ properly.
2016-02-13 17:43:22 +06:00
mrkkrp 9c72b1d50f Make ‘AddExtraField’ work with the new API 2016-02-13 17:42:16 +06:00
mrkkrp 1bb154bbec Cosmetics and misc 2016-02-13 17:41:44 +06:00
mrkkrp ea38002a4c Define ‘getEntry’ via ‘sourceEntry’ 2016-02-13 17:40:25 +06:00
mrkkrp 6faf730497 Do not try to perform any actions if there is none 2016-02-13 17:38:51 +06:00
mrkkrp 30d73c095c Make ‘getArchiveDescription’ public 2016-02-13 17:37:52 +06:00
mrkkrp 0dce1d41df Changes in error reporting 2016-02-13 17:36:56 +06:00
mrkkrp 58080aaecf ‘ExtraField’ → ‘Map Natural ByteString’ 2016-02-13 17:34:31 +06:00
mrkkrp e1832830a4 Some progress in work on ‘Internal.hs’ 2016-02-11 16:21:58 +06:00
mrkkrp 2a54029253 Minor changes and documentation in ‘Internal.hs’ 2016-02-10 16:50:26 +06:00
mrkkrp e0cfb9dc91 Finished the ‘Codec.Archive.Zip’ module
Now we just need to write optimizer and low-level manipulations…
2016-02-09 23:28:39 +06:00
mrkkrp 6b5e3bad01 We need to store offset in ‘EntryDescription’ 2016-02-05 19:25:03 +06:00