/*
* Copyright (C) 1995-1997 Christopher D. Granz
*
* This header may not be removed.
*
* Refer to the file "License" included in this package for further
* information and before using any of the following.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "sapphire.h"
/*
* Functions
*/
/*
* Return TRUE if argument is completely numeric.
*/
bool is_number( char *pArg )
{
if ( *pArg == '\0' )
return ( FALSE );
if ( *pArg == '+' || *pArg == '-' )
pArg++;
for ( ; *pArg != '\0'; pArg++ )
{
if ( isdigit( *pArg ) == 0 )
return ( FALSE );
}
return ( TRUE );
}
/*
* Compare strings, case-insensitive. Returns FALSE if strings
* are different.
*/
bool str_compare( char *pStrA, char *pStrB )
{
for ( ; *pStrA || *pStrB; pStrA++, pStrB++ )
{
if ( LOWER( *pStrA ) != LOWER( *pStrB ) )
return ( FALSE );
}
return ( TRUE );
}
/*
* Compares pStrA to list of words (pStrB) seperated by spaces.
*/
bool multi_compare( char *pStrA, char *pStrB )
{
char cBuf[MAX_INPUT];
while ( *pStrB != '\0' )
{
pStrB = one_arg( pStrB, cBuf );
if ( str_compare( pStrA, cBuf ) == TRUE )
return ( TRUE );
}
return ( FALSE );
}
/*
* Compares pStrA to an array of strings (pStrs).
*/
bool multi_compare_2( char *pStrA, string *pStrs )
{
int i;
for ( i = 0; pStrs[i] != NULL; i++ )
{
if ( str_compare( pStrA, pStrs[i] ) == TRUE )
return ( TRUE );
}
return ( FALSE );
}
/*
* Compare strings, case insensitive, for prefix matching.
* Returns FALSE if pStrA is not a prefix of pStrB.
*/
bool str_prefix( char *pStrA, char *pStrB )
{
for ( ; *pStrA; pStrA++, pStrB++ )
{
if ( LOWER( *pStrA ) != LOWER( *pStrB ) )
return ( FALSE );
}
return ( TRUE );
}
/*
* Compare strings, case insensitive, for match anywhere.
* Returns FALSE if pStrA is not a part of pStrB.
*/
bool str_infix( char *pStrA, char *pStrB )
{
int iSStr1;
int iSStr2;
int iChar;
char c;
if ( ( c = LOWER( pStrA[0] ) ) == '\0' )
return ( TRUE );
iSStr1 = strlen( pStrA );
iSStr2 = strlen( pStrB );
for ( iChar = 0; iChar <= iSStr2 - iSStr1; iChar++ )
{
if ( c == LOWER( pStrB[iChar] )
&& str_prefix( pStrA, pStrB + iChar ) == TRUE )
return ( TRUE );
}
return ( FALSE );
}
/*
* Compare strings, case insensitive, for suffix matching.
* Returns FALSE if pStrA not a suffix of pStrB.
*/
bool str_suffix( char *pStrA, char *pStrB )
{
int iSStr1;
int iSStr2;
iSStr1 = strlen( pStrA );
iSStr2 = strlen( pStrB );
if ( iSStr1 <= iSStr2
&& str_compare( pStrA, pStrB + iSStr2 - iSStr1 ) == TRUE )
return ( TRUE );
else
return ( FALSE );
}
/*
* End of compare.c
*/