Return TypeFunction nameArguments
hzEcodeSplitCSV(char**,char*,unsigned int,char,)

Declared in file: hzTextproc.h
Defined in file : hzTextproc.cpp

Function Logic:

0:START 1:!ar||!arSize 2:Return E_ARGUMENT 3:nPos 4:!line||!line[0] 5:Return E_ARGUMENT 6:!cDelim||cDelim==(char)34 7:cDelim 8:*i&&nPos 9:*i==(char)34 10:items ar 11:*i; 12:*i==(char)34 13:* 14:*i&&*i!=cDelim 15:Return E_FORMAT 16:ar 17:*i; 18:*i==cDelim 19:items 20:Return E_OK

Function body:

hzEcode SplitCSV (char** ar, char* line, unsigned int arSize, char cDelim)
{
   char*       i ;
   uint32_t    nPos ;
   if (!ar || !arSize)
       return E_ARGUMENT ;
   nPos = 0;
   if (!line || !line[0])
       return E_ARGUMENT ;
   if (!cDelim || cDelim == CHAR_DQUOTE)
       cDelim = CHAR_COMMA ;
   for (i = line ; *i && nPos < arSize ; i++)
   {
       if (*i == CHAR_DQUOTE)
       {
           i++ ;
           ar[nPos++] = i ;
           for (; *i ; i++)
           {
               if (*i == CHAR_DQUOTE)
                   { *i++ = 0; break ; }
           }
           if (*i && *i != cDelim)
               return E_FORMAT ;
           continue ;
       }
       ar[nPos++] = i ;
       for (; *i ; i++)
       {
           if (*i == cDelim)
               { i++ ; break ; }
       }
   }
   return E_OK ;
}