|
|
1.1 root 1: /* @(#)ar.h 1.1 11/12/83 */
2:
3: #if PORTAR
4: /* COMMON ARCHIVE FORMAT
5: *
6: * ARCHIVE File Organization:
7: * _______________________________________________
8: * |__________ARCHIVE_MAGIC_STRING_______________|
9: * |__________ARCHIVE_FILE_MEMBER_1______________|
10: * | |
11: * | Archive File Header "ar_hdr" |
12: * |.............................................|
13: * | Member Contents |
14: * | 1. External symbol directory |
15: * | 2. Text file |
16: * |_____________________________________________|
17: * |________ARCHIVE_FILE_MEMBER_2________________|
18: * | "ar_hdr" |
19: * |.............................................|
20: * | Member Contents (.o or text file) |
21: * |_____________________________________________|
22: * | . . . |
23: * | . . . |
24: * | . . . |
25: * |_____________________________________________|
26: * |________ARCHIVE_FILE_MEMBER_n________________|
27: * | "ar_hdr" |
28: * |.............................................|
29: * | Member Contents |
30: * |_____________________________________________|
31: *
32: */
33:
34: #define ARMAG "!<arch>\n"
35: #define SARMAG 8
36: #define ARFMAG "`\n"
37:
38: struct ar_hdr /* archive file member header - printable ascii */
39: {
40: char ar_name[16]; /* file member name - `/' terminated */
41: char ar_date[12]; /* file member date - decimal */
42: char ar_uid[6]; /* file member user id - decimal */
43: char ar_gid[6]; /* file member group id - decimal */
44: char ar_mode[8]; /* file member mode - octal */
45: char ar_size[10]; /* file member size - decimal */
46: char ar_fmag[2]; /* ARFMAG - string to end header */
47: };
48:
49: #else
50: #if PORT5AR
51:
52: #define ARMAG "<ar>"
53: #define SARMAG 4
54:
55:
56: struct ar_hdr { /* archive header */
57: char ar_magic[SARMAG]; /* magic number */
58: char ar_name[16]; /* archive name */
59: char ar_date[4]; /* date of last archive modification */
60: char ar_syms[4]; /* number of ar_sym entries */
61: };
62:
63: struct ar_sym { /* archive symbol table entry */
64: char sym_name[8]; /* symbol name, recognized by ld */
65: char sym_ptr[4]; /* archive position of symbol */
66: };
67:
68: struct arf_hdr { /* archive file member header */
69: char arf_name[16]; /* file member name */
70: char arf_date[4]; /* file member date */
71: char arf_uid[4]; /* file member user identification */
72: char arf_gid[4]; /* file member group identification */
73: char arf_mode[4]; /* file member mode */
74: char arf_size[4]; /* file member size */
75: };
76:
77: #else
78:
79: #define ARMAG 0177545
80: struct ar_hdr
81: {
82: char ar_name[14];
83: long ar_date;
84: char ar_uid;
85: char ar_gid;
86: int ar_mode;
87: long ar_size;
88: };
89:
90: #endif
91: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.