home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / drdobbs / 1987 / 12 / deikman / deikman.exp < prev    next >
Text File  |  1987-12-08  |  2KB  |  76 lines

  1.      char buffer[512];
  2.      long recn;
  3.      char *rec;
  4.  
  5.      {
  6.      if ((rec = cacfind(cache, recn)) == NULL) {
  7.  
  8.           /* record not in cache, must be read from disk */
  9.  
  10.           lseek(fd, recn * 512, 0);
  11.           read(fd, buffer, 512);
  12.           rec = buffer;
  13.           }
  14.  
  15.      /* rec points to record to process */
  16.      }
  17.  
  18. example 1
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.      char buffer[512];
  26.      long recn;  /* record number to write */
  27.      char *rec;  /* pointer to block in cache area */
  28.  
  29.      {
  30.      if ((rec = cacfind(cache, recn)) == NULL) rec = cacnum(cache, recn);
  31.      memcpy(rec, buffer, 512);     /* copy data into cache area */
  32.      lseek(fd, 512 * recn, 0);
  33.      write(fd, rec, 512);
  34.      }
  35.  
  36.  
  37. example 2
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.      char buffer[512];
  46.      long recn;  /* record number to write */
  47.      char *rec;  /* pointer to block in cache area */
  48.  
  49.      {
  50.      if ((rec = cacfind(cache, recn)) == NULL) rec = cacnum(cache, recn);
  51.      memcpy(rec, buffer, 512);           /* copy data into cache area */
  52.      cacproc(cache, recn);            /* mark the block for processing */
  53.      }
  54.  
  55.  
  56. example 3
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.      write_cache(idnt, recn, recb)
  64.      long   idnt;        /* cache identifier */
  65.      long   recn;        /* record number */
  66.      char   *recb;       /* record buffer */
  67.      {
  68.         lseek(fd, recn * 512, 0);
  69.         write(fd, recb, 512);
  70.         return;
  71.      }
  72.  
  73. example 4
  74.  
  75.  
  76.