* Ported to Linux's Second Extended File System as part of the
* dump and restore backup suit
* Remy Card <card@Linux.EU.Org>, 1994-1997
- * Stelian Pop <pop@noos.fr>, 1999-2000
- * Stelian Pop <pop@noos.fr> - Alcôve <www.alcove.fr>, 2000
+ * Stelian Pop <stelian@popies.net>, 1999-2000
+ * Stelian Pop <stelian@popies.net> - Alcôve <www.alcove.com>, 2000-2002
*/
/*
#ifndef lint
static const char rcsid[] =
- "$Id: main.c,v 1.29 2001/09/12 10:21:49 stelian Exp $";
+ "$Id: main.c,v 1.35 2002/01/16 10:29:26 stelian Exp $";
#endif /* not lint */
#include <config.h>
#include "restore.h"
#include "extern.h"
-int bflag = 0, cvtflag = 0, dflag = 0, vflag = 0, yflag = 0;
+int aflag = 0, bflag = 0, cvtflag = 0, dflag = 0, vflag = 0, yflag = 0;
int hflag = 1, mflag = 1, Mflag = 0, Nflag = 0, Vflag = 0, zflag = 0;
-int uflag = 0;
+int uflag = 0, lflag = 0, Lflag = 0;
int dokerberos = 0;
char command = '\0';
long dumpnum = 1;
;
obsolete(&argc, &argv);
while ((ch = getopt(argc, argv,
- "b:CcdD:f:F:hi"
+ "ab:CcdD:f:F:hi"
#ifdef KERBEROS
"k"
#endif
- "mMN"
+ "lL:mMN"
#ifdef USE_QFA
"Q:"
#endif
"Rrs:tT:uvVxX:y")) != -1)
switch(ch) {
+ case 'a':
+ aflag = 1;
+ break;
case 'b':
/* Change default tape blocksize. */
bflag = 1;
ch, command);
command = ch;
break;
+ case 'l':
+ lflag = 1;
+ break;
+ case 'L':
+ Lflag = strtol(optarg, &p, 10);
+ if (*p)
+ errx(1, "illegal limit -- %s", optarg);
+ if (Lflag < 0)
+ errx(1, "limit must be greater than 0");
+ break;
case 'm':
mflag = 0;
break;
atexit(cleanup);
- if (command == 'C' && inputdev[0] != '/') {
+ if (command == 'C' && inputdev[0] != '/' && strcmp(inputdev, "-")
+#ifdef RRESTORE
+ && !strchr(inputdev, ':')
+#endif
+ ) {
/* since we chdir into the directory we are comparing
* to, we must retain the full tape path */
char wd[MAXPATHLEN], fullpathinput[MAXPATHLEN];
err(1, "can't get current directory");
snprintf(fullpathinput, MAXPATHLEN, "%s/%s", wd, inputdev);
fullpathinput[MAXPATHLEN - 1] = '\0';
-printf("FULLPATH is %s\n", fullpathinput);
setinput(fullpathinput);
}
else
* Incremental restoration of a file system.
*/
case 'r':
+ aflag = 1; /* in -r or -R mode, -a is default */
setup();
if (dumptime > 0) {
/*
* Resume an incremental file system restoration.
*/
case 'R':
+ aflag = 1; /* in -r or -R mode, -a is default */
initsymtable(symtbl);
skipmaps();
skipdirs();
(void)fprintf(stderr,
"usage:\t%s%s\n\t%s%s\n\t%s%s\n\t%s%s\n\t%s%s\n\t%s%s\n",
- __progname, " -C [-c" kerbflag "MvVy] [-b blocksize] [-D filesystem] [-f file] [-F script] [-s fileno]",
- __progname, " -i [-ch" kerbflag "mMuvVy] [-b blocksize] [-f file] [-F script] " qfaflag "[-s fileno]",
- __progname, " -r [-c" kerbflag "MuvVy] [-b blocksize] [-f file] [-F script] [-s fileno] [-T directory]",
- __progname, " -R [-c" kerbflag "MuvVy] [-b blocksize] [-f file] [-F script] [-s fileno] [-T directory]",
- __progname, " -t [-ch" kerbflag "MuvVy] [-b blocksize] [-f file] [-F script] " qfaflag "[-s fileno] [-X filelist] [file ...]",
- __progname, " -x [-ch" kerbflag "mMuvVy] [-b blocksize] [-f file] [-F script] " qfaflag "[-s fileno] [-X filelist] [file ...]");
+ __progname, " -C [-c" kerbflag "lMvVy] [-b blocksize] [-D filesystem] [-f file] [-F script] [-L limit] [-s fileno]",
+ __progname, " -i [-ach" kerbflag "lmMuvVy] [-b blocksize] [-f file] [-F script] " qfaflag "[-s fileno]",
+ __progname, " -r [-c" kerbflag "lMuvVy] [-b blocksize] [-f file] [-F script] [-s fileno] [-T directory]",
+ __progname, " -R [-c" kerbflag "lMuvVy] [-b blocksize] [-f file] [-F script] [-s fileno] [-T directory]",
+ __progname, " -t [-ch" kerbflag "lMuvVy] [-b blocksize] [-f file] [-F script] " qfaflag "[-s fileno] [-X filelist] [file ...]",
+ __progname, " -x [-ach" kerbflag "lmMuvVy] [-b blocksize] [-f file] [-F script] " qfaflag "[-s fileno] [-X filelist] [file ...]");
exit(1);
}
case 'D':
case 'f':
case 'F':
+ case 'L':
case 'Q':
case 's':
case 'T':