Annotation of 43BSD/ucb/pascal/pdx/mappings/srcfile.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1980 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  */
                      6: 
                      7: #ifndef lint
                      8: static char sccsid[] = "@(#)srcfile.c  5.1 (Berkeley) 6/6/85";
                      9: #endif not lint
                     10: 
                     11: /*
                     12:  * get the source file name associated with a given address
                     13:  */
                     14: 
                     15: #include "defs.h"
                     16: #include "mappings.h"
                     17: #include "object.h"
                     18: #include "filetab.h"
                     19: 
                     20: char *srcfilename(addr)
                     21: ADDRESS addr;
                     22: {
                     23:        register ADDRESS i, j, k;
                     24:        ADDRESS a;
                     25:        FILETAB *ftp;
                     26: 
                     27:        if (addr < filetab[0].addr) {
                     28:                return(NIL);
                     29:        }
                     30:        i = 0;
                     31:        j = nlhdr.nfiles - 1;
                     32:        while (i < j) {
                     33:                k = (i + j) / 2;
                     34:                ftp = &filetab[k];
                     35:                if ((a = ftp->addr) == addr) {
                     36:                        return(ftp->filename);
                     37:                } else if (addr > a) {
                     38:                        i = k + 1;
                     39:                } else {
                     40:                        j = k - 1;
                     41:                }
                     42:        }
                     43:        if (addr >= filetab[i].addr) {
                     44:                return(filetab[i].filename);
                     45:        } else {
                     46:                return(filetab[i-1].filename);
                     47:        }
                     48:        /*NOTREACHED*/
                     49: }

unix.superglobalmegacorp.com

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