Files
seta75D d6fe8fe829 Init
2021-10-11 22:19:34 -03:00

163 lines
3.8 KiB
C

/* @(#)47 1.12 src/bos/usr/include/ldfcn.h, cmdaout, bos411, 9428A410j 7/28/92 16:36:03 */
/* src/bos/usr/include/ldfcn.h, cmdaout, bos411, 9428A410j - 92/07/28 - 16:36:03 */
/*
* COMPONENT_NAME: CMDAOUT
*
* FUNCTIONS: none
*
* ORIGINS: 3, 27
*
* (C) COPYRIGHT International Business Machines Corp. 1989
* All Rights Reserved
* Licensed Materials - Property of IBM
*
* US Government Users Restricted Rights - Use, duplication or
* disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
*/
#ifndef _H_LDFCN
#define _H_LDFCN
#if !defined(AIXV3AR) && !defined(PORTAR) && !defined(PORT5AR) && \
defined(_POWER)
#define AIXV3AR
#endif /* Set archive format */
#ifndef LDFILE
struct ldfile {
int _fnum_; /* so each instance of an LDFILE is unique */
FILE *ioptr; /* system I/O pointer value */
long offset; /* absolute offset to the start of the file */
#ifdef AIXV3AR
long ar_off; /* archive header offset for file (or zero) */
long ar_end_off; /* offset of first ar hdr after the normal */
/* headers. */
#endif /* AIXV3AR */
FILHDR header; /* the file header of the opened file */
unsigned short type; /* indicator of the type of the file */
};
/*
* provide a structure "type" definition, and the associated
* "attributes"
*/
#define LDFILE struct ldfile
#define IOPTR(x) x->ioptr
#define OFFSET(x) x->offset
#define TYPE(x) x->type
#define HEADER(x) x->header
#define LDFSZ sizeof(LDFILE)
#ifdef AIXV3AR
#define AR_OFF(x) x->ar_off
#define AR_END_OFF(x) x->ar_end_off
#endif /* AIXV3AR */
/*
* define various values of TYPE(ldptr)
*/
#define LDTYPE B16MAGIC /* defined in terms of the filehdr.h include file */
#define TVTYPE TVMAGIC /* ditto */
#if u3b5
#define USH_ARTYPE ARTYPE
#else
#define USH_ARTYPE (unsigned short) ARTYPE
#endif
#if defined(PORTAR) || defined(PORT5AR) || defined(AIXV3AR)
#define ARTYPE 0177545
#else
#define ARTYPE ARMAG
#endif
/*
* define symbolic positioning information for FSEEK (and fseek)
*/
#define BEGINNING 0
#define CURRENT 1
#define END 2
/*
* define a structure "type" for an archive header
*/
#if defined(PORTAR) || defined(PORT5AR)
typedef struct
{
char ar_name[16];
long ar_date;
int ar_uid;
int ar_gid;
long ar_mode;
long ar_size;
} archdr;
#define ARCHDR archdr
#else
#ifdef AIXV3AR
typedef struct
{
long ar_size;
long ar_nxtmem;
long ar_prvmem;
long ar_date;
long ar_uid;
long ar_gid;
long ar_mode;
int ar_namlen;
char ar_name[256];
} archdr;
#define ARCHDR archdr
#else
#define ARCHDR struct ar_hdr /* ARCHIVE is defined in ts.h */
#endif
#endif
#define ARCHSZ sizeof(ARCHDR)
/*
* define some useful symbolic constants
*/
#define SYMTBL 0 /* section nnumber and/or section name of the Symbol Table */
#define SUCCESS 1
#define CLOSED 1
#define FAILURE 0
#define NOCLOSE 0
#define BADINDEX -1L
#define OKFSEEK 0
/*
* define macros to permit the direct use of LDFILE pointers with the
* standard I/O library procedures
*/
#ifdef _NO_PROTO
extern LDFILE *ldopen();
extern LDFILE *ldaopen();
#else
extern LDFILE *ldopen(char *,LDFILE *);
extern LDFILE *ldaopen(char *,LDFILE *);
#endif
#define GETC(ldptr) getc(IOPTR(ldptr))
#define GETW(ldptr) getw(IOPTR(ldptr))
#define FEOF(ldptr) feof(IOPTR(ldptr))
#define FERROR(ldptr) ferror(IOPTR(ldptr))
#define FGETC(ldptr) fgetc(IOPTR(ldptr))
#define FGETS(s,n,ldptr) fgets(s,n,IOPTR(ldptr))
#define FILENO(ldptr) fileno(IOPTR(ldptr))
#define FREAD(p,s,n,ldptr) fread(p,s,n,IOPTR(ldptr))
#define FSEEK(ldptr,o,p) fseek(IOPTR(ldptr),(p==BEGINNING)?(OFFSET(ldptr)+o):o,p)
#define FTELL(ldptr) ftell(IOPTR(ldptr))
#define FWRITE(p,s,n,ldptr) fwrite(p,s,n,IOPTR(ldptr))
#define REWIND(ldptr) rewind(IOPTR(ldptr))
#define SETBUF(ldptr,b) setbuf(IOPTR(ldptr),b)
#define UNGETC(c,ldptr) ungetc(c,IOPTR(ldptr))
#define STROFFSET(ldptr) (HEADER(ldptr).f_symptr + HEADER(ldptr).f_nsyms * 18) /* 18 == SYMESZ */
#endif
#endif /* _H_LDFCN */