func: cgiFormResultType cgiFormEntries(char ***result) char * * stringArray ; cgiFormEntry * e , * pe ; int i ; int total = 0 ; e = cgiFormEntryFirst; while ( e )  pe = cgiFormEntryFirst; while ( pe != e )  if ( ! strcmp ( e -> attr , pe -> attr ) )  pe = pe -> next; total ++; e = e -> next; stringArray = ( char * * ) malloc ( sizeof ( char * ) * ( total + 1 ) ); if ( ! stringArray )  for (i=0; (i <= total); i++) stringArray [ i ] = 0; e = cgiFormEntryFirst; i = 0; while ( e )  int space ; pe = cgiFormEntryFirst; while ( pe != e )  if ( ! strcmp ( e -> attr , pe -> attr ) )  pe = pe -> next; space = ( int ) strlen ( e -> attr ) + 1; stringArray [ i ] = ( char * ) malloc ( space ); if ( stringArray [ i ] == 0 )  cgiStringArrayFree ( stringArray ); i ++; e = e -> next; void cgiStringArrayFree(char **stringArray) char * * arrayItself = stringArray ; free ( arrayItself ); 