version 1.1, 2010/03/22 18:25:07
|
version 1.2, 2010/04/16 13:25:27
|
Line 0
|
Line 1
|
|
/************************************************************************* |
|
* (C) 2008 AITNET ltd - Sofia/Bulgaria - <misho@aitbg.com> |
|
* by Michael Pounov <misho@openbsd-bg.org> |
|
* |
|
* $Author$ |
|
* $Id$ |
|
* |
|
*************************************************************************/ |
|
#include "global.h" |
|
#include "aitio.h" |
|
|
|
|
|
/* |
|
* io_LTrimStr() Remove left whitespaces from text string |
|
* @psLine = Text string |
|
* return: 0 nothing to do; !=0 Removed bytes |
|
*/ |
|
inline int io_LTrimStr(u_char *psLine) |
|
{ |
|
int pos = 0; |
|
u_char *s; |
|
|
|
if (!psLine || !*psLine) |
|
return 0; |
|
|
|
for (s = psLine; isspace(*s); s++); |
|
pos = s - psLine; |
|
|
|
memmove(psLine, s, (strlen((char*) psLine) - pos) + 1); |
|
return pos; |
|
} |
|
|
|
/* |
|
* io_RTrimStr() Remove right whitespaces from text string |
|
* @psLine = Text string |
|
* return: 0 nothing to do; !=0 Removed bytes |
|
*/ |
|
inline int io_RTrimStr(u_char *psLine) |
|
{ |
|
u_char *t, *pos; |
|
|
|
if (!psLine || !*psLine) |
|
return 0; |
|
|
|
pos = psLine + strlen((char*) psLine); |
|
for (t = pos - 1; t > psLine && isspace(*t); t--); |
|
*++t = 0; |
|
|
|
return pos - t; |
|
} |
|
|
|
/* |
|
* io_TrimStr() Remove left and right whitespaces from text string |
|
* @psLine = Text string |
|
* return: 0 nothing to do; !=0 Removed bytes |
|
*/ |
|
inline int io_TrimStr(u_char *psLine) |
|
{ |
|
int ret = 0; |
|
|
|
ret = io_LTrimStr(psLine); |
|
ret += io_RTrimStr(psLine); |
|
|
|
return ret; |
|
} |
|
|
|
/* |
|
* io_UnquotStr() Remove quots from input text string |
|
* @psLine = Text string |
|
* return: 0 nothing to do; 1 successful unquoted string |
|
*/ |
|
inline int io_UnquotStr(u_char *psLine) |
|
{ |
|
char *pos, *str = NULL; |
|
int flg; |
|
|
|
if (!psLine) |
|
return 0; |
|
|
|
switch (*psLine) { |
|
case '`': |
|
case '"': |
|
case '\'': |
|
str = strdup((char*) psLine + 1); |
|
for (pos = str, flg = 0; *pos; flg = ('\\' == *pos), pos++) { |
|
if (!flg && *pos == *psLine) { |
|
*pos = 0; |
|
strlcpy((char*) psLine, str, strlen((char*) psLine) + 1); |
|
break; |
|
} |
|
} |
|
free(str); |
|
return 1; |
|
} |
|
|
|
return 0; |
|
} |
|
|
|
/* |
|
* io_Char2Hex() Convert from Char string to Hex string |
|
* @psLine = Text string |
|
* @lineLen = Length of Text string |
|
* return: NULL nothing to do or error; !=0 Allocated new converted string(must be free) |
|
*/ |
|
inline char *io_Char2Hex(u_char *psLine, int lineLen) |
|
{ |
|
register int i; |
|
char szWork[3], *str; |
|
|
|
if (!psLine || !*psLine || !lineLen) |
|
return NULL; |
|
|
|
str = malloc(lineLen * 2 + 1); |
|
if (!str) { |
|
LOGERR; |
|
return NULL; |
|
} else |
|
memset(str, 0, lineLen * 2 + 1); |
|
|
|
for (i = 0; i < lineLen && psLine[i]; i++) { |
|
memset(szWork, 0, 3); |
|
snprintf(szWork, 3, "%02X", (u_char) psLine[i]); |
|
strncat(str, szWork, 2); |
|
} |
|
|
|
return str; |
|
} |
|
|
|
|
|
/* |
|
* io_Hex2Char() Convert from Hex string to Char string |
|
* @psLine = Text string |
|
* @lineLen = Length of Text string |
|
* return: NULL nothing to do or error; !=0 Allocated new converted string(must be free) |
|
*/ |
|
inline char *io_Hex2Char(u_char *psLine, int lineLen) |
|
{ |
|
register int i; |
|
char szWork[3], *str; |
|
|
|
if (!psLine || !*psLine || !lineLen) |
|
return NULL; |
|
|
|
str = malloc(lineLen / 2 + 1); |
|
if (!str) { |
|
LOGERR; |
|
return NULL; |
|
} else |
|
memset(str, 0, lineLen / 2 + 1); |
|
|
|
for (i = 0; i < lineLen && psLine[i * 2]; i++) { |
|
strlcpy(szWork, (char*) &psLine[i * 2], 3); |
|
str[i] = (char) strtol(szWork, NULL, 16); |
|
} |
|
|
|
return str; |
|
} |