1*7775Srrh static char sccsid[] = "@(#)old.c 4.2 08/17/82";
21340Sbill /*
31340Sbill * sdb - a symbolic debugger for UNIX.
41340Sbill */
51340Sbill
61340Sbill /*
71340Sbill * This file contains support routines for older versions of the system.
81340Sbill */
91340Sbill
101340Sbill #ifndef VMUNIX
111340Sbill /*
121340Sbill * These routines are used only if the system
131340Sbill * doesn't have virtual memory. They
141340Sbill * are used only to read the symbol table, which
151340Sbill * is simply kept in VM on VMUNIX.
161340Sbill */
171340Sbill #include <pagsiz.h>
181340Sbill #include "bio.h"
191340Sbill
201340Sbill bread(brs, buff, nbytes)
211340Sbill struct brbuf *brs; char *buff; {
221340Sbill register int k, nb;
231340Sbill
241340Sbill if (nbytes > 0) {
251340Sbill for (nb=nbytes; nb>0; nb--) {
261340Sbill if (brs->nr == 0) {
271340Sbill brs->nr = read(brs->fd, brs->next=brs->b, BSIZE);
281340Sbill brs->nl = 0;
291340Sbill if (brs->nr < 0) return(-1);
301340Sbill if (brs->nr == 0) return(nbytes-nb);
311340Sbill }
321340Sbill *buff++ = *brs->next++;
331340Sbill brs->nr--;
341340Sbill brs->nl++;
351340Sbill }
361340Sbill }
371340Sbill else {
381340Sbill nbytes = -nbytes;
391340Sbill for (nb=nbytes; nb>0; nb--) {
401340Sbill if (brs->nl == 0) {
411340Sbill if ((k=tell(brs->fd)) >= BSIZE + brs->nr) {
421340Sbill lseek(brs->fd, (long) -(BSIZE + brs->nr), 1);
431340Sbill brs->nl = read(brs->fd, brs->b, BSIZE);
441340Sbill } else {
451340Sbill lseek(brs->fd, 0L, 0);
461340Sbill k = k - brs->nr;
471340Sbill if (k < 0) k = 0;
481340Sbill brs->nl = read(brs->fd, brs->b, k);
491340Sbill }
501340Sbill if (brs->nl == 0) return(nbytes-nb);
511340Sbill brs->next = brs->b + brs->nl;
521340Sbill brs->nr = 0;
531340Sbill }
541340Sbill *--buff = *--brs->next;
551340Sbill brs->nr++;
561340Sbill brs->nl--;
571340Sbill }
581340Sbill }
591340Sbill return(nbytes);
601340Sbill }
611340Sbill
621340Sbill blseek(brs, offset, flag)
631340Sbill struct brbuf *brs; long offset; {
641340Sbill brs->nl = 0;
651340Sbill brs->nr = 0;
661340Sbill return(lseek(brs->fd,offset,flag));
671340Sbill }
681340Sbill
691340Sbill binit(brs)
701340Sbill struct brbuf *brs; {
711340Sbill brs->nl = brs->nr = 0;
721340Sbill }
731340Sbill
741340Sbill long
tell(fildes)751340Sbill tell(fildes) {
761340Sbill return(lseek(fildes, 0L, 1));
771340Sbill }
781340Sbill #endif
79