gwenhywfar  4.6.0beta
Macros | Functions
text.h File Reference
#include <gwenhywfar/gwenhywfarapi.h>
#include <gwenhywfar/types.h>
#include <gwenhywfar/logger.h>
#include <gwenhywfar/buffer.h>
#include <stdio.h>

Go to the source code of this file.

Macros

#define GWEN_TEXT_FLAGS_CHECK_BACKSLASH   0x00000040
 
#define GWEN_TEXT_FLAGS_DEL_LEADING_BLANKS   0x00000001
 
#define GWEN_TEXT_FLAGS_DEL_MULTIPLE_BLANKS   0x00000004
 
#define GWEN_TEXT_FLAGS_DEL_QUOTES   0x00000020
 
#define GWEN_TEXT_FLAGS_DEL_TRAILING_BLANKS   0x00000002
 
#define GWEN_TEXT_FLAGS_NEED_DELIMITER   0x00000008
 
#define GWEN_TEXT_FLAGS_NULL_IS_DELIMITER   0x00000010
 
#define GWEN_TEXT_FUZZY_SHIFT   10
 

Functions

GWENHYWFAR_API double GWEN_Text_CheckSimilarity (const char *s1, const char *s2, int ign)
 
GWENHYWFAR_API int GWEN_Text_Compare (const char *s1, const char *s2, int ign)
 
GWENHYWFAR_API int GWEN_Text_ComparePattern (const char *w, const char *p, int sensecase)
 
GWENHYWFAR_API void GWEN_Text_CondenseBuffer (GWEN_BUFFER *buf)
 
GWENHYWFAR_API int GWEN_Text_ConvertCharset (const char *fromCharset, const char *toCharset, const char *text, int len, GWEN_BUFFER *tbuf)
 
GWENHYWFAR_API int GWEN_Text_CountUtf8Chars (const char *s, int len)
 
GWENHYWFAR_API int GWEN_Text_DoubleToBuffer (double num, GWEN_BUFFER *buf)
 
GWENHYWFAR_API void GWEN_Text_DumpString (const char *s, unsigned int l, unsigned int insert)
 
GWENHYWFAR_API void GWEN_Text_DumpString2Buffer (const char *s, unsigned int l, GWEN_BUFFER *mbuf, unsigned int insert)
 
GWENHYWFAR_API char * GWEN_Text_Escape (const char *src, char *buffer, unsigned int maxsize)
 
GWENHYWFAR_API int GWEN_Text_EscapeToBuffer (const char *src, GWEN_BUFFER *buf)
 
GWENHYWFAR_API int GWEN_Text_EscapeToBufferTolerant (const char *src, GWEN_BUFFER *buf)
 
GWENHYWFAR_API int GWEN_Text_EscapeToBufferTolerant2 (GWEN_BUFFER *src, GWEN_BUFFER *buf)
 
GWENHYWFAR_API char * GWEN_Text_EscapeTolerant (const char *src, char *buffer, unsigned int maxsize)
 
GWENHYWFAR_API int GWEN_Text_EscapeXmlToBuffer (const char *src, GWEN_BUFFER *buf)
 
GWENHYWFAR_API int GWEN_Text_FromBcdBuffer (const char *src, GWEN_BUFFER *buf)
 
GWENHYWFAR_API int GWEN_Text_FromHex (const char *src, char *buffer, unsigned maxsize)
 
GWENHYWFAR_API int GWEN_Text_FromHexBuffer (const char *src, GWEN_BUFFER *buf)
 
GWENHYWFAR_API char * GWEN_Text_GetWord (const char *src, const char *delims, char *buffer, unsigned int maxsize, uint32_t flags, const char **next)
 
GWENHYWFAR_API int GWEN_Text_GetWordToBuffer (const char *src, const char *delims, GWEN_BUFFER *buf, uint32_t flags, const char **next)
 
