home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frostbyte's 1980s DOS Shareware Collection
/
floppyshareware.zip
/
floppyshareware
/
DOOG
/
CBASE09.ZIP
/
CBASE.ZIP
/
CBPUTR.C
< prev
next >
Wrap
Text File
|
1989-08-31
|
2KB
|
97 lines
/* Copyright (c) 1989 Citadel */
/* All Rights Reserved */
/* #ident "cbputr.c 1.1 - 89/08/31" */
#include <errno.h>
#include "cbase_.h"
/*man---------------------------------------------------------------------------
NAME
cbputr - put cbase record
SYNOPSIS
#include <cbase.h>
int cbputr(cbp)
cbase_t *cbp;
DESCRIPTION
The cbputr function overwrites the current record of cbase cbp. The
record cursor and all key cursors are positioned to the modified record.
cbputr will fail if one or more of the following is true:
[EINVAL] cbp is not a valid cbase pointer.
[EINVAL] buf is the NULL pointer.
[CBEDUP] A field in the record pointed to by buf contains
an illegal duplicate key.
[CBELOCK] cbp is not write locked.
[CBENOPEN] cbp is not open.
[CBENREC] The record cursor of cbp is null.
SEE ALSO
cbdelcur, cbgetr, cbinscur, cbrcursor.
DIAGNOSTICS
Upon successful completion, a value of 0 is returned. Otherwise, a
value of -1 is returned, and errno set to indicate the error.
------------------------------------------------------------------------------*/
int cbputr(cbp, buf)
cbase_t * cbp;
void * buf;
{
int rs = 0;
errno = 0;
/* validate arguments */
if (!cb_valid(cbp)) {
errno = EINVAL;
return -1;
}
/* check if not open */
if (!(cbp->flags & CBOPEN)) {
errno = CBENOPEN;
return -1;
}
/* check if not write locked */
if (!(cbp->flags & CBWRLCK)) {
errno = CBELOCK;
return -1;
}
/* check if record cursor is null */
if (lscursor(cbp->lsp) == NULL) {
errno = CBENREC;
return -1;
}
/* delete current record */
rs = cbdelcur(cbp);
if (rs == -1) {
CBEPRINT;
return -1;
}
/* back up cursor */
rs = cbrecprev(cbp);
if (rs == -1) {
CBEPRINT;
return -1;
}
/* insert new record */
rs = cbinscur(cbp, buf);
if (rs == -1) {
CBEPRINT;
return -1;
}
errno = 0;
return 0;
}