reman3/Rayman_X/cpa/tempgrp/PTC/Misc/StrLib.h

136 lines
3.2 KiB
C

#if !defined(__STRLIB_H__)
#define __STRLIB_H__
#include "acp_base.h"
#if defined(USE_STDSTRLIB)
#include <string.h>
#define StringCopy strcpy
#define StringLength strlen
#define StringCat strcat
#define StringNCopy strncpy
#define StringRChar strrchr
#define StringChar strchr
#define StringCompare strcmp
#define StringICompare stricmp
#define StringNICompare strnicmp
#define StringNCompare strncmp
#define StringString strstr
#define StringUpper strupr
#define StringLower strlwr
#if defined(USE_CRYPTNAME)
#define StringCompareToCryptKey strcmp
#else
#define StringCompareToCryptKey strcmp
#endif
#elif defined(INLINE_STDSTRLIB)
INLINE
const char * __cdecl StringCopy(const char * dst,const char * src)
{
const char *savedst=dst;
while( (*(unsigned char *)dst++=*(unsigned char *)src++) );
return(savedst);
}
INLINE
int __cdecl StringCompare(const char * src,const char * dst)
{
int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;
if ( ret < 0 ) ret = -1 ;
else if ( ret > 0 ) ret = 1 ;
return( ret );
}
INLINE
int __cdecl StringICompare(const char * dst, const char * src)
{
int f,l;
do
{
if ( ((f = (unsigned char)(*(dst++))) >= 'A') && (f <= 'Z') )
f -= ('A' - 'a');
if ( ((l = (unsigned char)(*(src++))) >= 'A') && (l <= 'Z') )
l -= ('A' - 'a');
}
while ( f && (f == l) );
return(f - l);
}
#if defined(USE_CRYPTNAME)
INLINE
int __cdecl StringCompareToCryptKey(const char * src,const char * dst)
{
int ret = 0 ;
long lKey = *(long*)(dst);
unsigned char *p_ucCryptKey = (unsigned char*) &lKey;
unsigned char ucSize = (unsigned char)dst [4];
unsigned char ucIndex;
unsigned char ucUncoded;
dst += 5;
for (ucIndex = 0 ; ucIndex < ucSize ; ucIndex++)
{
// uncode dst char
ucUncoded = (*(unsigned char *)dst++ - p_ucCryptKey[0]) ^ p_ucCryptKey[1];
p_ucCryptKey[0] += p_ucCryptKey[2];
p_ucCryptKey[1] += p_ucCryptKey[3];
// compare
ret = *(unsigned char *)src++ - ucUncoded;
if(ret) break;
}
if ( ret < 0 ) ret = -1 ;
else if ( ret > 0 ) ret = 1 ;
return( ret );
}
#else
#define StringCompareToCryptKey StringCompare
#endif
#else
#include "deflib.h"
#if defined(__cplusplus)
extern "C" {
#endif
char *StringCopy(char *StrDestination,const char *StrSource);
size_t StringLength(const char *String);
char *StringCat(char *StrDestination,const char *StrSource);
char *StringNCopy(char *StrDestination,const char *StrSource,size_t count);
char *StringRChar(const char *String,int c);
char *StringChar(const char *String,int c);
int StringNICompare(const char *String1,const char *String2,size_t count);
int StringNCompare(const char *String1,const char *String2,size_t count);
int StringICompare(const char *String1,const char *String2);
int StringCompare(const char *String1,const char *String2);
char *StringString(const char *string,const char *strCharSet);
char *StringUpper(char *string);
char *StringLower(char *string);
#if defined(USE_CRYPTNAME)
int StringCompareToCryptKey(const char *String1,const char *String2);
#else
#define StringCompareToCryptKey strcmp
#endif
#if defined(__cplusplus)
}
#endif
#endif // USE_STDSTRLIB
#endif // __STRLIB_H__