GWENHYWFAR_API void GWEN_Text_LogString (const char *s, unsigned int l, const char *logDomain, GWEN_LOGGER_LEVEL lv)
 
GWENHYWFAR_API int GWEN_Text_NumToString (int num, char *buffer, unsigned int bufsize, int fillchar)
 
GWENHYWFAR_API const char * GWEN_Text_StrCaseStr (const char *haystack, const char *needle)
 
GWENHYWFAR_API int GWEN_Text_StringToDouble (const char *s, double *num)
 
GWENHYWFAR_API int GWEN_Text_ToBcdBuffer (const char *src, unsigned l, GWEN_BUFFER *buf, unsigned int groupsize, char delimiter, int skipLeadingZeroes)
 
GWENHYWFAR_API char * GWEN_Text_ToHex (const char *src, unsigned l, char *buffer, unsigned int maxsize)
 
GWENHYWFAR_API int GWEN_Text_ToHexBuffer (const char *src, unsigned l, GWEN_BUFFER *buf, unsigned int groupsize, char delimiter, int skipLeadingZeroes)
 
GWENHYWFAR_API char * GWEN_Text_ToHexGrouped (const char *src, unsigned l, char *buffer, unsigned maxsize, unsigned int groupsize, char delimiter, int skipLeadingZeros)
 
GWENHYWFAR_API char * GWEN_Text_Unescape (const char *src, char *buffer, unsigned int maxsize)
 
GWENHYWFAR_API char * GWEN_Text_UnescapeN (const char *src, unsigned int srclen, char *buffer, unsigned int maxsize)
 
GWENHYWFAR_API int GWEN_Text_UnescapeToBuffer (const char *src, GWEN_BUFFER *buf)
 
GWENHYWFAR_API int GWEN_Text_UnescapeToBufferTolerant (const char *src, GWEN_BUFFER *buf)
 
GWENHYWFAR_API char * GWEN_Text_UnescapeTolerant (const char *src, char *buffer, unsigned int maxsize)
 
GWENHYWFAR_API char * GWEN_Text_UnescapeTolerantN (const char *src, unsigned int srclen, char *buffer, unsigned int maxsize)
 
GWENHYWFAR_API int GWEN_Text_UnescapeXmlToBuffer (const char *src, GWEN_BUFFER *buf)
 

Macro Definition Documentation

#define GWEN_TEXT_FLAGS_CHECK_BACKSLASH   0x00000040

Definition at line 50 of file text.h.

Referenced by GWEN_Text_GetWord(), and GWEN_Text_GetWordToBuffer().

#define GWEN_TEXT_FLAGS_DEL_LEADING_BLANKS   0x00000001

Definition at line 44 of file text.h.

Referenced by GWEN_Text_GetWord(), and GWEN_Text_GetWordToBuffer().

#define GWEN_TEXT_FLAGS_DEL_MULTIPLE_BLANKS   0x00000004

Definition at line 46 of file text.h.

Referenced by GWEN_Text_GetWord(), and GWEN_Text_GetWordToBuffer().

#define GWEN_TEXT_FLAGS_DEL_QUOTES   0x00000020

Definition at line 49 of file text.h.

Referenced by GWEN_Text_GetWord(), and GWEN_Text_GetWordToBuffer().

#define GWEN_TEXT_FLAGS_DEL_TRAILING_BLANKS   0x00000002

Definition at line 45 of file text.h.

Referenced by GWEN_Text_GetWord(), and GWEN_Text_GetWordToBuffer().

#define GWEN_TEXT_FLAGS_NEED_DELIMITER   0x00000008

Definition at line 47 of file text.h.

Referenced by GWEN_Text_GetWord(), and GWEN_Text_GetWordToBuffer().

#define GWEN_TEXT_FLAGS_NULL_IS_DELIMITER   0x00000010

Definition at line 48 of file text.h.

Referenced by GWEN_Text_GetWord(), and GWEN_Text_GetWordToBuffer().

#define GWEN_TEXT_FUZZY_SHIFT   10

