|
|
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.