#ifndef lint
static const char rcsid[] =
- "$Id: main.c,v 1.56 2001/08/13 16:17:52 stelian Exp $";
+ "$Id: main.c,v 1.58 2001/08/16 13:12:30 stelian Exp $";
#endif /* not lint */
#include <config.h>
char level; /* dump level of this dump */
int uflag; /* update flag */
int Mflag; /* multi-volume flag */
+int qflag; /* quit on errors flag */
char *eot_script; /* end of volume script fiag */
int diskfd; /* disk file descriptor */
int tapefd; /* tape file descriptor */
static void usage __P((void));
static void do_exclude_from_file __P((char *));
static void do_exclude_ino_str __P((char *));
+static void incompat_flags __P((int, char, char));
static dump_ino_t iexclude_list[IEXCLUDE_MAXNUM];/* the inode exclude list */
static int iexclude_num = 0; /* number of elements in the list */
register struct fstab *dt;
register char *map;
register int ch;
- int i, anydirskipped, bflag = 0, Tflag = 0, honorlevel = 1;
+ int i, anydirskipped;
+ int aflag = 0, bflag = 0, Tflag = 0, honorlevel = 1;
dump_ino_t maxino;
struct STAT statbuf;
dev_t filedev = 0;
#ifdef KERBEROS
"k"
#endif
- "Mn"
+ "Mnq"
#ifdef USE_QFA
"Q:"
#endif
case 'a': /* `auto-size', Write to EOM. */
unlimited = 1;
+ aflag = 1;
break;
case 'B': /* blocks per output file */
notify = 1;
break;
+ case 'q':
+ qflag = 1;
+ break;
+
#ifdef USE_QFA
case 'Q': /* create tapeposfile */
gTapeposfile = optarg;
exit(X_STARTUP);
}
argc--;
- if (Tflag && uflag) {
- msg("You cannot use the T and u flags together.\n");
- msg("The ENTIRE dump is aborted.\n");
- exit(X_STARTUP);
- }
+ incompat_flags(Tflag && uflag, 'T', 'u');
+ incompat_flags(aflag && blocksperfile, 'a', 'B');
+ incompat_flags(aflag && cartridge, 'a', 'c');
+ incompat_flags(aflag && density, 'a', 'd');
+ incompat_flags(aflag && tsize, 'a', 's');
+
if (strcmp(tapeprefix, "-") == 0) {
pipeout++;
tapeprefix = "standard output";
#ifdef KERBEROS
"k"
#endif
- "MnSu"
+ "MnqSu"
"] [-B records] [-b blocksize] [-d density]\n"
"\t%s [-e inode#,inode#,...] [-E file] [-f file] [-h level] "
#ifdef USE_QFA
}
fclose(f);
}
+
+static void incompat_flags(int cond, char flag1, char flag2) {
+ if (cond) {
+ msg("You cannot use the %c and %c flags together.\n",
+ flag1, flag2);
+ msg("The ENTIRE dump is aborted.\n");
+ exit(X_STARTUP);
+ }
+}