home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frostbyte's 1980s DOS Shareware Collection
/
floppyshareware.zip
/
floppyshareware
/
DOOG
/
CBASE09.ZIP
/
CBASE.ZIP
/
CBOPS.C
< prev
next >
Wrap
Text File
|
1989-08-31
|
2KB
|
99 lines
/* Copyright (c) 1989 Citadel */
/* All Rights Reserved */
/* #ident "cbops.c 1.1 - 89/08/31" */
#include <blkio.h>
#include <bool.h>
#include <errno.h>
#include "cbase_.h"
/*man---------------------------------------------------------------------------
NAME
cb_fdlvalid - cbase field definition list valid
SYNOPSIS
#include "cbase_.h"
bool cb_fdlvalid(fields, fldcnt, recsize)
cbfield_t fields[];
size_t fldcnt;
size_t recsize;
DESCRIPTION
The cb_fdlvalid function determines if fields points to a valid field
definition list for a record of size recsize. If it is valid, TRUE is
returned. If not, then FALSE is returned.
------------------------------------------------------------------------------*/
bool cb_fdlvalid(fields, fldcnt, recsize)
cbfield_t fields[];
size_t fldcnt;
size_t recsize;
{
int rs = 0;
int i = 0;
/* validate arguments */
if ((fields == NULL) || (recsize < sizeof(bpos_t))
|| (fldcnt < 1) || (fldcnt > CBFIELD_MAX)) {
return FALSE;
}
/* check for field overlap */
for (i = 0; i < fldcnt; i++) {
if (fields[i].size < 1) {
return FALSE;
}
if ((fields[i].type < 1) || (fields[i].type > CBTYPECNT)) {
return FALSE;
}
if (fields[i].flags & CBFKEY) {
if (fields[i].filename[0] == '\0') {
return FALSE;
}
}
if (i < (fldcnt - 1)) {
if ((fields[i].offset + fields[i].size) >
fields[i + 1].offset) {
return FALSE;
}
} else {
if ((fields[i].offset + fields[i].size) > recsize) {
return FALSE;
}
}
}
return TRUE;
}
/*man---------------------------------------------------------------------------
NAME
cb_valid - cbase pointer valid
SYNOPSIS
#include "cbase_.h"
bool cb_valid(cbp)
cbase_t *cbp;
DESCRIPTION
The cb_valid function determines if cbp points to a valid cbase
control structure. If it is valid, TRUE is returned. If not,
then FALSE is returned.
------------------------------------------------------------------------------*/
bool cb_valid(cbp)
cbase_t *cbp;
{
if ((cbp < cbb) || (cbp > (cbb + CBOPEN_MAX - 1))) {
return FALSE;
}
if (((size_t)((char *)cbp - (char *)cbb)) % sizeof(cbb[0]) != 0) {
return FALSE;
}
return TRUE;
}