Annotation of 43BSD/contrib/rn/backpage.c, revision 1.1.1.1

1.1       root        1: /* $Header: backpage.c,v 4.3 85/05/01 11:36:03 lwall Exp $
                      2:  *
                      3:  * $Log:       backpage.c,v $
                      4:  * Revision 4.3  85/05/01  11:36:03  lwall
                      5:  * Baseline for release with 4.3bsd.
                      6:  * 
                      7:  */
                      8: 
                      9: #include "EXTERN.h"
                     10: #include "common.h"
                     11: #include "intrp.h"
                     12: #include "final.h"
                     13: #include "INTERN.h"
                     14: #include "backpage.h"
                     15: 
                     16: ART_LINE maxindx = -1;
                     17: long lseek();
                     18: 
                     19: void
                     20: backpage_init()
                     21: {
                     22:     char *varyname;
                     23:     
                     24:     varyname = filexp(VARYNAME);
                     25:     close(creat(varyname,0600));
                     26:     varyfd = open(varyname,2);
                     27:     UNLINK(varyname);
                     28:     if (varyfd < 0) {
                     29:        printf(cantopen,varyname) FLUSH;
                     30:        sig_catcher(0);
                     31:     }
                     32:     
                     33: }
                     34: 
                     35: /* virtual array read */
                     36: 
                     37: ART_POS
                     38: vrdary(indx)
                     39: ART_LINE indx;
                     40: {
                     41:     int subindx;
                     42:     long offset;
                     43: 
                     44: #ifdef DEBUGGING
                     45:     if (indx > maxindx) {
                     46:        printf("vrdary(%ld) > %ld\n",(long)indx, (long)maxindx) FLUSH;
                     47:        return 0;
                     48:     }
                     49: #endif
                     50:     if (indx < 0)
                     51:        return 0;
                     52:     subindx = indx % VARYSIZE;
                     53:     offset = (indx - subindx) * sizeof(varybuf[0]);
                     54:     if (offset != oldoffset) {
                     55:        if (oldoffset >= 0) {
                     56: #ifndef lint
                     57:            (void)lseek(varyfd,oldoffset,0);
                     58:            write(varyfd, (char *)varybuf,sizeof(varybuf));
                     59: #endif lint
                     60:        }
                     61: #ifndef lint
                     62:        (void)lseek(varyfd,offset,0);
                     63:        read(varyfd,(char *)varybuf,sizeof(varybuf));
                     64: #endif lint
                     65:        oldoffset = offset;
                     66:     }
                     67:     return varybuf[subindx];
                     68: }
                     69: 
                     70: /* write to virtual array */
                     71: 
                     72: void
                     73: vwtary(indx,newvalue)
                     74: ART_LINE indx;
                     75: ART_POS newvalue;
                     76: {
                     77:     int subindx;
                     78:     long offset;
                     79: 
                     80: #ifdef DEBUGGING
                     81:     if (indx < 0)
                     82:        printf("vwtary(%ld)\n",(long)indx) FLUSH;
                     83:     if (!indx)
                     84:        maxindx = 0;
                     85:     if (indx > maxindx) {
                     86:        if (indx != maxindx + 1)
                     87:            printf("indx skipped %d-%d\n",maxindx+1,indx-1) FLUSH;
                     88:        maxindx = indx;
                     89:     }
                     90: #endif
                     91:     subindx = indx % VARYSIZE;
                     92:     offset = (indx - subindx) * sizeof(varybuf[0]);
                     93:     if (offset != oldoffset) {
                     94:        if (oldoffset >= 0) {
                     95: #ifndef lint
                     96:            (void)lseek(varyfd,oldoffset,0);
                     97:            write(varyfd,(char *)varybuf,sizeof(varybuf));
                     98: #endif lint
                     99:        }
                    100: #ifndef lint
                    101:        (void)lseek(varyfd,offset,0);
                    102:        read(varyfd,(char *)varybuf,sizeof(varybuf));
                    103: #endif lint
                    104:        oldoffset = offset;
                    105:     }
                    106:     varybuf[subindx] = newvalue;
                    107: }
                    108: 

unix.superglobalmegacorp.com

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