diff options
Diffstat (limited to 'hw/xfree86/loader/ar.h')
-rw-r--r-- | hw/xfree86/loader/ar.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/hw/xfree86/loader/ar.h b/hw/xfree86/loader/ar.h new file mode 100644 index 000000000..4dbc97901 --- /dev/null +++ b/hw/xfree86/loader/ar.h @@ -0,0 +1,77 @@ +/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/ar.h,v 1.3 1998/07/25 16:56:12 dawes Exp $ */ + + +#ifndef _AR_H +#define _AR_H + +#define ARMAG "!<arch>\n" +#define SARMAG 8 +#define ARFMAG "`\n" + +#if !(defined(__powerpc__) && defined(Lynx)) +struct ar_hdr { + char ar_name[16], + ar_date[12], + ar_uid[6], + ar_gid[6], + ar_mode[8], + ar_size[10], + ar_fmag[2]; +}; + +#else + +#define AIAMAG "<aiaff>\n" +#define SAIAMAG 8 +#define AIAFMAG "`\n" + +struct fl_hdr /* archive fixed length header - printable ascii */ +{ + char fl_magic[SAIAMAG]; /* Archive file magic string */ + char fl_memoff[12]; /* Offset to member table */ + char fl_gstoff[12]; /* Offset to global symbol table */ + char fl_fstmoff[12]; /* Offset to first archive member */ + char fl_lstmoff[12]; /* Offset to last archive member */ + char fl_freeoff[12]; /* Offset to first mem on free list */ +}; + +#define FL_HDR struct fl_hdr +#define FL_HSZ sizeof(FL_HDR) + + +struct ar_hdr /* archive file member header - printable ascii */ +{ + char ar_size[12]; /* file member size - decimal */ + char ar_nxtmem[12]; /* pointer to next member - decimal */ + char ar_prvmem[12]; /* pointer to previous member - decimal */ + char ar_date[12]; /* file member date - decimal */ + char ar_uid[12]; /* file member user id - decimal */ + char ar_gid[12]; /* file member group id - decimal */ + char ar_mode[12]; /* file member mode - octal */ + char ar_namlen[4]; /* file member name length - decimal */ + union + { + char an_name[2]; /* variable length member name */ + char an_fmag[2]; /* AIAFMAG - string to end header */ + } _ar_name; /* and variable length name */ +}; + +#define ar_name _ar_name.an_name + +/* + * Note: 'ar_namlen' contains the length of the member name which + * may be up to 255 chars. The character string containing + * the name begins at '_ar_name.ar_name'. The terminating + * string AIAFMAG, is only cosmetic. File member contents begin + * at the first even byte boundary past 'header position + + * sizeof(struct ar_hdr) + ar_namlen', and continue for + * 'ar_size' bytes. +*/ + +#define AR_HDR struct ar_hdr +#define AR_HSZ sizeof(AR_HDR) + +#endif /* !__powerpc__ && Lynx */ + +#endif /* _AR_H */ + |