# 2.11BSD#431 - /usr/ingres/source/dbu/rdwrbatch.c

##### Functions

    batchflush        X
    getbatch          X
    putbatch          X
    readbatch         X

       1: # include   "../ingres.h"
       2: # include   "../aux.h"
       3: # include   "../symbol.h"
       4: # include   "../access.h"
       5: # include   "../batch.h"
       6:
       7: getbatch(loc, count)
       8: char    *loc;
       9: int count;
      10: {
      11:     register char   *c;
      12:     register int    cnt, size;
      13:     int     i;
      14:
      15:     cnt = count;
      16: #	ifdef xZTR1
      17:     if (tTf(15, 15))
      18:         printf("getbatch:%d (%d)\n", cnt, Batch_cnt);
      19: #	endif
      20:     c = loc;
      21:
      22:     while (cnt)
      23:     {
      24:         /* see if there is anything in the buffer */
      25:         if (Batch_cnt == BATCHSIZE)
      26:             if ((i = readbatch()) < cnt)
      27:                 syserr("getbatch:can't read enough %d %d", i, cnt);
      28:         if (cnt <= BATCHSIZE - Batch_cnt)
      29:             size = cnt;
      30:         else
      31:             size = BATCHSIZE - Batch_cnt;
      32:         bmove(&Batchbuf.bbuf[Batch_cnt], c, size);
      33:         Batch_cnt += size;
      34:         cnt -= size;
      35:         c += size;
      36:         /* flush the buffer if full */
      37:         if (Batch_cnt == BATCHSIZE)
      38:             batchflush();   /* re-write buffer if necessary */
      39:     }
      40:     return (0);
      41: }
      42: putbatch(cp, count)
      43: char    *cp;
      44: int count;
      45: {
      46:     register char   *c;
      47:     register int    size, cnt;
      48:     int     i;
      49:
      50:     cnt = count;
      51:     c = cp;
      52: #	ifdef xZTR1
      53:     if (tTf(15, 2))
      54:         printf("putbatch:%d\n", cnt);
      55: #	endif
      56:
      57:     while (cnt)
      58:     {
      59:         Batch_dirty = TRUE; /* mark this buffer as dirty */
      60:         if (cnt + Batch_cnt > BATCHSIZE)
      61:             size = BATCHSIZE - Batch_cnt;
      62:         else
      63:             size = cnt;
      64:         bmove(c, &Batchbuf.bbuf[Batch_cnt], size);
      65:         c += size;
      66:         Batch_cnt += size;
      67:         cnt -= size;
      68:         if (Batch_cnt == BATCHSIZE)
      69:         {
      70:             batchflush();
      71:             /* is there is more to write, must read ahead first */
      72:             if (cnt)
      73:                 if ((i = readbatch()) < cnt)
      74:                     syserr("putbatch:rd too small %d", i);
      75:         }
      76:     }
      77: }
      78:
      79:
      80: readbatch()
      81: {
      82:
      83:     if ((Batch_lread = read(Batch_fp, &Batchbuf, BATCHSIZE+IDSIZE)) < 0)
      84:         syserr("readbatch:can't read %d %d", Batch_lread, Batch_fp);
      85:     Batch_cnt = 0;
      86: #	ifdef xZTR1
      87:     if (tTf(15, 10))
      88:         printf("read %d bytes from batch\n", Batch_lread);
      89: #	endif
      90:     /* check file-id */
      91:     if (!sequal(Fileset, Batchbuf.file_id))
      92:         syserr("readbatch:bad id '%s' '%.20s' %d", Fileset, Batchbuf.file_id, Batch_lread);
      93:     return (Batch_lread);
      94: }
      95:
      96:
      97: batchflush()
      98: {
      99:     register int    i;
     100:     long        ltemp;
     101:
     102:     if (Batch_cnt && Batch_dirty)
     103:     {
     104: #		ifdef xZTR1
     105:         if (tTf(15, 5))
     106:             printf("flush:backing up %d\n", Batch_lread);
     107: #		endif
     108:         ltemp = -Batch_lread;
     109:         if (lseek(Batch_fp, ltemp, 1) < 0)
     110:             syserr("batchflush:can't seek %d", Batch_lread);
     111: #		ifdef xZTR1
     112:         if (tTf(15, 4))
     113:             printf("flushing %d\n", Batch_cnt + IDSIZE);
     114: #		endif
     115:         if ((i = write(Batch_fp, &Batchbuf, Batch_cnt + IDSIZE)) != Batch_cnt + IDSIZE)
     116:             syserr("batchflush:can't write %d", i);
     117:         Batch_dirty = FALSE;
     118:     }
     119: }

#### Defined functions

batchflush defined in line 97; used 3 times

- in line 38, 70
- in /usr/ingres/source/dbu/update.c line 108

getbatch defined in line 7; used 14 times

- in /usr/ingres/source/dbu/modupdate.c line 50, 123-124(2)
- in /usr/ingres/source/dbu/secupdate.c line 64, 92-95(4)
- in /usr/ingres/source/dbu/update.c line 43, 65-67(3)
- in /usr/ingres/source/support/restore.c line 214, 230

putbatch defined in line 42; used 1 times

- in /usr/ingres/source/dbu/update.c line 100

readbatch defined in line 80; used 2 times

- in line 26, 73

Last modified: 1995-02-04 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 711 |