Diff for /libelwix/src/str.c between versions 1.1.1.1 and 1.10

version 1.1.1.1, 2013/01/17 10:05:35 version 1.10, 2023/03/14 22:36:13
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013Copyright 2004 - 2023
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 52  SUCH DAMAGE. Line 52  SUCH DAMAGE.
  * @arr = Pointer to array for free   * @arr = Pointer to array for free
  * return: none   * return: none
  */   */
inline voidvoid
 str_FreeNullTerm(char *** __restrict arr)  str_FreeNullTerm(char *** __restrict arr)
 {  {
         char **a;          char **a;
Line 73  str_FreeNullTerm(char *** __restrict arr) Line 73  str_FreeNullTerm(char *** __restrict arr)
  * @csDelim = Delimiter(s) for separate   * @csDelim = Delimiter(s) for separate
  * return: 0 error format; -1 error:: can`t read; >0 ok, number of items   * return: 0 error format; -1 error:: can`t read; >0 ok, number of items
  */   */
inline intint
 str_ArgsNum(const char *csArgs, const char *csDelim)  str_ArgsNum(const char *csArgs, const char *csDelim)
 {  {
         register int res;          register int res;
Line 230  str_Hex2Dig(const char *psLine) Line 230  str_Hex2Dig(const char *psLine)
 {  {
         register int i, j;          register int i, j;
         char *str, szWork[3] = { 0, 0, 0 };          char *str, szWork[3] = { 0, 0, 0 };
        ait_val_t *v, s;        ait_val_t *v, s = AIT_VAL_INIT;
         u_char *b;          u_char *b;
         int n;          int n;
   
Line 286  str_Dig2Hex(ait_val_t *digz) Line 286  str_Dig2Hex(ait_val_t *digz)
   
         for (i = 0, b = AIT_GET_BUF(digz); i < AIT_LEN(digz); i++) {          for (i = 0, b = AIT_GET_BUF(digz); i < AIT_LEN(digz); i++) {
                 snprintf(szWork, sizeof szWork, "%02hhX", b[i]);                  snprintf(szWork, sizeof szWork, "%02hhX", b[i]);
                strncat(str, szWork, 2);                strcat(str, szWork);
         }          }
   
         return str;          return str;
 }  }
   
 /*  /*
    * str_Dig2Hex2() - Convert from digit array to Hex string
    *
    * @digz = Digits array
    * @diglen = Array length
    * return: NULL nothing to do or error; 
    *              !=0 Allocated new converted string (must be e_free())
   */
   char *
   str_Dig2Hex2(u_char * __restrict digz, int diglen)
   {
           register int i;
           char szWork[3] = { 0, 0, 0 }, *str;
           u_char *b;
   
           if (!digz || !diglen)
                   return NULL;
   
           str = e_malloc(diglen * 2 + 1);
           if (!str)
                   return NULL;
           else
                   memset(str, 0, diglen * 2 + 1);
   
           for (i = 0, b = digz; i < diglen; i++) {
                   snprintf(szWork, sizeof szWork, "%02hhX", b[i]);
                   strcat(str, szWork);
           }
   
           return str;
   }
   
   /*
  * str_LTrim() - Remove left whitespaces from text string   * str_LTrim() - Remove left whitespaces from text string
  *   *
  * @psLine = Text string   * @psLine = Text string
  * return: 0 nothing to do; !=0 Removed bytes   * return: 0 nothing to do; !=0 Removed bytes
  */   */
inline intint
 str_LTrim(char * __restrict psLine)  str_LTrim(char * __restrict psLine)
 {  {
         int pos = 0;          int pos = 0;
Line 320  str_LTrim(char * __restrict psLine) Line 352  str_LTrim(char * __restrict psLine)
  * @psLine = Text string   * @psLine = Text string
  * return: 0 nothing to do; !=0 Removed bytes   * return: 0 nothing to do; !=0 Removed bytes
  */   */
inline intint
 str_RTrim(char * __restrict psLine)  str_RTrim(char * __restrict psLine)
 {  {
         char *t, *pos;          char *t, *pos;
Line 341  str_RTrim(char * __restrict psLine) Line 373  str_RTrim(char * __restrict psLine)
  * @psLine = Text string   * @psLine = Text string
  * return: 0 nothing to do; !=0 Removed bytes   * return: 0 nothing to do; !=0 Removed bytes
  */   */
inline intint
 str_Trim(char * __restrict psLine)  str_Trim(char * __restrict psLine)
 {  {
         int ret = 0;          int ret = 0;
Line 358  str_Trim(char * __restrict psLine) Line 390  str_Trim(char * __restrict psLine)
  * @psLine = Text string   * @psLine = Text string
  * return: 0 nothing to do; 1 successful unquoted string   * return: 0 nothing to do; 1 successful unquoted string
  */   */
inline intint
 str_Unquot(char * __restrict psLine)  str_Unquot(char * __restrict psLine)
 {  {
         char *pos, *str = NULL;          char *pos, *str = NULL;
Line 383  str_Unquot(char * __restrict psLine) Line 415  str_Unquot(char * __restrict psLine)
         return 0;          return 0;
 }  }
   
   /*
    * str_Upper() - Convert all lower characters to upper
    *
    * @psLine = Text string
    * return: 0 nothing to do; !=0 converted chars
    */
   int
   str_Upper(char * __restrict psLine)
   {
           char *s;
           register int cx = 0;
   
           if (!psLine || !*psLine)
                   return 0;
   
           for (s = psLine; *s; s++)
                   if (islower(*s)) {
                           *s = toupper(*s);
                           cx++;
                   }
   
           return cx;
   }
   
   /*
    * str_Lower() - Convert all upper characters to lower
    *
    * @psLine = Text string
    * return: 0 nothing to do; !=0 converted chars
    */
   int
   str_Lower(char * __restrict psLine)
   {
           char *s;
           register int cx = 0;
   
           if (!psLine || !*psLine)
                   return 0;
   
           for (s = psLine; *s; s++)
                   if (isupper(*s)) {
                           *s = tolower(*s);
                           cx++;
                   }
   
           return cx;
   }
   
   /*
    * str_getString() - Get NULL delimited string from data buffer
    *
    * @data = Const data buffer
    * @dlen = Data length
    * @next = Return next position after string if !=NULL
    * return: -1 error or size of string 
    */
   int
   str_getString(const u_char * __restrict data, int dlen, char ** __restrict next)
   {
           const u_char *pos;
   
           if (!data || !dlen)
                   return -1;
   
           for (pos = data; pos < data + dlen; pos++)
                   if (!*pos)
                           break;
           if (*pos) {
                   elwix_SetErr(ENOEXEC, "Not found null-terminated string");
                   return -1;
           }
   
           if (next)
                   *next = (char*) pos + 1;
           return pos - data + 1;
   }
   
   /*
    * str_getString2() - Get string from data buffer with delimiter
    *
    * @data = Data buffer
    * @dlen = Data length
    * @delim = Data delimiter
    * @next = Return next position after delimited string if !=NULL
    * return: -1 error or size of string 
    */
   int
   str_getString2(char * __restrict data, int dlen, char delim, char ** __restrict next)
   {
           char *pos;
   
           if (!data || !dlen)
                   return -1;
   
           for (pos = data; pos < data + dlen; pos++)
                   if (!*pos || *pos == (u_char) delim) {
                           *pos = 0;
                           break;
                   }
           if (*pos) {
                   elwix_SetErr(ENOEXEC, "Not found null-terminated string");
                   return -1;
           }
   
           if (next)
                   *next = (char*) pos + 1;
           return pos - data;
   }

Removed from v.1.1.1.1  
changed lines
  Added in v.1.10


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