|
|
1.1 root 1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)dump.h 5.8 (Berkeley) 2/15/90
7: */
8:
9: #define NI 16
10: #define MAXINOPB (MAXBSIZE / sizeof(struct dinode))
11: #define MAXNINDIR (MAXBSIZE / sizeof(daddr_t))
12:
13: #include <sys/param.h>
14: #include <sys/stat.h>
15: #include <ufs/fs.h>
16: #include <ufs/dinode.h>
17: #include <protocols/dumprestore.h>
18: #include <ufs/dir.h>
19: #include <utmp.h>
20: #include <sys/signal.h>
21: #include <fstab.h>
22: #include <stdio.h>
23: #include <ctype.h>
24:
25: #define MWORD(m,i) (m[(unsigned)(i-1)/NBBY])
26: #define MBIT(i) (1<<((unsigned)(i-1)%NBBY))
27: #define BIS(i,w) (MWORD(w,i) |= MBIT(i))
28: #define BIC(i,w) (MWORD(w,i) &= ~MBIT(i))
29: #define BIT(i,w) (MWORD(w,i) & MBIT(i))
30:
31: int msiz;
32: char *clrmap;
33: char *dirmap;
34: char *nodmap;
35:
36: /*
37: * All calculations done in 0.1" units!
38: */
39:
40: char *disk; /* name of the disk file */
41: char *tape; /* name of the tape file */
42: char *increm; /* name of the file containing incremental information*/
43: char *temp; /* name of the file for doing rewrite of increm */
44: char lastincno; /* increment number of previous dump */
45: char incno; /* increment number */
46: int uflag; /* update flag */
47: int fi; /* disk file descriptor */
48: int to; /* tape file descriptor */
49: int pipeout; /* true => output to standard output */
50: ino_t ino; /* current inumber; used globally */
51: int nsubdir;
52: int newtape; /* new tape flag */
53: int nadded; /* number of added sub directories */
54: int dadded; /* directory added flag */
55: int density; /* density in 0.1" units */
56: long tsize; /* tape size in 0.1" units */
57: long esize; /* estimated tape size, blocks */
58: long asize; /* number of 0.1" units written on current tape */
59: int etapes; /* estimated number of tapes */
60:
61: int notify; /* notify operator flag */
62: int blockswritten; /* number of blocks written on current tape */
63: int tapeno; /* current tape number */
64: time_t tstart_writing; /* when started writing the first tape block */
65: char *processname;
66: struct fs *sblock; /* the file system super block */
67: char buf[MAXBSIZE];
68: long dev_bsize;
69:
70: char *ctime();
71: char *prdate();
72: long atol();
73: int mark();
74: int add();
75: int dirdump();
76: int dump();
77: int tapsrec();
78: int dmpspc();
79: int dsrch();
80: int nullf();
81: char *getsuffix();
82: char *rawname();
83: struct dinode *getino();
84:
85: int interrupt(); /* in case operator bangs on console */
86:
87: #define HOUR (60L*60L)
88: #define DAY (24L*HOUR)
89: #define YEAR (365L*DAY)
90:
91: /*
92: * Exit status codes
93: */
94: #define X_FINOK 0 /* normal exit */
95: #define X_REWRITE 2 /* restart writing from the check point */
96: #define X_ABORT 3 /* abort all of dump; don't attempt checkpointing*/
97:
98: #define OPGRENT "operator" /* group entry to notify */
99: #define DIALUP "ttyd" /* prefix for dialups */
100:
101: struct fstab *fstabsearch(); /* search in fs_file and fs_spec */
102:
103: /*
104: * The contents of the file _PATH_DUMPDATES is maintained both on
105: * a linked list, and then (eventually) arrayified.
106: */
107: struct idates {
108: char id_name[MAXNAMLEN+3];
109: char id_incno;
110: time_t id_ddate;
111: };
112: struct itime{
113: struct idates it_value;
114: struct itime *it_next;
115: };
116: struct itime *ithead; /* head of the list version */
117: int nidates; /* number of records (might be zero) */
118: int idates_in; /* we have read the increment file */
119: struct idates **idatev; /* the arrayfied version */
120: #define ITITERATE(i, ip) for (i = 0,ip = idatev[0]; i < nidates; i++, ip = idatev[i])
121:
122: /*
123: * We catch these interrupts
124: */
125: int sighup();
126: int sigquit();
127: int sigill();
128: int sigtrap();
129: int sigfpe();
130: int sigkill();
131: int sigbus();
132: int sigsegv();
133: int sigsys();
134: int sigalrm();
135: int sigterm();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.