date and time created 82/01/18 19:20:35 by linton
authorMark Linton <linton@ucbvax.Berkeley.EDU>
Tue, 19 Jan 1982 11:20:35 +0000 (03:20 -0800)
committerMark Linton <linton@ucbvax.Berkeley.EDU>
Tue, 19 Jan 1982 11:20:35 +0000 (03:20 -0800)
SCCS-vsn: usr.bin/pascal/pdx/mappings/srcfile.c 1.1

usr/src/usr.bin/pascal/pdx/mappings/srcfile.c [new file with mode: 0644]

diff --git a/usr/src/usr.bin/pascal/pdx/mappings/srcfile.c b/usr/src/usr.bin/pascal/pdx/mappings/srcfile.c
new file mode 100644 (file)
index 0000000..2192dbf
--- /dev/null
@@ -0,0 +1,43 @@
+/* Copyright (c) 1982 Regents of the University of California */
+
+static char sccsid[] = "@(#)srcfile.c 1.1 %G%";
+
+/*
+ * get the source file name associated with a given address
+ */
+
+#include "defs.h"
+#include "mappings.h"
+#include "object.h"
+#include "filetab.h"
+
+char *srcfilename(addr)
+ADDRESS addr;
+{
+       register ADDRESS i, j, k;
+       ADDRESS a;
+       FILETAB *ftp;
+
+       if (addr < filetab[0].addr) {
+               return(NIL);
+       }
+       i = 0;
+       j = nlhdr.nfiles - 1;
+       while (i < j) {
+               k = (i + j) / 2;
+               ftp = &filetab[k];
+               if ((a = ftp->addr) == addr) {
+                       return(ftp->filename);
+               } else if (addr > a) {
+                       i = k + 1;
+               } else {
+                       j = k - 1;
+               }
+       }
+       if (addr >= filetab[i].addr) {
+               return(filetab[i].filename);
+       } else {
+               return(filetab[i-1].filename);
+       }
+       /*NOTREACHED*/
+}