From 1490f2dbf33ca75f060890013fb0d8caf28225aa Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Tue, 14 Aug 2007 09:46:32 +0200 Subject: od: fix a bug that arises when skipping exact length of file * NEWS: Document the bug fix. * src/od.c (skip): Call fseek even when n_skip is exactly the same as the length of the current file. Otherwise, the next iteration would use unadjusted input stream pointer, thus ignoring the desired "skip". Report and patch by Paul GHALEB. --- src/od.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/od.c b/src/od.c index 1e77f9208..0abce599a 100644 --- a/src/od.c +++ b/src/od.c @@ -1034,13 +1034,12 @@ skip (uintmax_t n_skip) { /* The st_size field is valid only for regular files (and for symbolic links, which cannot occur here). - If the number of bytes left to skip is at least - as large as the size of the current file, we can - decrement n_skip and go on to the next file. */ - + If the number of bytes left to skip is larger than + the size of the current file, we can decrement + n_skip and go on to the next file. */ if (S_ISREG (file_stats.st_mode) && 0 <= file_stats.st_size) { - if ((uintmax_t) file_stats.st_size <= n_skip) + if ((uintmax_t) file_stats.st_size < n_skip) n_skip -= file_stats.st_size; else { -- cgit v1.2.3-70-g09d2