Diff for /libaitio/src/Attic/tools.c between versions 1.1 and 1.2

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;
   }

Removed from v.1.1  
changed lines
  Added in v.1.2


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>