Diff for /libaitio/src/Attic/tools.c between versions 1.4.4.1 and 1.5.4.1

version 1.4.4.1, 2011/05/10 20:47:31 version 1.5.4.1, 2011/10/14 07:28:16
Line 199  io_Hex2Ch(u_char *psLine, int lineLen) Line 199  io_Hex2Ch(u_char *psLine, int lineLen)
   
         return str;          return str;
 }  }
   
   /*
    * io_CopyEnv() Copy environment to new environment array;
    * @oldenv = Environment array
    * return: NULL error; !=NULL Allocated new environment array(must be free)
   */
   char **
   io_CopyEnv(const char **oldenv)
   {
           char **newenv, **el;
           register int i, num;
   
           if (!oldenv)
                   return NULL;
           else
                   newenv = el = NULL;
   
           /* count items environment */
           for (i = num = 0; oldenv[i]; i++)
                   if (*strchr(oldenv[i], '='))
                           num++;
   
           /* create and copy new environment */
           newenv = calloc(num + 1, sizeof(char*));
           if (!newenv) {
                   LOGERR;
                   return NULL;
           } else
                   el = newenv;
   
           for (i = 0; oldenv[i]; i++)
                   if (*strchr(oldenv[i], '=')) {
                           *el = strdup(oldenv[i]);
                           el++;
                   }
           *el = NULL;
   
           return newenv;
   }
   
   /*
    * io_ExecArgs() Build exec arguments from other array
    * @psProg = Program name for execute
    * @oldarg = Arguments array
    * return: NULL error; !=NULL Allocated execution array(must be free)
   */
   char **
   io_ExecArgs(const char *psProg, const char **oldarg)
   {
           char **newarg, **el;
           register int i, num;
   
           if (!psProg || !oldarg)
                   return NULL;
           else
                   newarg = el = NULL;
   
           /* count items arguments */
           for (num = 0; oldarg[num]; num++);
   
           /* create and copy new arguments */
           newarg = calloc(num + 2, sizeof(char*));
           if (!newarg) {
                   LOGERR;
                   return NULL;
           } else
                   el = newarg;
   
           *el = strdup(psProg);
           el++;
   
           for (i = 0; oldarg[i]; i++, el++)
                   *el = strdup(oldarg[i]);
           *el = NULL;
   
           return newarg;
   }
   
   /*
    * io_FreeNullTerm() Free dynamic allocated null terminated array with strings
    * @arr = Pointer to array for free
    * return: none
   */
   inline void
   io_FreeNullTerm(char *** __restrict arr)
   {
           char **a;
   
           if (arr && *arr) {
                   a = *arr;
                   while (a && *a)
                           free(*a++);
                   free(*arr);
                   *arr = NULL;
           }
   }
   
   /*
    * io_ether_ntoa() Convert ethernet address to string
    * @n = ethernet address structure, like struct ether_addr
    * @a = string
    * @len = string length
    * return: NULL error or !=NULL string a
    */
   inline char *
   io_ether_ntoa(const struct io_ether_addr *n, char * __restrict a, int len)
   {
           if (!n || !a)
                   return NULL;
   
           memset(a, 0, len);
           if (snprintf(a, len, "%02x:%02x:%02x:%02x:%02x:%02x", 
                           n->ether_addr_octet[0], n->ether_addr_octet[1], 
                           n->ether_addr_octet[2], n->ether_addr_octet[3], 
                           n->ether_addr_octet[4], n->ether_addr_octet[5]) < 17)
                   return NULL;
   
           return a;
   }

Removed from v.1.4.4.1  
changed lines
  Added in v.1.5.4.1


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