Definition at line 41 of file text.h.

Function Documentation

GWENHYWFAR_API double GWEN_Text_CheckSimilarity ( const char *  s1,
const char *  s2,
int  ign 
)

Compares two strings and returns the percentage of their equality. It is calculated by this formula: matches*100 / ((length of s1)+(length of s2)) Each match is weight like this:

  • *s1==*s2: 2
  • toupper(*s1)==toupper(*s2): 2 if ign, 1 otherwise
  • isalnum(*s1)==isalnum(*s2): 1
Returns
percentage of equality between both strings
Parameters
s11st of two strings to compare
s22nd of two strings to compare
ignif !=0 then the cases are ignored

Definition at line 1739 of file text.c.

References GWEN_Text__CheckSimilarity().

GWENHYWFAR_API int GWEN_Text_Compare ( const char *  s1,
const char *  s2,
int  ign 
)

Compares two strings. If either of them is given but empty, that string will be treaten as not given. This way a string NOT given equals a string which is given but empty.

Parameters
ignset to !=0 to ignore cases

Definition at line 1030 of file text.c.

GWENHYWFAR_API int GWEN_Text_ComparePattern ( const char *  w,
const char *  p,
int  sensecase 
)

This function compares two string and returns the number of matches or -1 on error.

Parameters
wstring to compare
ppattern to compare against
sensecaseif 0 then cases are ignored

Definition at line 1173 of file text.c.

References GWEN_Text__cmpSegment(), and GWEN_Text__findSegment().

Referenced by GWEN_DB_FindFirstGroup(), GWEN_DB_FindFirstVar(), GWEN_DB_FindNextGroup(), GWEN_DB_FindNextVar(), GWEN_Directory_GetAllEntries(), GWEN_Directory_GetDirEntries(), GWEN_Directory_GetFileEntries(), GWEN_Directory_GetFileEntriesWithType(), GWEN_Directory_GetMatchingFilesRecursively(), GWEN_SyncIo_Http_ParseHeader(), GWEN_SyncIo_Http_WriteHeader(), and GWEN_XMLNode_FindTag().

GWENHYWFAR_API void GWEN_Text_CondenseBuffer ( GWEN_BUFFER buf)

Condenses a buffer containing chars. This means removing unnecessary spaces.

Definition at line 1577 of file text.c.

References GWEN_Buffer_Crop(), GWEN_Buffer_GetStart(), and GWEN_Buffer_GetUsedBytes().

GWENHYWFAR_API int GWEN_Text_ConvertCharset ( const char *  fromCharset,
const char *  toCharset,
const char *  text,
int  len,
GWEN_BUFFER tbuf 
)

This function converts a given text from one charset to another one. Currently, iconv is used for this conversion.

Parameters
fromCharsetcharset of the source text
toCharsetcharset of the source text
texttext to convert
lenlength of the text (excluding trailing 0)
tbufdestination buffer for the converted text

Definition at line 1964 of file text.c.

References DBG_DEBUG, DBG_ERROR, DBG_INFO, GWEN_Buffer_AppendBytes(), GWEN_ERROR_GENERIC, GWEN_LOGDOMAIN, and ICONV_CONST.

GWENHYWFAR_API int GWEN_Text_CountUtf8Chars ( const char *  s,
int  len 
)

This function counts the number of characters in the given UTF-8 buffer.

Parameters
spointer to a buffer which contains UTF-8 characters
lennumber of bytes (if 0 then all bytes up to a zero byte are counted)

Definition at line 1751 of file text.c.

References DBG_ERROR, and GWEN_LOGDOMAIN.

GWENHYWFAR_API int GWEN_Text_DoubleToBuffer ( double  num,
GWEN_BUFFER buf 
)

This functions transforms a string into a double float value. It always uses a comma (",") regardless of the current locale settings. This makes sure that a value can always be parsed regardless of the country settings of the producer of that string.

