|
|
1.1 ! root 1: /*- ! 2: * Copyright (c) 1989 The Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted provided ! 6: * that: (1) source distributions retain this entire copyright notice and ! 7: * comment, and (2) distributions including binaries display the following ! 8: * acknowledgement: ``This product includes software developed by the ! 9: * University of California, Berkeley and its contributors'' in the ! 10: * documentation or other materials provided with the distribution and in ! 11: * all advertising materials mentioning features or use of this software. ! 12: * Neither the name of the University nor the names of its contributors may ! 13: * be used to endorse or promote products derived from this software without ! 14: * specific prior written permission. ! 15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 16: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 17: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 18: */ ! 19: ! 20: #ifndef lint ! 21: char copyright[] = ! 22: "@(#) Copyright (c) 1990 The Regents of the University of California.\n\ ! 23: All rights reserved.\n"; ! 24: #endif /* not lint */ ! 25: ! 26: #ifndef lint ! 27: static char sccsid[] = "@(#)mtree.c 5.8 (Berkeley) 5/25/90"; ! 28: #endif /* not lint */ ! 29: ! 30: #include <sys/param.h> ! 31: #include <sys/stat.h> ! 32: #include <errno.h> ! 33: #include <stdio.h> ! 34: #include <fts.h> ! 35: #include "mtree.h" ! 36: ! 37: NODE *root; ! 38: int exitval; ! 39: int cflag, dflag, eflag, rflag, uflag; ! 40: ! 41: main(argc, argv) ! 42: int argc; ! 43: char **argv; ! 44: { ! 45: extern int ftsoptions, optind; ! 46: extern char *optarg; ! 47: int ch; ! 48: char *dir; ! 49: ! 50: dir = (char *)NULL; ! 51: while ((ch = getopt(argc, argv, "cdef:p:rux")) != EOF) ! 52: switch((char)ch) { ! 53: case 'c': ! 54: cflag = 1; ! 55: break; ! 56: case 'd': ! 57: dflag = 1; ! 58: break; ! 59: case 'e': ! 60: eflag = 1; ! 61: break; ! 62: case 'f': ! 63: if (!(freopen(optarg, "r", stdin))) { ! 64: (void)fprintf(stderr, ! 65: "mtree: can't read %s.\n", optarg); ! 66: exit(1); ! 67: } ! 68: break; ! 69: case 'p': ! 70: dir = optarg; ! 71: break; ! 72: case 'r': ! 73: rflag = 1; ! 74: break; ! 75: case 'u': ! 76: uflag = 1; ! 77: break; ! 78: case 'x': ! 79: ftsoptions |= FTS_XDEV; ! 80: break; ! 81: case '?': ! 82: default: ! 83: usage(); ! 84: } ! 85: argc -= optind; ! 86: if (argc) ! 87: usage(); ! 88: ! 89: if (!cflag) ! 90: spec(); ! 91: ! 92: if (dir && chdir(dir)) { ! 93: (void)fprintf(stderr, ! 94: "mtree: %s: %s\n", dir, strerror(errno)); ! 95: exit(1); ! 96: } ! 97: ! 98: if (cflag) ! 99: cwalk(); ! 100: else ! 101: verify(); ! 102: exit(exitval); ! 103: } ! 104: ! 105: usage() ! 106: { ! 107: (void)fprintf(stderr, ! 108: "usage: mtree [-cderux] [-p path] [-f spec]\n"); ! 109: exit(1); ! 110: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.