diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | THANKS | 1 | ||||
-rw-r--r-- | src/od.c | 9 |
4 files changed, 19 insertions, 5 deletions
@@ -1,3 +1,12 @@ +2007-08-14 Jim Meyering <jim@meyering.net> + + 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. + 2007-08-10 Paul Eggert <eggert@cs.ucla.edu> Accommodate more xstrtol changes. @@ -98,6 +98,11 @@ GNU coreutils NEWS -*- outline -*- ln=target attribute) would mistakenly output the string "target" before the name of each symlink. [introduced in coreutils-6.0] + "od -j L FILE" had a bug: when the number of bytes to skip, L, is exactly + the same as the length of FILE, od would skip *no* bytes. When the number + of bytes to skip is exactly the sum of the lengths of the first N files, + od would skip only the first N-1 files. [introduced in textutils-2.0.9] + seq no longer mishandles obvious cases like "seq 0 0.000001 0.000003", so workarounds like "seq 0 0.000001 0.0000031" are no longer needed. @@ -397,6 +397,7 @@ Oskar Liljeblad osk@hem.passagen.se Pádraig Brady P@draigBrady.com Patrick Mauritz oxygene@studentenbude.ath.cx Paul Eggert eggert@twinsun.com +Paul Ghaleb paul.ghaleb@st.com Paul Jarc prj@po.cwru.edu Paul Nevai nevai@ops.mps.ohio-state.edu Paul Sauer paul@alexa.com @@ -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 { |