Definition at line 1619 of file text.c.

References GWEN_Buffer_AppendString(), and NULL.

GWENHYWFAR_API void GWEN_Text_DumpString ( const char *  s,
unsigned int  l,
unsigned int  insert 
)

This is used for debugging purposes and it shows the given data as a classical hexdump.

Definition at line 1246 of file text.c.

Referenced by GWEN_Buffer_Dump(), GWEN_MsgEngine_ReadMessage(), GWEN_SyncIo_Socket_Read(), GWEN_SyncIo_Socket_Write(), GWEN_SyncIo_Tls_Read(), and GWEN_SyncIo_Tls_Write().

GWENHYWFAR_API void GWEN_Text_DumpString2Buffer ( const char *  s,
unsigned int  l,
GWEN_BUFFER mbuf,
unsigned int  insert 
)

Definition at line 1286 of file text.c.

References GWEN_Buffer_AppendByte(), and GWEN_Buffer_AppendString().

Referenced by GWEN_Text_LogString().

GWENHYWFAR_API char* GWEN_Text_Escape ( const char *  src,
char *  buffer,
unsigned int  maxsize 
)

This function does escaping like it is used for HTTP URL encoding. All characters which are not alphanumeric are escaped by XX where XX ist the hexadecimal code of the character.

Definition at line 320 of file text.c.

References DBG_ERROR, and GWEN_LOGDOMAIN.

GWENHYWFAR_API int GWEN_Text_EscapeToBuffer ( const char *  src,
GWEN_BUFFER buf 
)
GWENHYWFAR_API int GWEN_Text_EscapeToBufferTolerant ( const char *  src,
GWEN_BUFFER buf 
)

Does the same as GWEN_Text_EscapeToBuffer does, but this version here does not escape some characters generally accepted within strings (such as space, comma, decimal point etc).

Definition at line 1430 of file text.c.

References GWEN_Buffer_AppendByte().

Referenced by GWEN_DB_WriteGroupToIoLayer(), GWEN_Gui_Internal_GetPassword(), GWEN_PasswordStore__GetPassword(), GWEN_PasswordStore__SetPassword(), GWEN_Path_Handle(), and GWEN_Path_HandleWithIdx().

GWENHYWFAR_API int GWEN_Text_EscapeToBufferTolerant2 ( GWEN_BUFFER src,
GWEN_BUFFER buf 
)
GWENHYWFAR_API char* GWEN_Text_EscapeTolerant ( const char *  src,
char *  buffer,
unsigned int  maxsize 
)

Definition at line 370 of file text.c.

References DBG_ERROR, and GWEN_LOGDOMAIN.

GWENHYWFAR_API int GWEN_Text_EscapeXmlToBuffer ( const char *  src,
GWEN_BUFFER buf 
)

Replaces special characters which are used by XML (like "<", "&" etc) by known sequences (like "&amp;").

Definition at line 1928 of file text.c.

References GWEN_TEXT_ESCAPE_ENTRY::character, GWEN_Buffer_AppendByte(), GWEN_Buffer_AppendString(), gwen_text__xml_escape_chars, and GWEN_TEXT_ESCAPE_ENTRY::replace.

Referenced by GWEN_DlgProgress_AddLogText().

GWENHYWFAR_API int GWEN_Text_FromBcdBuffer ( const char *  src,
GWEN_BUFFER buf 
)

Reads bcd bytes and stores them in the given buffer.

Definition at line 911 of file text.c.

References DBG_ERROR, GWEN_Buffer_AppendByte(), and GWEN_LOGDOMAIN.

GWENHYWFAR_API int GWEN_Text_FromHex ( const char *  src,
char *  buffer,
unsigned  maxsize 
)

Definition at line 818 of file text.c.

References DBG_ERROR, and GWEN_LOGDOMAIN.

GWENHYWFAR_API int GWEN_Text_FromHexBuffer ( const char *  src,
GWEN_BUFFER buf 
)

