📄 ldahread.c
字号:
/* --------------------------------------------------------- *//* | Copyright (c) 1986, 1989 MIPS Computer Systems, Inc. | *//* | All Rights Reserved. | *//* --------------------------------------------------------- *//* $Header: ldahread.c,v 2010.2.1.3 89/11/29 14:27:39 bettina Exp $ *//** ldahread - fill archive file member header info.** #ifdef PORTAR printable ascii header archive version* #else #ifdef PORT5AR UNIX 5.0 semi-portable archive version* #else pre-UNIX 5.0 (old) archive version* #endif*/#include <stdio.h>#include <ar.h>#include "filehdr.h"#include "syms.h"#include "ldfcn.h"intldahread(ldptr, arhead) LDFILE *ldptr; ARCHDR *arhead; { extern long sgetl(); extern int vldldptr();#ifdef PORTAR struct ar_hdr arbuf; if (vldldptr(ldptr) == SUCCESS && TYPE(ldptr) == ARTYPE && FSEEK(ldptr, -((long)sizeof(arbuf)), BEGINNING) == OKFSEEK && FREADM((char *)&arbuf, sizeof(arbuf), 1, ldptr) == 1 && !strncmp(arbuf.ar_fmag, ARFMAG, sizeof(arbuf.ar_fmag))) { register char *cp = arbuf.ar_name + sizeof(arbuf.ar_name); while (*--cp == ' ') ; if (*cp == '/') *cp = '\0'; else *++cp = '\0'; (void)strncpy(arhead->ar_name, arbuf.ar_name, sizeof(arbuf.ar_name)); if (sscanf(arbuf.ar_date, "%ld", &arhead->ar_date) == 1 && sscanf(arbuf.ar_uid, "%d", &arhead->ar_uid) == 1 && sscanf(arbuf.ar_gid, "%d", &arhead->ar_gid) == 1 && sscanf(arbuf.ar_mode, "%o", &arhead->ar_mode) == 1 && sscanf(arbuf.ar_size, "%ld", &arhead->ar_size) == 1) { return (SUCCESS); } }#else#ifdef PORT5AR struct arf_hdr arbuf; if (vldldptr(ldptr) == SUCCESS && TYPE(ldptr) == ARTYPE && FSEEK(ldptr, -((long)sizeof(arbuf)), BEGINNING) == OKFSEEK && FREADM((char *)&arbuf, sizeof(arbuf), 1, ldptr) == 1) { (void)strncpy(arhead->ar_name, arbuf.arf_name, sizeof(arbuf.arf_name)); arhead->ar_date = sgetl(arbuf.arf_date); arhead->ar_uid = sgetl(arbuf.arf_uid); arhead->ar_gid = sgetl(arbuf.arf_gid); arhead->ar_mode = sgetl(arbuf.arf_mode); arhead->ar_size = sgetl(arbuf.arf_size); return (SUCCESS); }#else if (vldldptr(ldptr) == SUCCESS && TYPE(ldptr) == ARTYPE && FSEEK(ldptr, -((long) ARCHSZ), BEGINNING) == OKFSEEK && FREADM((char *)arhead, ARCHSZ, 1, ldptr) == 1) { return (SUCCESS); }#endif#endif return (FAILURE);}static char ID[] = "@(#) ldahread.c: 1.4 3/3/83";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -