|
|
1.1 ! root 1: /* Copyright (c) 1982 Regents of the University of California */ ! 2: ! 3: static char sccsid[] = "@(#)srcfile.c 1.1 1/18/82"; ! 4: ! 5: /* ! 6: * get the source file name associated with a given address ! 7: */ ! 8: ! 9: #include "defs.h" ! 10: #include "mappings.h" ! 11: #include "object.h" ! 12: #include "filetab.h" ! 13: ! 14: char *srcfilename(addr) ! 15: ADDRESS addr; ! 16: { ! 17: register ADDRESS i, j, k; ! 18: ADDRESS a; ! 19: FILETAB *ftp; ! 20: ! 21: if (addr < filetab[0].addr) { ! 22: return(NIL); ! 23: } ! 24: i = 0; ! 25: j = nlhdr.nfiles - 1; ! 26: while (i < j) { ! 27: k = (i + j) / 2; ! 28: ftp = &filetab[k]; ! 29: if ((a = ftp->addr) == addr) { ! 30: return(ftp->filename); ! 31: } else if (addr > a) { ! 32: i = k + 1; ! 33: } else { ! 34: j = k - 1; ! 35: } ! 36: } ! 37: if (addr >= filetab[i].addr) { ! 38: return(filetab[i].filename); ! 39: } else { ! 40: return(filetab[i-1].filename); ! 41: } ! 42: /*NOTREACHED*/ ! 43: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.