|
|
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.