diff options
Diffstat (limited to 'archival/libunarchive/seek_by_read.c')
-rw-r--r-- | archival/libunarchive/seek_by_read.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/archival/libunarchive/seek_by_read.c b/archival/libunarchive/seek_by_read.c new file mode 100644 index 000000000..03cbb9ecc --- /dev/null +++ b/archival/libunarchive/seek_by_read.c | |||
@@ -0,0 +1,19 @@ | |||
1 | /* vi: set sw=4 ts=4: */ | ||
2 | /* | ||
3 | * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. | ||
4 | */ | ||
5 | |||
6 | #include <stdlib.h> | ||
7 | |||
8 | #include "unarchive.h" | ||
9 | #include "libbb.h" | ||
10 | |||
11 | /* If we are reading through a pipe(), or from stdin then we cant lseek, | ||
12 | * we must read and discard the data to skip over it. | ||
13 | */ | ||
14 | void seek_by_read(const archive_handle_t *archive_handle, const unsigned int jump_size) | ||
15 | { | ||
16 | if (jump_size) { | ||
17 | bb_copyfd_size(archive_handle->src_fd, -1, jump_size); | ||
18 | } | ||
19 | } | ||