diff --git a/src/xz/file_io.c b/src/xz/file_io.c index 0e2bd680c6f752bff509f3f6782500f4cec3e86b_c3JjL3h6L2ZpbGVfaW8uYw==..cf0cae1b8b9f25b192ee153af21d40dec11fc090_c3JjL3h6L2ZpbGVfaW8uYw== 100644 --- a/src/xz/file_io.c +++ b/src/xz/file_io.c @@ -525,7 +525,10 @@ #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 @@ #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;