Commit | Line | Data |
---|---|---|
864f3dd6 KM |
1 | /*- |
2 | * Copyright (c) 1992 Keith Muller. | |
f547d164 KB |
3 | * Copyright (c) 1992, 1993 |
4 | * The Regents of the University of California. All rights reserved. | |
864f3dd6 KM |
5 | * |
6 | * This code is derived from software contributed to Berkeley by | |
7 | * Keith Muller of the University of California, San Diego. | |
8 | * | |
9 | * %sccs.include.redist.c% | |
10 | * | |
f547d164 | 11 | * @(#)cpio.h 8.1 (Berkeley) %G% |
864f3dd6 KM |
12 | */ |
13 | ||
14 | /* | |
15 | * Defines common to all versions of cpio | |
16 | */ | |
17 | #define TRAILER "TRAILER!!!" /* name in last archive record */ | |
18 | ||
19 | /* | |
20 | * Header encoding of the different file types | |
21 | */ | |
22 | #define C_ISDIR 040000 /* Directory */ | |
23 | #define C_ISFIFO 010000 /* FIFO */ | |
24 | #define C_ISREG 0100000 /* Regular file */ | |
25 | #define C_ISBLK 060000 /* Block special file */ | |
26 | #define C_ISCHR 020000 /* Character special file */ | |
27 | #define C_ISCTG 0110000 /* Reserved for contiguous files */ | |
28 | #define C_ISLNK 0120000 /* Reserved for symbolic links */ | |
29 | #define C_ISOCK 0140000 /* Reserved for sockets */ | |
30 | #define C_IFMT 0170000 /* type of file */ | |
31 | ||
32 | /* | |
fbaf17f6 | 33 | * Data Interchange Format - Extended cpio header format - POSIX 1003.1-1990 |
864f3dd6 KM |
34 | */ |
35 | typedef struct { | |
36 | char c_magic[6]; /* magic cookie */ | |
37 | char c_dev[6]; /* device number */ | |
38 | char c_ino[6]; /* inode number */ | |
39 | char c_mode[6]; /* file type/access */ | |
40 | char c_uid[6]; /* owners uid */ | |
41 | char c_gid[6]; /* owners gid */ | |
42 | char c_nlink[6]; /* # of links at archive creation */ | |
43 | char c_rdev[6]; /* block/char major/minor # */ | |
44 | char c_mtime[11]; /* modification time */ | |
45 | char c_namesize[6]; /* length of pathname */ | |
46 | char c_filesize[11]; /* length of file in bytes */ | |
47 | } HD_CPIO; | |
48 | ||
49 | #define MAGIC 070707 /* transportable archive id */ | |
fbaf17f6 KM |
50 | |
51 | #ifdef _PAX_ | |
52 | #define AMAGIC "070707" /* ascii equivalent string of MAGIC */ | |
864f3dd6 KM |
53 | #define CPIO_MASK 0x3ffff /* bits valid in the dev/ino fields */ |
54 | /* used for dev/inode remaps */ | |
fbaf17f6 | 55 | #endif /* _PAX_ */ |
864f3dd6 KM |
56 | |
57 | /* | |
fbaf17f6 | 58 | * Binary cpio header structure |
864f3dd6 KM |
59 | * |
60 | * CAUTION! CAUTION! CAUTION! | |
fbaf17f6 | 61 | * Each field really represents a 16 bit short (NOT ASCII). Described as |
864f3dd6 KM |
62 | * an array of chars in an attempt to improve portability!! |
63 | */ | |
64 | typedef struct { | |
65 | u_char h_magic[2]; | |
66 | u_char h_dev[2]; | |
67 | u_char h_ino[2]; | |
68 | u_char h_mode[2]; | |
69 | u_char h_uid[2]; | |
70 | u_char h_gid[2]; | |
71 | u_char h_nlink[2]; | |
72 | u_char h_rdev[2]; | |
73 | u_char h_mtime_1[2]; | |
74 | u_char h_mtime_2[2]; | |
75 | u_char h_namesize[2]; | |
76 | u_char h_filesize_1[2]; | |
77 | u_char h_filesize_2[2]; | |
78 | } HD_BCPIO; | |
79 | ||
fbaf17f6 | 80 | #ifdef _PAX_ |
864f3dd6 | 81 | /* |
fbaf17f6 | 82 | * extraction and creation macros for binary cpio |
864f3dd6 KM |
83 | */ |
84 | #define SHRT_EXT(ch) ((((unsigned)(ch)[0])<<8) | (((unsigned)(ch)[1])&0xff)) | |
85 | #define RSHRT_EXT(ch) ((((unsigned)(ch)[1])<<8) | (((unsigned)(ch)[0])&0xff)) | |
86 | #define CHR_WR_0(val) ((char)(((val) >> 24) & 0xff)) | |
87 | #define CHR_WR_1(val) ((char)(((val) >> 16) & 0xff)) | |
88 | #define CHR_WR_2(val) ((char)(((val) >> 8) & 0xff)) | |
89 | #define CHR_WR_3(val) ((char)((val) & 0xff)) | |
90 | ||
91 | /* | |
fbaf17f6 | 92 | * binary cpio masks and pads |
864f3dd6 KM |
93 | */ |
94 | #define BCPIO_PAD(x) ((2 - ((x) & 1)) & 1) /* pad to next 2 byte word */ | |
95 | #define BCPIO_MASK 0xffff /* mask for dev/ino fields */ | |
fbaf17f6 | 96 | #endif /* _PAX_ */ |
864f3dd6 KM |
97 | |
98 | /* | |
fbaf17f6 | 99 | * System VR4 cpio header structure (with/without file data crc) |
864f3dd6 KM |
100 | */ |
101 | typedef struct { | |
102 | char c_magic[6]; /* magic cookie */ | |
103 | char c_ino[8]; /* inode number */ | |
104 | char c_mode[8]; /* file type/access */ | |
105 | char c_uid[8]; /* owners uid */ | |
106 | char c_gid[8]; /* owners gid */ | |
107 | char c_nlink[8]; /* # of links at archive creation */ | |
108 | char c_mtime[8]; /* modification time */ | |
109 | char c_filesize[8]; /* length of file in bytes */ | |
110 | char c_maj[8]; /* block/char major # */ | |
111 | char c_min[8]; /* block/char minor # */ | |
112 | char c_rmaj[8]; /* special file major # */ | |
113 | char c_rmin[8]; /* special file minor # */ | |
114 | char c_namesize[8]; /* length of pathname */ | |
fbaf17f6 | 115 | char c_chksum[8]; /* 0 OR CRC of bytes of FILE data */ |
864f3dd6 KM |
116 | } HD_VCPIO; |
117 | ||
118 | #define VMAGIC 070701 /* sVr4 new portable archive id */ | |
864f3dd6 | 119 | #define VCMAGIC 070702 /* sVr4 new portable archive id CRC */ |
fbaf17f6 KM |
120 | #ifdef _PAX_ |
121 | #define AVMAGIC "070701" /* ascii string of above */ | |
864f3dd6 | 122 | #define AVCMAGIC "070702" /* ascii string of above */ |
fbaf17f6 | 123 | #define VCPIO_PAD(x) ((4 - ((x) & 3)) & 3) /* pad to next 4 byte word */ |
864f3dd6 | 124 | #define VCPIO_MASK 0xffffffff /* mask for dev/ino fields */ |
fbaf17f6 | 125 | #endif /* _PAX_ */ |