/******************************************************************************
*
* NSSDC/CDF Validate CDF things.
*
* Version 1.9c, 14-Dec-97, Hughes STX.
*
* Modification history:
*
* V1.0 3-Jun-91, J Love Original version (for CDF V2.1). This is a
* combination of validcdfname.c, validvarname.c,
* validattrname.c, validdatatype.c,
* validattrscope.c, and validencoding.
* V1.1 10-Jun-91, J Love Don't allow blanks in VMS CDF names. Check
* all characters in CDF, attr., and var. names.
* V1.2 28-Jun-91, J Love Housekeeping.
* V1.3 15-Sep-91, J Love Changed for IBM-PC port.
* V1.4 4-Oct-91, J Love Changed for IBM-RS6000 port (and IBM-PC).
* V1.5 23-Mar-92, J Love HP port/CDF V2.2.
* V1.6 5-Oct-92, J Love Added NeXT to `validEncoding' (better late
* than never).
* V1.7 25-Jan-94, J Love CDF V2.4.
* V1.7a 4-Feb-94, J Love DEC Alpha/OpenVMS port.
* V1.8 13-Dec-94, J Love CDF V2.5.
* V1.8a 24-Feb-95, J Love Solaris 2.3 IDL i/f.
* V1.9 27-Aug-96, J Love CDF V2.6.
* V1.9a 21-Feb-97, J Love Removed RICE.
* V1.9b 28-Feb-97, J Love Windows NT for MS Visual C/C++ on an IBM PC.
* V1.9c 14-Dec-97, J Love Added ALPHAVMSi encoding.
*
******************************************************************************/
#include "cdflib.h"
#include "cdflib64.h"
/******************************************************************************
* Validate CDF name.
******************************************************************************/
STATICforIDL Logical ValidCDFname (name)
char *name;
{
size_t len = strlen(name);
int i;
/****************************************************************************
* Length must be at least one.
****************************************************************************/
if (len < 1) return FALSE;
/****************************************************************************
* All characters must be printable.
****************************************************************************/
for (i = 0; i < (int) len; i++) {
if (!Printable((int)name[i])) return FALSE;
}
/****************************************************************************
* Passed all tests - return TRUE.
****************************************************************************/
return TRUE;
}
/******************************************************************************
* Validate variable name.
******************************************************************************/
STATICforIDL Logical ValidVarName (name)
char *name;
{
size_t len; /* length of name */
size_t i;
/****************************************************************************
* Length must be at least one.
****************************************************************************/
len = strlen(name);
if (len < 1) return FALSE; /* length must be at least one */
/****************************************************************************
* All characters must be printable.
****************************************************************************/
for (i = 0; i < len; i++) {
if (!Printable((int)name[i])) return FALSE;
}
/****************************************************************************
* Passed all tests - return TRUE.
****************************************************************************/
return TRUE;
}
/******************************************************************************
* Validate attribute name.
******************************************************************************/
STATICforIDL Logical ValidAttrName (name)
char *name;
{
size_t len; /* length of name */
size_t i;
/****************************************************************************
* Length must be at least one.
****************************************************************************/
len = strlen(name);
if (len < 1) return FALSE; /* length must be at least one */
/****************************************************************************
* All characters must be printable.
****************************************************************************/
for (i = 0; i < len; i++) {
if (!Printable((int)name[i])) return FALSE;
}
/****************************************************************************
* Passed all tests - return TRUE.
****************************************************************************/
return TRUE;
}
/******************************************************************************
* Validate data type.
******************************************************************************/
STATICforIDL Logical ValidDataType (dataType)
Int32 dataType;
{
switch (dataType) {
case CDF_INT1: return TRUE;
case CDF_INT2: return TRUE;
case CDF_INT4: return TRUE;
case CDF_UINT1: return TRUE;
case CDF_UINT2: return TRUE;
case CDF_UINT4: return TRUE;
case CDF_REAL4: return TRUE;
case CDF_REAL8: return TRUE;
case CDF_CHAR: return TRUE;
case CDF_UCHAR: return TRUE;
case CDF_BYTE: return TRUE;
case CDF_FLOAT: return TRUE;
case CDF_DOUBLE: return TRUE;
case CDF_EPOCH: return TRUE;
case CDF_EPOCH16: return TRUE;
}
return FALSE;
}
/******************************************************************************
* Validate attribute scope.
******************************************************************************/
STATICforIDL Logical ValidAttrScope (scope)
Int32 scope;
{
switch (scope) {
case GLOBAL_SCOPE: return TRUE;
case VARIABLE_SCOPE: return TRUE;
}
return FALSE;
}
/******************************************************************************
* Validate encoding.
******************************************************************************/
STATICforIDL Logical ValidEncoding (encoding, actualEncoding)
Int32 encoding;
Int32 *actualEncoding;
{
switch (encoding) {
case HOST_ENCODING:
*actualEncoding = HostEncoding();
break;
case NETWORK_ENCODING:
case SUN_ENCODING:
case VAX_ENCODING:
case DECSTATION_ENCODING:
case SGi_ENCODING:
case IBMPC_ENCODING:
case IBMRS_ENCODING:
case HP_ENCODING:
case NeXT_ENCODING:
case ALPHAOSF1_ENCODING:
case ALPHAVMSd_ENCODING:
case ALPHAVMSg_ENCODING:
case ALPHAVMSi_ENCODING:
case MAC_ENCODING:
*actualEncoding = encoding;
break;
default:
return FALSE;
}
return TRUE;
}
/******************************************************************************
* Validate decoding.
******************************************************************************/
STATICforIDL Logical ValidDecoding (decoding)
Int32 decoding;
{
switch (decoding) {
case HOST_DECODING:
case NETWORK_DECODING:
case SUN_DECODING:
case VAX_DECODING:
case DECSTATION_DECODING:
case SGi_DECODING:
case IBMPC_DECODING:
case IBMRS_DECODING:
case HP_DECODING:
case NeXT_DECODING:
case ALPHAOSF1_DECODING:
case ALPHAVMSd_DECODING:
case ALPHAVMSg_DECODING:
case ALPHAVMSi_DECODING:
case MAC_DECODING:
return TRUE;
default:
return FALSE;
}
}
/******************************************************************************
* ValidateCompression.
******************************************************************************/
#if defined(BORLANDC)
#pragma warn -par
#endif
STATICforIDL CDFstatus ValidateCompression (cType, cParms)
long cType;
long *cParms;
{
switch (cType) {
case NO_COMPRESSION:
break;
#if SUPPORT_RLE
case RLE_COMPRESSION:
if (cParms[0] != RLE_OF_ZEROs) return BAD_COMPRESSION_PARM;
break;
#endif
#if SUPPORT_HUFF
case HUFF_COMPRESSION:
if (cParms[0] != OPTIMAL_ENCODING_TREES) return BAD_COMPRESSION_PARM;
break;
#endif
#if SUPPORT_AHUFF
case AHUFF_COMPRESSION:
if (cParms[0] != OPTIMAL_ENCODING_TREES) return BAD_COMPRESSION_PARM;
break;
#endif
#if SUPPORT_GZIP
case GZIP_COMPRESSION:
if (!INCLUSIVE(1,cParms[0],9)) return BAD_COMPRESSION_PARM;
break;
#endif
#if SUPPORT_ZLIB
case ZLIB_COMPRESSION:
if (cParms[0] != ZLIB_OF_ZEROs) return BAD_COMPRESSION_PARM;
break;
#endif
default:
return UNKNOWN_COMPRESSION;
}
return CDF_OK;
}
/******************************************************************************
* ValidateCompression64.
******************************************************************************/
#if defined(BORLANDC)
#pragma warn -par
#endif
STATICforIDL CDFstatus ValidateCompression64 (cType, cParms)
long cType;
long *cParms;
{
switch (cType) {
case NO_COMPRESSION:
break;
#if SUPPORT_RLE64
case RLE_COMPRESSION:
if (cParms[0] != RLE_OF_ZEROs) return BAD_COMPRESSION_PARM;
break;
#endif
#if SUPPORT_HUFF64
case HUFF_COMPRESSION:
if (cParms[0] != OPTIMAL_ENCODING_TREES) return BAD_COMPRESSION_PARM;
break;
#endif
#if SUPPORT_AHUFF64
case AHUFF_COMPRESSION:
if (cParms[0] != OPTIMAL_ENCODING_TREES) return BAD_COMPRESSION_PARM;
break;
#endif
#if SUPPORT_GZIP64
case GZIP_COMPRESSION:
if (!INCLUSIVE(1,cParms[0],9)) return BAD_COMPRESSION_PARM;
break;
#endif
#if SUPPORT_ZLIB64
case ZLIB_COMPRESSION:
if (cParms[0] != ZLIB_OF_ZEROs) return BAD_COMPRESSION_PARM;
break;
#endif
default:
return UNKNOWN_COMPRESSION;
}
return CDF_OK;
}
syntax highlighted by Code2HTML, v. 0.9.1