aboutsummaryrefslogtreecommitdiff
path: root/src/xz/file_io.c
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2017-03-30 22:01:54 +0300
committerLasse Collin <lasse.collin@tukaani.org>2017-03-30 22:01:54 +0300
commitbba477257d7319c8764890f3669175b866d24944 (patch)
tree4c967cbf29877ce0e0dbc615d8fd3d277e77db12 /src/xz/file_io.c
parentliblzma: Make lzma_index_decoder_init() visible to other liblzma funcs. (diff)
downloadxz-bba477257d7319c8764890f3669175b866d24944.tar.xz
xz: Use POSIX_FADV_RANDOM for in "xz --list" mode.
xz --list is random access so POSIX_FADV_SEQUENTIAL was clearly wrong.
Diffstat (limited to '')
-rw-r--r--src/xz/file_io.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/xz/file_io.c b/src/xz/file_io.c
index c01f4e8b..041bed88 100644
--- a/src/xz/file_io.c
+++ b/src/xz/file_io.c
@@ -525,7 +525,10 @@ io_open_src_real(file_pair *pair)
#endif
#ifdef HAVE_POSIX_FADVISE
// It will fail if stdin is a pipe and that's fine.
- (void)posix_fadvise(STDIN_FILENO, 0, 0, POSIX_FADV_SEQUENTIAL);
+ (void)posix_fadvise(STDIN_FILENO, 0, 0,
+ opt_mode == MODE_LIST
+ ? POSIX_FADV_RANDOM
+ : POSIX_FADV_SEQUENTIAL);
#endif
return false;
}
@@ -716,7 +719,10 @@ io_open_src_real(file_pair *pair)
#ifdef HAVE_POSIX_FADVISE
// It will fail with some special files like FIFOs but that is fine.
- (void)posix_fadvise(pair->src_fd, 0, 0, POSIX_FADV_SEQUENTIAL);
+ (void)posix_fadvise(pair->src_fd, 0, 0,
+ opt_mode == MODE_LIST
+ ? POSIX_FADV_RANDOM
+ : POSIX_FADV_SEQUENTIAL);
#endif
return false;