X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=dump%2Fmain.c;h=5262d690fc1094bfbf874f12cce19f0d50603166;hb=3195bc1f1361373549c37145a37381eceb623371;hp=5e9c111c621df8ed73fd70639a64fb8937050ebe;hpb=88ef261eaffd1b09f23eb73d8259336f694d9324;p=dump.git diff --git a/dump/main.c b/dump/main.c index 5e9c111..5262d69 100644 --- a/dump/main.c +++ b/dump/main.c @@ -41,7 +41,7 @@ #ifndef lint static const char rcsid[] = - "$Id: main.c,v 1.59 2001/08/16 15:24:21 stelian Exp $"; + "$Id: main.c,v 1.62 2001/11/11 00:12:48 stelian Exp $"; #endif /* not lint */ #include @@ -60,6 +60,7 @@ static const char rcsid[] = #include #include #ifdef __linux__ +#include #ifdef HAVE_EXT2FS_EXT2_FS_H #include #else @@ -106,6 +107,7 @@ int bzipflag; /* compression is done using bzlib */ int uflag; /* update flag */ int Mflag; /* multi-volume flag */ int qflag; /* quit on errors flag */ +int breademax = 32; /* maximum number of bread errors before we quit */ char *eot_script; /* end of volume script fiag */ int diskfd; /* disk file descriptor */ int tapefd; /* tape file descriptor */ @@ -235,7 +237,7 @@ main(int argc, char *argv[]) #endif /* USE_QFA */ while ((ch = getopt(argc, argv, - "0123456789aB:b:cd:e:E:f:F:h:" + "0123456789aB:b:cd:e:E:f:F:h:I:" #ifdef HAVE_BZLIB "j::" #endif @@ -332,6 +334,11 @@ main(int argc, char *argv[]) break; #endif /* HAVE_BZLIB */ + case 'I': + breademax = + numarg ("number of errors to ignore", 1L, 0L); + break; + #ifdef KERBEROS case 'k': dokerberos = 1; @@ -628,6 +635,14 @@ main(int argc, char *argv[]) } /* end of size estimate */ #ifdef __linux__ + if ((diskfd = OPEN(disk, O_RDONLY)) < 0) { + msg("Cannot open %s\n", disk); + msg("The ENTIRE dump is aborted.\n"); + exit(X_STARTUP); + } +#ifdef BLKFLSBUF + (void)ioctl(diskfd, BLKFLSBUF); +#endif retval = dump_fs_open(disk, &fs); if (retval) { com_err(disk, retval, "while opening filesystem"); @@ -642,11 +657,6 @@ main(int argc, char *argv[]) msg("The ENTIRE dump is aborted.\n"); exit(X_STARTUP); } - if ((diskfd = OPEN(disk, O_RDONLY)) < 0) { - msg("Cannot open %s\n", disk); - msg("The ENTIRE dump is aborted.\n"); - exit(X_STARTUP); - } /* if no user label specified, use ext2 filesystem label if available */ if (spcl.c_label[0] == '\0') { const char *lbl; @@ -974,11 +984,11 @@ usage(void) #endif "MnqSu" "] [-B records] [-b blocksize] [-d density]\n" - "\t%s [-e inode#,inode#,...] [-E file] [-f file] [-h level] " + "\t%s [-e inode#,inode#,...] [-E file] [-f file] [-h level]\n" + "\t%s [-I nr errors] " #ifdef HAVE_BZLIB "[-j zlevel] " #endif - "\n\t%s " #ifdef USE_QFA "[-Q file] " #endif