98 Commits

Author SHA1 Message Date
Moritz Kiefer 687bc036aa Ignore DoesNotExistError in removeFile
We have seen a bunch of errors on CI of the form

```
C:\users\foobar\ghcBDA1.zip: DeleteFile "\\\\?\\C:\\users\\foobar\\ghcBDA1.zip": does not exist (The system cannot find the file specified.)
```

I haven’t managed to reproduce this but looking at the code it seems
like we can be interrupted with an async exception (we kill threads
pretty aggressively) in the `bracketOnError` call after the file has
been renamed but before the whole block returns. In this case, the
file will not exist but you’ll run the cleanup in `bracketOnError`
anyway which will then fail.

We could try to fix this by masking things differently but ignoring
the error seems like a simpler and more robust solution.
2020-03-02 11:35:44 +01:00
mrkkrp d9cfb8d4a1 Add ‘since’ note for ‘BZip2Unsupported’ 2019-12-01 23:39:02 +01:00
Rodney Lorrimar 5a39029ceb Add Cabal flag to avoid the bzip2 C library dependency
The bzlib-conduit library is causing us trouble when trying to
cross-compile it for Windows.

The best thing to do in our case is to remove the dependency.

This change adds -fdisable-bzip2. Under this flag, if a caller
attempts to compress or decompress a BZip2 entry, then an exception
will be thrown.

Resolves #57
2019-11-30 16:46:42 +01:00
mrkkrp 8b4ae21a6b Replace the current year by the word “present” in copyright notes
[skip ci]
2019-07-03 21:17:43 +02:00
mrkkrp 8c9ebd1f8f Update copyright years
[skip ci]
2019-01-01 12:54:19 +07:00
mrkkrp d7eae13e34 Misc corrections 2018-09-22 21:17:55 +07:00
Ramakrishnan Muthukrishnan fe2e6cbc2d Allow to manipulate external file attributes (#52) 2018-09-22 19:39:46 +07:00
mrkkrp 1f9283d345 A couple of cosmetic changes 2018-06-23 20:13:38 +07:00
Mark Karpov bcbcd0b9de Test Zip64 features on CI (#49) 2018-06-23 18:54:58 +07:00
Mark Karpov a09152b92c Make ‘saveEntry’ and ‘unpackInto’ restore modification time (#47) 2018-05-24 11:00:44 +07:00
mrkkrp 756ba096f1 Enable more warnings 2018-03-21 19:04:07 +07:00
Mark Karpov e131160592 Stop depending on ‘path’, ‘path-io’, and ‘plan-b’ plus more (#43) 2018-02-09 20:33:35 +07:00
mrkkrp 1d2559e953 Compatibility with newer conduit 2018-02-05 23:05:18 +07:00
mrkkrp 88ed27108c Include 2018 into the copyright years range
[skip ci]
2018-01-01 13:59:31 +07:00
Mark Karpov a5f189f0fe Add some ‘monad-control’ instances for ‘ZipArchive’ (#38) 2017-08-08 22:27:20 +07:00
mrkkrp c00236f7d1 Use ‘ZipSink’ from the public Conduit API 2017-08-01 17:59:41 +07:00
Mark Karpov 3f187d099d Switch to the newer Conduit API (#37) 2017-07-31 21:19:13 +07:00
mrkkrp 2c9ed28477 Even more documentation improvements
[skip ci]
2017-05-24 20:29:57 +07:00
mrkkrp 2008d72f33 Refactor an ugly fragment of code 2017-05-24 18:26:40 +07:00
mrkkrp 0417b9afe0 Improve the documentation
[skip ci]
2017-05-24 18:26:34 +07:00
mrkkrp 783004da4a Update my email address
[skip ci]
2017-05-24 17:16:52 +07:00
mrkkrp 260efe3e11 Derive ‘Eq’ and ‘Ord’ for ‘EntrySelectorException’, ‘ZipException’ 2017-04-01 18:43:51 +03:00
mrkkrp 2f04ec8d75 Numerous cosmetic corrections to the docs 2017-04-01 18:40:39 +03:00
Alexey Karakulov 70123f3996 Allow any MonadResource for getEntrySource (#34) 2017-04-01 15:29:09 +03:00
mrkkrp d8d28e14d2 Fix the issue with mod time serialization on 32 bit systems
Close #32.
2017-03-04 23:36:24 +03:00
Rahul Muttineni e1b2a4eb23 Write correct number of entries to central directory with Zip64 (#31) 2017-02-25 17:40:08 +04:00
mrkkrp 5f7af58011 Remove the ‘zip64-ecd’ flag
Now that the situation is clear, I think it's pretty safe to remove this
additional run of the test suite. It's unlikely that we will run into new
Zip64-related issues.
2017-02-09 20:13:00 +03:00
mrkkrp 9511fd0e57 Fix literal overflows on 32 bit systems 2017-02-09 20:11:10 +03:00
Mark Karpov e5fe94940c Fix reading of empty Zip 64 archives
* Try to catch the Zip64 ECD issue on Travis
* Fix detection of end of central directory
2017-02-08 23:40:38 +04:00
mrkkrp 0927c6189e Include 2017 into copyright years range 2017-01-01 14:27:47 +03:00
mrkkrp e729dd9c6d Use ‘withBinaryFile’ instead of ‘withFile’
Using ‘withFile’ on Windows may lead to incorrect results, see documentation
for ‘openBinaryFile’.
2016-12-28 00:43:10 +03:00
mrkkrp 9acb0e80c2 Derive more instances for some types 2016-12-12 21:16:18 +03:00
mrkkrp 28dfc18d54 Add ‘since’ label to ‘getEntrySource’ 2016-07-22 00:30:09 +03:00
Christopher Wells 692079a784 Add examples to documentation
Add some examples of common uses of the library to the documentation.
2016-06-07 17:45:03 +07:00
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