|
|
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";
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.