home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / progm / cbase.zip / CBASE10B.ZIP / CBASE.ZIP / CBGETR.C < prev    next >
Text File  |  1989-11-08  |  2KB  |  80 lines

  1. /*    Copyright (c) 1989 Citadel    */
  2. /*       All Rights Reserved        */
  3.  
  4. /* #ident    "cbgetr.c    1.2 - 89/11/08" */
  5.  
  6. #include <blkio.h>
  7. #include <errno.h>
  8. #include <lseq.h>
  9. #include "cbase_.h"
  10.  
  11. /*man---------------------------------------------------------------------------
  12. NAME
  13.      cbgetr - get cbase record
  14.  
  15. SYNOPSIS
  16.      #include <cbase.h>
  17.  
  18.      int cbgetr(cbp, buf)
  19.      cbase_t *cbp;
  20.      void *buf;
  21.  
  22. DESCRIPTION
  23.      The cbgetr function reads the current record of cbase cbp into
  24.      buf.  buf must point to a storage area at least as large as the
  25.      record size for cbp.
  26.  
  27.      cbgetr will fail if one or more of the following is true:
  28.  
  29.      [EINVAL]       cbp is not a valid cbase pointer.
  30.      [EINVAL]       buf is the NULL pointer.
  31.      [CBELOCK]      cbp is not read locked.
  32.      [CBENOPEN]     cbp is not open.
  33.      [CBENREC]      The record cursor for cbp is null.
  34.  
  35. SEE ALSO
  36.      cbrcursor, cbrecsize, cbgetrf, cbputr.
  37.  
  38. DIAGNOSTICS
  39.      Upon successful completion, a value of 0 is returned.  Otherwise,
  40.      a value of -1 is returned, and errno set to indicate the error.
  41.  
  42. ------------------------------------------------------------------------------*/
  43. int cbgetr(cbp, buf)
  44. cbase_t *cbp;
  45. void *buf;
  46. {
  47.     /* validate arguments */
  48.     if (!cb_valid(cbp) || (buf == NULL)) {
  49.         errno = EINVAL;
  50.         return -1;
  51.     }
  52.  
  53.     /* check if not open */
  54.     if (!(cbp->flags & CBOPEN)) {
  55.         errno = CBENOPEN;
  56.         return -1;
  57.     }
  58.  
  59.     /* check if not read locked */
  60.     if (!(cbp->flags & CBRDLCK)) {
  61.         errno = CBELOCK;
  62.         return -1;
  63.     }
  64.  
  65.     /* check if cursor is null */
  66.     if (lscursor(cbp->lsp) == NULL) {
  67.         errno = CBENREC;
  68.         return -1;
  69.     }
  70.  
  71.     /* read field */
  72.     if (lsgetr(cbp->lsp, buf) == -1) {
  73.         CBEPRINT;
  74.         return -1;
  75.     }
  76.  
  77.     errno = 0;
  78.     return 0;
  79. }
  80.