ar.h revision b8e299dddd091ae24e0c08c45d91b8f937bd14d2
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell/* $XFree86: xc/programs/Xserver/hw/xfree86/loader/ar.h,v 1.3 1998/07/25 16:56:12 dawes Exp $ */
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste#ifdef HAVE_XORG_CONFIG_H
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste#include <xorg-config.h>
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste#endif
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste#ifndef _AR_H
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste#define _AR_H
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste#define ARMAG "!<arch>\n"
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste#define SARMAG 8
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste#define ARFMAG "`\n"
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste#if !(defined(__powerpc__) && defined(Lynx))
7cbae22b7560eefcf086863923459880aa87f014Jaco Joostestruct ar_hdr {
7cbae22b7560eefcf086863923459880aa87f014Jaco Jooste char ar_name[16];
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char ar_date[12];
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char ar_uid[6];
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char ar_gid[6];
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char ar_mode[8];
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char ar_size[10];
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char ar_fmag[2];
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell};
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell#else
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell#define AIAMAG "<aiaff>\n"
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell#define SAIAMAG 8
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell#define AIAFMAG "`\n"
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnellstruct fl_hdr { /* archive fixed length header - printable ascii */
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char fl_magic[SAIAMAG]; /* Archive file magic string */
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char fl_memoff[12]; /* Offset to member table */
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char fl_gstoff[12]; /* Offset to global symbol table */
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char fl_fstmoff[12]; /* Offset to first archive member */
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char fl_lstmoff[12]; /* Offset to last archive member */
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char fl_freeoff[12]; /* Offset to first mem on free list */
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell};
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell#define FL_HDR struct fl_hdr
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell#define FL_HSZ sizeof(FL_HDR)
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnellstruct ar_hdr { /* archive file member header - printable ascii */
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char ar_size[12]; /* file member size - decimal */
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char ar_nxtmem[12]; /* pointer to next member - decimal */
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char ar_prvmem[12]; /* pointer to previous member - decimal */
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell char ar_date[12]; /* file member date - decimal */
09a132902baa28c2f781680ea18958f95491f5bcCraig McDonnell char ar_uid[12]; /* file member user id - decimal */
09a132902baa28c2f781680ea18958f95491f5bcCraig McDonnell char ar_gid[12]; /* file member group id - decimal */
09a132902baa28c2f781680ea18958f95491f5bcCraig McDonnell char ar_mode[12]; /* file member mode - octal */
09a132902baa28c2f781680ea18958f95491f5bcCraig McDonnell char ar_namlen[4]; /* file member name length - decimal */
09a132902baa28c2f781680ea18958f95491f5bcCraig McDonnell union {
09a132902baa28c2f781680ea18958f95491f5bcCraig McDonnell char an_name[2]; /* variable length member name */
09a132902baa28c2f781680ea18958f95491f5bcCraig McDonnell char an_fmag[2]; /* AIAFMAG - string to end header */
09a132902baa28c2f781680ea18958f95491f5bcCraig McDonnell } _ar_name; /* and variable length name */
09a132902baa28c2f781680ea18958f95491f5bcCraig McDonnell};
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell
9689679261c7316504327bc5c012c9808bcc3e18Jaco Jooste#define ar_name _ar_name.an_name
9689679261c7316504327bc5c012c9808bcc3e18Jaco Jooste
9689679261c7316504327bc5c012c9808bcc3e18Jaco Jooste/*
9689679261c7316504327bc5c012c9808bcc3e18Jaco Jooste * Note: 'ar_namlen' contains the length of the member name which
9689679261c7316504327bc5c012c9808bcc3e18Jaco Jooste * may be up to 255 chars. The character string containing
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell * the name begins at '_ar_name.ar_name'. The terminating
aa3a2aee90d1c61946a08c839d9838be7658b453Craig McDonnell * string AIAFMAG, is only cosmetic. File member contents begin
7436da7252e66e7a698239a5c6b9ca04df24179aPhill Cunnington * at the first even byte boundary past 'header position +
7436da7252e66e7a698239a5c6b9ca04df24179aPhill Cunnington * sizeof(struct ar_hdr) + ar_namlen', and continue for
7436da7252e66e7a698239a5c6b9ca04df24179aPhill Cunnington * 'ar_size' bytes.
7436da7252e66e7a698239a5c6b9ca04df24179aPhill Cunnington*/
7436da7252e66e7a698239a5c6b9ca04df24179aPhill Cunnington
7436da7252e66e7a698239a5c6b9ca04df24179aPhill Cunnington#define AR_HDR struct ar_hdr
7436da7252e66e7a698239a5c6b9ca04df24179aPhill Cunnington#define AR_HSZ sizeof(AR_HDR)
7436da7252e66e7a698239a5c6b9ca04df24179aPhill Cunnington
7436da7252e66e7a698239a5c6b9ca04df24179aPhill Cunnington#endif /* !__powerpc__ && Lynx */
7436da7252e66e7a698239a5c6b9ca04df24179aPhill Cunnington
7436da7252e66e7a698239a5c6b9ca04df24179aPhill Cunnington#endif /* _AR_H */
7436da7252e66e7a698239a5c6b9ca04df24179aPhill Cunnington