Annotation of researchv8dc/lib/libcbt/diskwrt.c, revision 1.1.1.1

1.1       root        1: #include "cbt.h"
                      2: 
                      3: extern bfile *curbf;
                      4: extern long lseek();
                      5: 
                      6: ndwrt(b, where) hdr *b; ndaddr where;
                      7: {
                      8:        if(lseek(curbf->tfd, where * (long)NDSZ, 0) == -1)
                      9:                return(EOF);
                     10:        if(write(curbf->tfd, (char *)b, NDSZ) != NDSZ) { /*unacceptable*/
                     11:                errno = BIOWRT;
                     12:                curbf->fatal++;
                     13:                return(EOF);
                     14:        }
                     15:        return(0);
                     16: }
                     17: 
                     18: long brecwrite(rec) mbuf rec;
                     19: {      long loc;
                     20:        int n;
                     21:        errno = 0;
                     22:        loc = lseek(curbf->dfd, 0L, 2);
                     23:        if((n = write(curbf->dfd, rec.mdata, rec.mlen)) == rec.mlen)
                     24:                return(loc);
                     25:        else if(n == -1 || errno)
                     26:                return(EOF);
                     27:        errno = BIOWRT;
                     28:        return(EOF);
                     29: }
                     30: 
                     31: ndaddr newnode(b) hdr *b;
                     32: {      long loc;
                     33:        int n;
                     34:        b->hstamp = tranid;
                     35:        loc = lseek(curbf->tfd, 0L, 2);
                     36:        if(loc == -1)
                     37:                return(EOF);
                     38:        if((n = write(curbf->tfd, (char *)b, NDSZ)) != NDSZ)
                     39:                if(n < 0)
                     40:                        return(EOF);
                     41:                else {
                     42:                        errno = BIOWRT;
                     43:                        return(EOF);
                     44:                }
                     45:        return(loc/NDSZ);
                     46: }
                     47: 
                     48: ndaddr oldnode(lev)
                     49: {      int n;
                     50:        ndaddr a;
                     51:        if(curbf->path[lev]->hstamp != tranid) {
                     52:                a = newnode(curbf->path[lev]);
                     53:                if(a == EOF)
                     54:                        curbf->fatal++;
                     55:                curbf->loc[lev] = a;
                     56:                return(a);
                     57:        }
                     58:        if(lseek(curbf->tfd, (long)curbf->loc[lev]*NDSZ, 0) == EOF)
                     59:                return(EOF);
                     60:        if((n = write(curbf->tfd, (char *)curbf->path[lev], NDSZ)) != NDSZ) {
                     61:                if(n >= 0)
                     62:                        errno = BIOWRT;
                     63:                return(EOF);
                     64:        }
                     65:        mustwrite(curbf, lev) = 0;
                     66:        return(curbf->loc[lev]);
                     67: }
                     68: static struct D { struct D *a; char *b;} VER = {&VER,"\n81/8/9:diskwrt.c\n"};
                     69: /*0100101010000110*/

unix.superglobalmegacorp.com

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