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

  1. /*    Copyright (c) 1989 Citadel    */
  2. /*       All Rights Reserved        */
  3.  
  4. /* #ident    "cbgetrcu.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.      cbgetrcur - get cbase record cursor
  14.  
  15. SYNOPSIS
  16.      #include <cbase.h>
  17.  
  18.      int cbgetrcur(cbp, cbrpos_p)
  19.      cbase_t *cbp;
  20.      cbrpos_t *cbrpos_p;
  21.  
  22. DESCRIPTION
  23.      The cbgetrcur function gets the position of the record cursor of
  24.      cbase cbp.  The cursor position is returned in the location
  25.      pointed to by cbrpos_p.
  26.  
  27.      cbgetrcur will fail if one or more of the following is true:
  28.  
  29.      [EINVAL]       cbp is not a valid cbase pointer.
  30.      [EINVAL]       cbrpos_p is the NULL pointer.
  31.      [CBELOCK]      cbp is not locked.
  32.      [CBENOPEN]     cbp is not open.
  33.  
  34. SEE ALSO
  35.      cbgetkcur, cbrcursor, cbsetrcur.
  36.  
  37. DIAGNOSTICS
  38.      Upon successful completion, a value of 0 is returned.  Otherwise,
  39.      a value of -1 is returned, and errno set to indicate the error.
  40.  
  41. ------------------------------------------------------------------------------*/
  42. int cbgetrcur(cbp, cbrpos_p)
  43. cbase_t *cbp;
  44. cbrpos_t *cbrpos_p;
  45. {
  46.     lspos_t lspos = 0;
  47.  
  48.     /* validate arguments */
  49.     if (!cb_valid(cbp) || (cbrpos_p == NULL)) {
  50.         errno = EINVAL;
  51.         return -1;
  52.     }
  53.  
  54.     /* check if not open */
  55.     if (!(cbp->flags & CBOPEN)) {
  56.         errno = CBENOPEN;
  57.         return -1;
  58.     }
  59.  
  60.     /* check if not locked */
  61.     if (!(cbp->flags & CBLOCKS)) {
  62.         errno = CBELOCK;
  63.         return -1;
  64.     }
  65.  
  66.     /* get record cursor position */
  67.     if (lsgetcur(cbp->lsp, &lspos) == -1) {
  68.         CBEPRINT;
  69.         return -1;
  70.     }
  71.  
  72.     /* load return argument */
  73.     *cbrpos_p = lspos;
  74.  
  75.     errno = 0;
  76.     return 0;
  77. }
  78.