John Ericson
ac89bb064a
Split up util.{hh,cc}
...
All OS and IO operations should be moved out, leaving only some misc
portable pure functions.
This is useful to avoid copious CPP when doing things like Windows and
Emscripten ports.
Newly exposed functions to break cycles:
- `restoreSignals`
- `updateWindowSize`
2023-11-05 12:20:02 -05:00
Eelco Dolstra
880e7b8ed6
TarArchive: Remove a duplicate constant and increase the buffer size
2023-04-25 16:43:10 +02:00
Yorick van Pelt
34ea0e2e7b
tarfile: set directory mode to at least 0500, don't extract fflags
...
We don't need SGID, or any ACL's. We also want to keep every dir +rx.
2022-11-01 16:01:38 +01:00
Maximilian Bosch
c85467a1b6
Revert "TarArchive: Small refactoring"
...
This reverts commit 50a35860ee
.
With this change Nix fails to open bzip2 logfiles that were created from
builds with no stdout/stderr.
2022-03-24 22:30:46 +01:00
Yorick van Pelt
0e0de90b35
extract_archive: fix "Hard-link target '...'" error
...
Fixes #5741
2021-12-10 17:03:51 +01:00
Yorick van Pelt
be1055f2cc
extract_archive: use copy_pathname instead of set_pathname.
...
Libarchive documentation mentions that archive_entry_set_pathname
expects us to keep the passed string alive, which we don't.
2021-12-10 17:00:32 +01:00
Eelco Dolstra
50a35860ee
TarArchive: Small refactoring
2021-08-30 17:02:51 +02:00
Eelco Dolstra
c7a7652725
Don't segfault if archive_entry_pathname() returns null
...
Issues #4499 .
2021-08-30 17:02:39 +02:00
Eelco Dolstra
15f4d4fd43
Drop libbz2 / zlib / lzma dependency + style fixes
2021-04-15 13:55:22 +02:00
Yorick van Pelt
8a0c00b856
Use libarchive for all compression
2021-03-10 22:34:29 +01:00
Eelco Dolstra
1b79b5b983
read(): Use char * instead of unsigned char *
...
This gets rid of some pointless casts.
2020-12-02 14:17:27 +01:00
Eelco Dolstra
c84c843e33
tarfile.cc: Restore timestamps
...
This is needed to get the lastModified attribute of GitHub flakes.
2019-12-19 15:09:54 +01:00
Eelco Dolstra
2550c11373
tarfile.cc: Don't change the cwd
...
Nix is multithreaded so it's not safe to change the cwd.
2019-12-19 15:08:16 +01:00
Eelco Dolstra
be32da0ed0
tarfile.cc: Style fixes
2019-12-19 15:01:58 +01:00
Yorick van Pelt
eba82b7c88
further clean up libarchive code
2019-12-09 17:21:46 +07:00
Puck Meerburg
28ee687adf
Clean up libarchive support
2019-12-07 18:12:21 +00:00
Yorick van Pelt
fe7ec70e6b
remove rust unpack_tarfile ffi
2019-12-07 23:28:31 +07:00
Yorick van Pelt
1355554d12
code 'cleanup'
2019-12-07 23:23:11 +07:00
Yorick van Pelt
f54c168031
add wrapper function around libarchive to c++ errors
2019-12-07 23:10:27 +07:00
Yorick van Pelt
232b390766
fixup! libarchive proof of concept
2019-12-07 23:00:37 +07:00
Yorick van Pelt
9ff5f6492f
libarchive proof of concept
2019-12-07 22:35:14 +07:00
Eelco Dolstra
949dc84894
Fix segfault on i686-linux
...
https://hydra.nixos.org/build/107467517
Seems that on i686-linux, gcc and rustc disagree on how to return
1-word structs: gcc has the caller pass a pointer to the result, while
rustc has the callee return the result in a register. Work around this
by using a bare pointer.
2019-11-27 14:17:15 +01:00
Eelco Dolstra
8918bae098
Drop remaining uses of external "tar"
...
Also, fetchGit now runs in O(1) memory since we pipe the output of
'git archive' directly into unpackTarball() (rather than first reading
it all into memory).
2019-11-26 22:07:28 +01:00
Eelco Dolstra
d33dd6e6c0
Move code around
2019-11-26 22:07:28 +01:00