X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=dump%2Fmain.c;h=553a1e66831f781e0ff628387af11ae68c6c47a0;hb=92a9bf12543aadfcc46e7ab9c2729b4d4d1f22ee;hp=f5fd9893b875bb818bf95d95ac4dd2a9e06379ec;hpb=a2c9bd286cf061b9c6e6565474c1af77e8cf2d1e;p=dump.git diff --git a/dump/main.c b/dump/main.c index f5fd989..553a1e6 100644 --- a/dump/main.c +++ b/dump/main.c @@ -40,7 +40,7 @@ #ifndef lint static const char rcsid[] = - "$Id: main.c,v 1.14 2000/01/26 11:38:08 stelian Exp $"; + "$Id: main.c,v 1.17 2000/03/01 10:16:05 stelian Exp $"; #endif /* not lint */ #include @@ -105,6 +105,9 @@ static long numarg __P((const char *, long, long)); static void obsolete __P((int *, char **[])); static void usage __P((void)); +ino_t iexclude_list[IEXCLUDE_MAXNUM]; /* the inode exclude list */ +int iexclude_num = 0; /* number of elements in the list */ + int main(int argc, char *argv[]) { @@ -118,8 +121,8 @@ main(int argc, char *argv[]) ino_t maxino; #ifdef __linux__ errcode_t retval; - char directory[NAME_MAX]; - char pathname[NAME_MAX]; + char directory[MAXPATHLEN]; + char pathname[MAXPATHLEN]; #endif time_t tnow; char labelstr[LBLSIZE]; @@ -141,7 +144,6 @@ main(int argc, char *argv[]) if ((tapeprefix = getenv("TAPE")) == NULL) tapeprefix = _PATH_DEFTAPE; dumpdates = _PATH_DUMPDATES; - temp = _PATH_DTMP; strcpy(labelstr, "none"); /* XXX safe strcpy. */ if (TP_BSIZE / DEV_BSIZE == 0 || TP_BSIZE % DEV_BSIZE != 0) quit("TP_BSIZE must be a multiple of DEV_BSIZE\n"); @@ -152,9 +154,9 @@ main(int argc, char *argv[]) obsolete(&argc, &argv); #ifdef KERBEROS -#define optstring "0123456789aB:b:cd:f:h:kL:Mns:ST:uWw" +#define optstring "0123456789aB:b:cd:e:f:h:kL:Mns:ST:uWw" #else -#define optstring "0123456789aB:b:cd:f:h:L:Mns:ST:uWw" +#define optstring "0123456789aB:b:cd:e:f:h:L:Mns:ST:uWw" #endif while ((ch = getopt(argc, argv, optstring)) != -1) #undef optstring @@ -194,6 +196,14 @@ main(int argc, char *argv[]) if (density >= 625 && !bflag) ntrec = HIGHDENSITYTREC; break; + + /* 04-Feb-00 ILC */ + case 'e': /* exclude an inode */ + iexclude_list[iexclude_num++] = + numarg("inode to exclude",0L,0L); + msg("Added %d to exclude list\n", + iexclude_list[iexclude_num-1]); + break; case 'f': /* output file */ tapeprefix = optarg; @@ -273,6 +283,10 @@ main(int argc, char *argv[]) exit(X_STARTUP); } disk = *argv++; + if (strlen(disk) > MAXPATHLEN) { + (void)fprintf(stderr, "Disk or filesystem name too long: %s\n", disk); + exit(X_STARTUP); + } argc--; if (argc >= 1) { (void)fprintf(stderr, "Unknown arguments to dump:"); @@ -408,10 +422,10 @@ main(int argc, char *argv[]) } if (Mflag) - snprintf(tape, NAME_MAX, "%s%03d", tapeprefix, tapeno + 1); + snprintf(tape, MAXPATHLEN, "%s%03d", tapeprefix, tapeno + 1); else - strncpy(tape, tapeprefix, NAME_MAX); - tape[NAME_MAX - 1] = '\0'; + strncpy(tape, tapeprefix, MAXPATHLEN); + tape[MAXPATHLEN - 1] = '\0'; if (!sizest) { @@ -695,7 +709,7 @@ usage(void) "k" #endif "MnSu] [-B records] [-b blocksize] [-d density]\n" - "\t%s [-f file] [-h level] [-s feet] [-T date] filesystem\n" + "\t%s [-e inode#] [-f file] [-h level] [-s feet] [-T date] filesystem\n" "\t%s [-W | -w]\n", __progname, white, __progname); exit(X_STARTUP); }