Annotation of researchv9/jerq/sgs/libld/ldaopen.c, revision 1.1

1.1     ! root        1: #include    <stdio.h>
        !             2: #include    "filehdr.h"
        !             3: #include    "ldfcn.h"
        !             4: 
        !             5: LDFILE *
        !             6: ldaopen(filename, oldptr)
        !             7:        char *filename;
        !             8:        LDFILE *oldptr; 
        !             9: {
        !            10:        extern FILE *fopen();
        !            11:        extern int vldldptr();
        !            12:        extern LDFILE *allocldptr();
        !            13:        extern int freeldptr();
        !            14:        FILE *ioptr;
        !            15:        LDFILE *nldptr;
        !            16: 
        !            17:        if (vldldptr(oldptr) == FAILURE || (nldptr = allocldptr()) == NULL)
        !            18:                return (NULL);
        !            19:        if ((ioptr = fopen(filename, "r")) == NULL)
        !            20:        {
        !            21:                freeldptr(nldptr);
        !            22:                return (NULL);
        !            23:        }
        !            24:        IOPTR(nldptr) = ioptr;
        !            25:        OFFSET(nldptr) = OFFSET(oldptr);
        !            26:        TYPE(nldptr) = TYPE(oldptr);
        !            27:        hdrassign(oldptr, nldptr);
        !            28:        nldptr->_fnum_ = oldptr->_fnum_;        /* use same string table */
        !            29:        return (nldptr);
        !            30: }
        !            31: 
        !            32: 
        !            33: 
        !            34: static int
        !            35: hdrassign(oldptr, nldptr)
        !            36:        LDFILE *oldptr;
        !            37:        LDFILE *nldptr;
        !            38: {
        !            39:        (HEADER(nldptr)).f_magic = (HEADER(oldptr)).f_magic;
        !            40:        (HEADER(nldptr)).f_nscns = (HEADER(oldptr)).f_nscns;
        !            41:        (HEADER(nldptr)).f_timdat = (HEADER(oldptr)).f_timdat;
        !            42:        (HEADER(nldptr)).f_symptr = (HEADER(oldptr)).f_symptr;
        !            43:        (HEADER(nldptr)).f_nsyms = (HEADER(oldptr)).f_nsyms;
        !            44:        (HEADER(nldptr)).f_opthdr = (HEADER(oldptr)).f_opthdr;
        !            45:        (HEADER(nldptr)).f_flags = (HEADER(oldptr)).f_flags;
        !            46:        return;
        !            47: }
        !            48: 
        !            49: static char ID[] = "@(#) ldaopen.c: 1.2 2/16/83";

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.