You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

174 lines
6.5 KiB
C

1 year ago
#ifndef STR_UTIL_INCLUDED
#define STR_UTIL_INCLUDED
/************************************************************************/
/* SISCO SOFTWARE MODULE HEADER *****************************************/
/************************************************************************/
/* (c) Copyright Systems Integration Specialists Company, Inc., */
/* 2000 - 2004 All Rights Reserved */
/* */
/* MODULE NAME : str_util.h */
/* PRODUCT(S) : General Use */
/* */
/* MODULE DESCRIPTION : */
/* General purpose string manipulation functions. */
/* */
/* GLOBAL FUNCTIONS DEFINED IN THIS MODULE : */
/* */
/* MODIFICATION LOG : */
/* Date Who Rev Comments */
/* -------- --- ------ ------------------------------------------- */
/* 07/28/05 DWL 21 Use const ST_CHAR* in asciiTo* functions. */
/* 03/14/05 JRB 20 Add get_next_string. */
/* 12/03/04 JRB 19 Use strcasecmp, strncasecmp if supported. */
/* 07/09/04 JRB 18 Add strncat_safe, strncpy_safe. */
/* 03/08/04 EJV 17 Added getKeywordFromFile function. */
/* 12/12/03 JRB 16 Add LYNX support. */
/* 12/10/03 MDE 15 Added itoa/ltoa/utoa/ultoa replacements */
/* 04/10/03 DSF 14 Added strnstr */
/* 02/20/03 JRB 13 Del PSOS code. */
/* 12/20/02 CRM 12 Added "defined(linux)" for strcmpi, etc. */
/* 02/28/02 EJV 11 Added asciiToFloat, asciiToDouble. */
/* 02/25/02 EJV 10 Replaced ascii_to_ macros with asciiToxxx fun*/
/* Added asciiToUlong, asciiToUint16, */
/* asciiToUint8, asciiToSint, asciiToUint */
/* hex_to_ascii_str: added param hex_no_spaces. */
/* 12/09/01 GLB 05 Added asciiToSlong, asciiToSint16, */
/* asciiToSint8, asciiToUchar */
/* 09/10/01 GLB 08 Added ascii_to_uint & ascii_to_slongint */
/* 08/06/01 GLB 07 Added ascii_to_sint */
/* 06/06/01 GLB 06 Added ascii_to_double & ascii_to_float */
/* 05/21/01 MDE 05 Added bitstring_to_ascii_str */
/* 01/19/01 EJV 04 UNIX: added strcmpi, stricmp, strnicmp protos*/
/* 01/05/01 EJV 03 Corrected ascii_to_ushortint, AIX returned 0.*/
/* ascii_to_ulongint: changed "%ul" to "%lu". */
/* 11/02/00 MDE 02 Added _hex_no_spaces */
/* 02/03/00 JRB 01 Created */
/************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/************************************************************************/
/* <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD>벢Ϊ<EBB2A2><EFBFBD><E4B8B4>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>֧<EFBFBD><D6A7><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD> */
/************************************************************************/
#ifdef _C3X
#define assign_str(dst, src) \
dst = src;
#else
#define assign_str(dst, src) \
if (dst) chk_free(dst); dst = NULL; \
if (src) \
{ \
dst = (ST_CHAR*)chk_calloc(1, strlen(src)+1); \
strcpy(dst, src); \
}
#endif
/************************************************************************/
/* <20>ͷ<EFBFBD><CDB7>ַ<EFBFBD><D6B7><EFBFBD>ָ<EFBFBD>룬C3X ϵͳ<CFB5><CDB3> SCL_INFO <20>е<EFBFBD><D0B5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ͷ<EFBFBD> */
/************************************************************************/
#ifdef _C3X
#define free_str(str) str = NULL;
#else
#define free_str(str) \
if (str != NULL) chk_free(str); \
str = NULL;
#endif
ST_VOID hex_to_ascii_str (
ST_CHAR *astr, /* ascii string */
ST_UCHAR *hstr, /* hex string */
ST_UINT hlen, /* len of hex string */
ST_BOOLEAN hex_no_spaces);
ST_RET ascii_to_hex_str (
ST_UCHAR *hstr, /* hex string */
ST_UINT *hlen_out, /* ptr to hex len to be set */
ST_UINT hlen_max, /* maximum hex len to allow. */
ST_CHAR *astr); /* ascii string */
ST_VOID bitstring_to_ascii_str (ST_CHAR *astr, ST_UCHAR *bstr,
ST_UINT numBits);
ST_RET asciiToSlong (const ST_CHAR *astr,
ST_LONG *sLong);
ST_RET asciiToUlong (const ST_CHAR *astr,
ST_ULONG *uLong);
ST_RET asciiToSint (const ST_CHAR *astr,
ST_INT *sInt);
ST_RET asciiToUint (const ST_CHAR *astr,
ST_UINT *uInt);
ST_RET asciiToSint16 (const ST_CHAR *astr,
ST_INT16 *sInt16);
ST_RET asciiToUint16 (const ST_CHAR *astr,
ST_UINT16 *uInt16);
ST_RET asciiToSint8 (const ST_CHAR *astr,
ST_INT8 *sInt8);
ST_RET asciiToUint8 (const ST_CHAR *astr,
ST_UINT8 *uInt8);
ST_RET asciiToUchar (const ST_CHAR *astr,
ST_UCHAR *uChar);
ST_RET asciiToFloat (const ST_CHAR *astr,
ST_FLOAT *floatNum);
ST_RET asciiToDouble (const ST_CHAR *astr,
ST_DOUBLE *doubleNum);
char *strnstr (char *str1, char *str2, int len);
/* SISCO code calls strcmpi, stricmp, strnicmp (Windows functions). */
/* On systems that support strcasecmp, strncasecmp, remap to use them. */
#if defined(_AIX) || defined(sun) || defined(__alpha) || defined(__hpux) || \
defined(linux)
#ifndef strcmpi
#define strcmpi strcasecmp
#endif
#ifndef stricmp
#define stricmp strcasecmp
#endif
#ifndef strnicmp
#define strnicmp strncasecmp
#endif
#endif /* UNIX-like systems that support strcasecmp, strncasecmp. */
/* On systems that DON'T support strcasecmp, strncasecmp, use SISCO functions. */
#if defined(VXWORKS) || defined(__LYNX)
ST_INT strcmpi (ST_CHAR *,ST_CHAR *);
ST_INT stricmp (ST_CHAR *,ST_CHAR *);
ST_INT strnicmp (ST_CHAR *,ST_CHAR *,ST_INT n);
#endif
ST_VOID strncat_safe (char *dest, char *src, int max_len);
ST_VOID strncpy_safe (char *dest, char *src, int max_len);
ST_CHAR *sInt8ToAscii (ST_INT8 v, ST_CHAR *p);
ST_CHAR *uInt8ToAscii (ST_UINT8 v, ST_CHAR *p);
ST_CHAR *sInt16ToAscii (ST_INT16 v, ST_CHAR *p);
ST_CHAR *uInt16ToAscii (ST_UINT16 v, ST_CHAR *p);
ST_CHAR *sInt32ToAscii (ST_INT32 v, ST_CHAR *p);
ST_CHAR *uInt32ToAscii (ST_UINT32 v, ST_CHAR *p);
ST_CHAR *sIntToAscii (ST_INT v, ST_CHAR *p);
ST_CHAR *uIntToAscii (ST_UINT v, ST_CHAR *p);
ST_CHAR *sLongToAscii (ST_LONG v, ST_CHAR *p);
ST_CHAR *uLongToAscii (ST_ULONG v, ST_CHAR *p);
/* misc functions */
ST_BOOLEAN getKeywordFromFile (ST_CHAR *fileStr, ST_CHAR *keywordStr,
ST_CHAR *valBuf, ST_UINT valBufLen);
ST_CHAR *get_next_string (ST_CHAR **ptrptr, ST_CHAR *delimiters);
#ifdef __cplusplus
}
#endif
#endif /* !STR_UTIL_INCLUDED */