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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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 */