static long field2long __P((const char *, size_t));
static struct arch_member *new_arch_member __P((struct ar_hdr *, const char *));static TIMESTAMP mtime_of_member __P((struct arch_member *));static Arch *read_archive __P((const char *, const char *));#ifdef CLEANUPstatic void ArchFree __P((Arch *));#endifstatic TIMESTAMP ArchMTimeMember __P((const char *, const char *, Boolean));static FILE *ArchFindMember __P((const char *, const char *, struct ar_hdr *, const char *));static void ArchTouch __P((const char *, const char *));#if defined(__svr4__) || defined(__SVR4) || \    (defined(__OpenBSD__) && defined(__mips__)) || \    (defined(__OpenBSD__) && defined(__powerpc))#define SVR4ARCHIVES#endif#ifdef SVR4ARCHIVESstruct SVR4namelist {    char	  *fnametab;  /* Extended name table strings */    size_t	  fnamesize;  /* Size of the string table */};static const char *svr4list = "Archive list";static char *ArchSVR4Entry __P((struct SVR4namelist *, char *, size_t, FILE *));#endifstatic struct arch_member *new_arch_member(hdr, name)    struct ar_hdr *hdr;    const char *name;{    const char *end = NULL;    struct arch_member *n;    n = hash_create_entry(&members_info, name, &end);    /* XXX ar entries are NOT null terminated.  */    memcpy(n->date, &(hdr->ar_date), AR_DATE_SIZE);    n->date[AR_DATE_SIZE] = '\0';    /* Don't compute mtime before it is needed. */    set_out_of_date(n->mtime);    return n;}