#ifndef lint
static const char rcsid[] =
- "$Id: main.c,v 1.57 2001/08/16 09:37:59 stelian Exp $";
+ "$Id: main.c,v 1.59 2001/08/16 15:24:21 stelian Exp $";
#endif /* not lint */
#include <config.h>
char *dumpdates; /* name of the file containing dump date information*/
char lastlevel; /* dump level of previous dump */
char level; /* dump level of this dump */
+int bzipflag; /* compression is done using bzlib */
int uflag; /* update flag */
int Mflag; /* multi-volume flag */
int qflag; /* quit on errors flag */
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;
#endif /* USE_QFA */
while ((ch = getopt(argc, argv,
- "0123456789aB:b:cd:e:E:f:F:h:L:"
+ "0123456789aB:b:cd:e:E:f:F:h:"
+#ifdef HAVE_BZLIB
+ "j::"
+#endif
+ "L:"
#ifdef KERBEROS
"k"
#endif
case 'a': /* `auto-size', Write to EOM. */
unlimited = 1;
+ aflag = 1;
break;
case 'B': /* blocks per output file */
honorlevel = numarg("honor level", 0L, 10L);
break;
+#ifdef HAVE_BZLIB
+ case 'j':
+ compressed = 2;
+ bzipflag = 1;
+ if (optarg)
+ compressed = numarg("compress level", 1L, 9L);
+ break;
+#endif /* HAVE_BZLIB */
+
#ifdef KERBEROS
case 'k':
dokerberos = 1;
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";
msg("Label: %s\n", spcl.c_label);
if (compressed)
- msg("Compressing output at compression level %d\n",
- compressed);
+ msg("Compressing output at compression level %d (%s)\n",
+ compressed, bzipflag ? "bzlib" : "zlib");
}
#if defined(SIGINFO)
"MnqSu"
"] [-B records] [-b blocksize] [-d density]\n"
"\t%s [-e inode#,inode#,...] [-E file] [-f file] [-h level] "
+#ifdef HAVE_BZLIB
+ "[-j zlevel] "
+#endif
+ "\n\t%s "
#ifdef USE_QFA
"[-Q file] "
#endif
- "\n\t%s [-s feet] [-T date] "
+ "[-s feet] [-T date] "
#ifdef HAVE_ZLIB
"[-z zlevel] "
#endif
}
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);
+ }
+}