dd: conv=noerror should skip read errors using lseek (bug 539)
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 5 Aug 2009 21:16:27 +0000 (23:16 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 5 Aug 2009 21:16:27 +0000 (23:16 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
coreutils/dd.c

index 38dacc71db5b4b1afa0ca3db27e732f615f87aa9..5281d811829077cf7848d9505ceb89fb3067e2ea 100644 (file)
@@ -296,6 +296,8 @@ int dd_main(int argc UNUSED_PARAM, char **argv)
                                goto die_infile;
                        n = ibs;
                        bb_simple_perror_msg(infile);
+                       /* GNU dd with conv=noerror skips over "bad blocks" */
+                       xlseek(ifd, ibs, SEEK_CUR);
                }
                if ((size_t)n == ibs)
                        G.in_full++;