Reads hex bytes and stores them in the given buffer.

Definition at line 867 of file text.c.

References DBG_ERROR, GWEN_Buffer_AppendByte(), and GWEN_LOGDOMAIN.

Referenced by GWEN_DB__ReadValues(), and GWEN_MsgEngine__GetInline().

GWENHYWFAR_API char* GWEN_Text_GetWord ( const char *  src,
const char *  delims,
char *  buffer,
unsigned int  maxsize,
uint32_t  flags,
const char **  next 
)

This function cuts out a word from a given string.

Returns
address of the new word, 0 on error
Parameters
srcpointer to the beginning of the source string
delimspointer to a string containing all delimiters
bufferpointer to the destination buffer
maxsizelength of the buffer. Actually up to this number of characters are copied to the buffer. If after this number of chars no delimiter follows the string will be terminated. You will have to check whether there is a delimiter directly after the copied string
flagsdefines how the source string is to be processed
nextpointer to a pointer to receive the address up to which the source string has been handled. You can use this to continue with the source string behind the word we've just cut out. This variable is only modified upon successfull return

Definition at line 73 of file text.c.

References DBG_DEBUG, DBG_ERROR, GWEN_LOGDOMAIN, GWEN_TEXT_FLAGS_CHECK_BACKSLASH, GWEN_TEXT_FLAGS_DEL_LEADING_BLANKS, GWEN_TEXT_FLAGS_DEL_MULTIPLE_BLANKS, GWEN_TEXT_FLAGS_DEL_QUOTES, GWEN_TEXT_FLAGS_DEL_TRAILING_BLANKS, GWEN_TEXT_FLAGS_NEED_DELIMITER, and GWEN_TEXT_FLAGS_NULL_IS_DELIMITER.

GWENHYWFAR_API int GWEN_Text_GetWordToBuffer ( const char *  src,
const char *  delims,
GWEN_BUFFER buf,
uint32_t  flags,
const char **  next 
)
GWENHYWFAR_API void GWEN_Text_LogString ( const char *  s,
unsigned int  l,
const char *  logDomain,
GWEN_LOGGER_LEVEL  lv 
)
GWENHYWFAR_API int GWEN_Text_NumToString ( int  num,
char *  buffer,
unsigned int  bufsize,
int  fillchar 
)
Returns
number of bytes in the buffer (-1 on error)
Parameters
fillcharif 0 then no filling takes place, positive values extend to the right, negative values to the left.

Definition at line 1207 of file text.c.

References DBG_ERROR, and GWEN_LOGDOMAIN.

Referenced by GWEN_DB_WriteGroupToIoLayer(), GWEN_MsgEngine__TransformValue(), and GWEN_MsgEngine__WriteElement().

GWENHYWFAR_API const char* GWEN_Text_StrCaseStr ( const char *  haystack,
const char *  needle 
)

This function provides the functionality of strcasestr() which is not available on some systems.

Definition at line 1051 of file text.c.

References NULL.

GWENHYWFAR_API int GWEN_Text_StringToDouble ( const char *  s,
double *  num 
)

This functions transforms a double float value into a string. It always uses a comma (",") regardless of the current locale settings. This makes sure that a value can always be parsed regardless of the country settings of the producer of that string.

Definition at line 1643 of file text.c.

References NULL.

GWENHYWFAR_API int GWEN_Text_ToBcdBuffer ( const char *  src,
unsigned  l,
GWEN_BUFFER buf,
unsigned int  groupsize,
char  delimiter,
int  skipLeadingZeroes 
)

Writes the given BCD data as a hex string to the destination buffer.

Parameters
groupsizeif !=0 then after this many characters in the destination buffer the delimiter is inserted
delimitercharacter to write after groupsize characters
skipLeadingZeroesif !=0 then leading zeroes are suppressed

Definition at line 956 of file text.c.

References DBG_INFO, GWEN_Buffer_AppendByte(), and GWEN_LOGDOMAIN.

