X-Git-Url: https://git.wh0rd.org/?p=dump.git;a=blobdiff_plain;f=restore%2Fmain.c;h=3feca826338866a97364a94d7555baa6538e1624;hp=09aa8c7b4fed75cbf54e2be292fd9c47ff9dc706;hb=e46507f206f7adcb8d2e218963d2115236e86604;hpb=9c6fe7dd40d422c0f98425d519d05d70f654e748 diff --git a/restore/main.c b/restore/main.c index 09aa8c7..3feca82 100644 --- a/restore/main.c +++ b/restore/main.c @@ -41,10 +41,11 @@ #ifndef lint static const char rcsid[] = - "$Id: main.c,v 1.23 2001/04/26 08:59:32 stelian Exp $"; + "$Id: main.c,v 1.28 2001/08/14 13:11:58 stelian Exp $"; #endif /* not lint */ #include +#include #include #include #include @@ -80,7 +81,7 @@ static const char rcsid[] = #include "extern.h" int bflag = 0, cvtflag = 0, dflag = 0, vflag = 0, yflag = 0; -int hflag = 1, mflag = 1, Nflag = 0, zflag = 0; +int hflag = 1, mflag = 1, Mflag = 0, Nflag = 0, zflag = 0; int uflag = 0; int dokerberos = 0; char command = '\0'; @@ -98,6 +99,15 @@ int compare_ignore_not_found; int compare_errors; char filesys[NAMELEN]; static const char *stdin_opt = NULL; +char *bot_script = NULL; + +#ifdef USE_QFA +FILE *gTapeposfp; +char *gTapeposfile; +char gTps[255]; +long gSeekstart; +int tapeposflag; +#endif /* USE_QFA */ #ifdef __linux__ char *__progname; @@ -144,7 +154,7 @@ main(int argc, char *argv[]) ; obsolete(&argc, &argv); while ((ch = getopt(argc, argv, - "b:CcdD:f:hi" + "b:CcdD:f:F:hi" #ifdef KERBEROS "k" #endif @@ -181,6 +191,9 @@ main(int argc, char *argv[]) use_stdin("-f"); inputdev = optarg; break; + case 'F': + bot_script = optarg; + break; case 'h': hflag = 0; break; @@ -264,7 +277,19 @@ main(int argc, char *argv[]) atexit(cleanup); - setinput(inputdev); + if (command == 'C' && inputdev[0] != '/') { + /* since we chdir into the directory we are comparing + * to, we must retain the full tape path */ + char wd[MAXPATHLEN], fullpathinput[MAXPATHLEN]; + if (!getcwd(wd, 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 + setinput(inputdev); if (argc == 0 && !filelist) { argc = 1; @@ -315,14 +340,14 @@ main(int argc, char *argv[]) * Compare contents of tape. */ case 'C': { - struct stat stbuf; + struct STAT stbuf; Vprintf(stdout, "Begin compare restore\n"); compare_ignore_not_found = 0; compare_errors = 0; setup(); printf("filesys = %s\n", filesys); - if (stat(filesys, &stbuf) < 0) + if (STAT(filesys, &stbuf) < 0) err(1, "cannot stat directory %s", filesys); if (chdir(filesys) < 0) err(1, "cannot cd to %s", filesys); @@ -500,12 +525,12 @@ usage(void) (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 "Mvy] [-b blocksize] [-D filesystem] [-f file] [-s fileno]", - __progname, " -i [-ch" kerbflag "mMuvy] [-b blocksize] [-f file] " qfaflag "[-s fileno]", - __progname, " -r [-c" kerbflag "Muvy] [-b blocksize] [-f file] [-s fileno] [-T directory]", - __progname, " -R [-c" kerbflag "Muvy] [-b blocksize] [-f file] [-s fileno] [-T directory]", - __progname, " -t [-ch" kerbflag "Muvy] [-b blocksize] [-f file] " qfaflag "[-s fileno] [-X filelist] [file ...]", - __progname, " -x [-ch" kerbflag "mMuvy] [-b blocksize] [-f file] " qfaflag "[-s fileno] [-X filelist] [file ...]"); + __progname, " -C [-c" kerbflag "Mvy] [-b blocksize] [-D filesystem] [-f file] [-F script] [-s fileno]", + __progname, " -i [-ch" kerbflag "mMuvy] [-b blocksize] [-f file] [-F script] " qfaflag "[-s fileno]", + __progname, " -r [-c" kerbflag "Muvy] [-b blocksize] [-f file] [-F script] [-s fileno] [-T directory]", + __progname, " -R [-c" kerbflag "Muvy] [-b blocksize] [-f file] [-F script] [-s fileno] [-T directory]", + __progname, " -t [-ch" kerbflag "Muvy] [-b blocksize] [-f file] [-F script] " qfaflag "[-s fileno] [-X filelist] [file ...]", + __progname, " -x [-ch" kerbflag "mMuvy] [-b blocksize] [-f file] [-F script] " qfaflag "[-s fileno] [-X filelist] [file ...]"); exit(1); } @@ -542,6 +567,7 @@ obsolete(int *argcp, char **argvp[]) case 'b': case 'D': case 'f': + case 'F': case 'Q': case 's': case 'T':