|
|
1.1 ! root 1: /* (-lgl ! 2: * COHERENT Version 3.0 ! 3: * Copyright (c) 1982, 1993 by Mark Williams Company. ! 4: * All rights reserved. May not be copied without permission. ! 5: -lgl) */ ! 6: /* ! 7: * Dump tapes. ! 8: * A dump tape begins with a header ! 9: * record. This contains the attributes of the ! 10: * tape. ! 11: * The remainder of the tape is filled with ! 12: * arrays of dumpdata records. The map comes first, ! 13: * then all the directories, then all the files. ! 14: */ ! 15: #ifndef __DUMPTAPE_H__ ! 16: #define __DUMPTAPE_H__ ! 17: ! 18: #include <sys/types.h> ! 19: #include <sys/ino.h> ! 20: ! 21: /* ! 22: * Be warned! This header uses several magic numbers related to raw filesystem ! 23: * structure that are not portable. Since raw filesystem structure is used, ! 24: * this command will /not/ run on any filesystems other than the old-style ! 25: * Coherent filesystem. ! 26: */ ! 27: ! 28: #if ! DIRSIZ ! 29: # define DIRSIZ 14 ! 30: #endif ! 31: #if ! __BUFSIZ ! 32: # define __BUFSIZ 512 ! 33: #endif ! 34: ! 35: /* ! 36: * Dump tape header. ! 37: * All entries are in cannonical ! 38: * format on the tape. ! 39: */ ! 40: struct dumpheader ! 41: { ! 42: int dh_magic; /* Magic number */ ! 43: ino_t dh_nino; /* # of inodes on file system */ ! 44: time_t dh_bdate; /* Date at beginning of dump */ ! 45: time_t dh_ddate; /* Dump since date */ ! 46: int dh_level; /* Dump level */ ! 47: int dh_reel; /* Reel number in dump */ ! 48: fsize_t dh_nbyte; /* Length of disc */ ! 49: int dh_blocking; /* Blocking factor */ ! 50: char dh_dev[DIRSIZ]; /* Name of dumped device */ ! 51: char dh_fname[6]; /* File system name */ ! 52: char dh_fpack[6]; /* File system pack name */ ! 53: int dh_checksum; /* Byte checksum */ ! 54: }; ! 55: ! 56: #define DH_MAG 0123456 /* Magic number */ ! 57: ! 58: /* ! 59: * Dump data blocks. ! 60: * These are all a big union. ! 61: * They are packed into much larger ! 62: * blocks on the tape. ! 63: */ ! 64: union dumpdata ! 65: { ! 66: struct { ! 67: int dd_type; /* Type = DD_EOT */ ! 68: } dd_st1; ! 69: ! 70: struct { ! 71: int dd_type; /* Type = DD_DATA */ ! 72: ino_t dd_ino; /* Inode number */ ! 73: daddr_t dd_block; /* Block number in file */ ! 74: int dd_size; /* Bytes used in this block */ ! 75: char dd_data[__BUFSIZ];/* Data */ ! 76: } dd_st2; ! 77: ! 78: struct { ! 79: int dd_type; /* Type = DD_INO */ ! 80: ino_t dd_ino; /* Inode number */ ! 81: struct dinode dd_dinode; /* On disc inode */ ! 82: } dd_st3; ! 83: ! 84: struct { ! 85: int dd_type; /* Type = DD_MAP */ ! 86: ino_t dd_ino; /* Base inode of this map block */ ! 87: int dd_nmap; /* # of map entries */ ! 88: char dd_map[__BUFSIZ]; /* Some map */ ! 89: } dd_st4; ! 90: }; ! 91: ! 92: #define DD_EOT 0 /* End of dump */ ! 93: #define DD_INO 1 /* Inode */ ! 94: #define DD_DATA 2 /* Data block */ ! 95: #define DD_MAP 3 /* Map */ ! 96: ! 97: #define DD_BUSY 01 /* Inode in use */ ! 98: #define DD_DUMP 02 /* Inode dumped */ ! 99: #define DD_DIR 04 /* Inode is a directory */ ! 100: #define DD_DEJA 010 /* Already seen flag (dump) */ ! 101: #define DD_HERE (DD_BUSY|DD_DUMP) /* On the tape */ ! 102: ! 103: /* ! 104: * This structure is used ! 105: * to hold the dump dates in the ! 106: * file `/etc/ddate'. ! 107: */ ! 108: struct idates { ! 109: char id_name[DIRSIZ]; /* Device name */ ! 110: int id_incno; /* Level */ ! 111: time_t id_ddate; /* The date of the dump */ ! 112: }; ! 113: ! 114: #define DDATE "/etc/ddate" /* Date file name */ ! 115: #define DTAPE "/dev/dump" /* Default dump tape */ ! 116: #define DFSYS "" /* No default file system */ ! 117: ! 118: #endif /* ! defined (__DUMPTAPE_H__) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.