GWENHYWFAR_API char* GWEN_Text_ToHex ( const char *  src,
unsigned  l,
char *  buffer,
unsigned int  maxsize 
)

Definition at line 622 of file text.c.

References DBG_ERROR, and GWEN_LOGDOMAIN.

Referenced by GWEN_DB_Dump(), and GWEN_DB_WriteGroupToIoLayer().

GWENHYWFAR_API int GWEN_Text_ToHexBuffer ( const char *  src,
unsigned  l,
GWEN_BUFFER buf,
unsigned int  groupsize,
char  delimiter,
int  skipLeadingZeroes 
)

Writes the given binary data as a hex string to the destination buffer.

Parameters
groupsizeif !=0 then after this many characters in the destination buffer the delimiter is inserted
delimitercharacter to write after groupsize characters
skipLeadingZeroesif !=0 then leading zeroes are suppressed

Definition at line 740 of file text.c.

References DBG_INFO, GWEN_Buffer_AppendByte(), and GWEN_LOGDOMAIN.

Referenced by GWEN_Gui__HashPair(), GWEN_Gui_CGui__HashPair(), GWEN_MDigest__HashFile(), and GWEN_SyncIo_Tls_GetPeerCert().

GWENHYWFAR_API char* GWEN_Text_ToHexGrouped ( const char *  src,
unsigned  l,
char *  buffer,
unsigned  maxsize,
unsigned int  groupsize,
char  delimiter,
int  skipLeadingZeros 
)

Converts a string to Hex. After "groupsize" bytes the "delimiter" is inserted.

Definition at line 655 of file text.c.

References DBG_ERROR, and GWEN_LOGDOMAIN.

GWENHYWFAR_API char* GWEN_Text_Unescape ( const char *  src,
char *  buffer,
unsigned int  maxsize 
)

Definition at line 510 of file text.c.

References GWEN_Text_UnescapeN().

GWENHYWFAR_API char* GWEN_Text_UnescapeN ( const char *  src,
unsigned int  srclen,
char *  buffer,
unsigned int  maxsize 
)

Definition at line 427 of file text.c.

References DBG_ERROR, and GWEN_LOGDOMAIN.

Referenced by GWEN_Text_Unescape().

GWENHYWFAR_API int GWEN_Text_UnescapeToBuffer ( const char *  src,
GWEN_BUFFER buf 
)

Definition at line 1371 of file text.c.

References DBG_ERROR, GWEN_Buffer_AppendByte(), and GWEN_LOGDOMAIN.

Referenced by GWEN_Path_Handle(), and GWEN_Path_HandleWithIdx().

GWENHYWFAR_API int GWEN_Text_UnescapeToBufferTolerant ( const char *  src,
GWEN_BUFFER buf 
)

This function does the same as GWEN_Text_UnescapeToBuffer but it doesn't complain about unescaped characters in the source string.

Definition at line 1473 of file text.c.

References GWEN_Buffer_AppendByte().

Referenced by GWEN_PasswordStore_EncryptWriteFile(), GWEN_PasswordStore_ReadDecryptFile(), GWEN_Path_Handle(), and GWEN_Path_HandleWithIdx().

GWENHYWFAR_API char* GWEN_Text_UnescapeTolerant ( const char *  src,
char *  buffer,
unsigned int  maxsize 
)

Definition at line 611 of file text.c.

References GWEN_Text_UnescapeTolerantN().

GWENHYWFAR_API char* GWEN_Text_UnescapeTolerantN ( const char *  src,
unsigned int  srclen,
char *  buffer,
unsigned int  maxsize 
)

Definition at line 521 of file text.c.

References DBG_ERROR, and GWEN_LOGDOMAIN.

Referenced by GWEN_Text_UnescapeTolerant().

GWENHYWFAR_API int GWEN_Text_UnescapeXmlToBuffer ( const char *  src,
GWEN_BUFFER buf 
)