Files
microser/include/mmslite/str_util.h

159 lines
6.4 KiB
C
Raw Normal View History

2025-01-16 16:17:01 +08:00
#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 */
/* -------- --- ------ ------------------------------------------- */
/* 10/29/07 JRB 23 Add strncat_maxstrlen. Del strncat_safe (len */
/* was wrong), use strncat or strncat_maxstrlen.*/
/* 10/11/07 JRB 22 Add asciiToSint32, asciiToUint32 */
/* 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
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 asciiToSint32 (const ST_CHAR *astr, /* ascii string */
ST_INT32 *value); /* ptr to converted value*/
ST_RET asciiToUint32 (const ST_CHAR *astr, /* ascii string */
ST_UINT32 *value); /* ptr to converted value*/
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
/* "strncat_maxstrlen" is like "strncat" but the third arg is the */
/* maximum length of the destination string. */
ST_RET strncat_maxstrlen (char *dest, char *src, size_t maxstrlen);
/* "strncpy_safe" makes sure that the "dest" string is NULL-terminated. */
/* The standard "strncpy" does NOT always NULL-terminate "dest". */
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 */