+ if (recC[recindex].type != IGN) {
+ /*
+ * Special exception to support multiple Text fields
+ */
+ if (recindex == C_TEXT && valC[recindex]) {
+ if (!text) {
+ if ((text = (char **)malloc ((MAX_TEXT+1) * sizeof (char *))) == NULL)
+ return 0;
+ else {
+ textindex = 0;
+ memset (text, 0, (MAX_TEXT+1) * sizeof (char *));
+ }
+ }
+ if (textindex < MAX_TEXT) {
+ if ((cp = (char *)malloc (strlen (line) + 1))) {
+ strcpy (cp, line);
+ cp[strlen (line)] = '\0';
+ text[textindex++] = cp;
+ }
+ }
+ } else {
+ len = strlen(line);
+ if (recindex == C_VAL) {
+ /* Convert commast to dots for later processing */
+ for (i=0; line[i]; i++) if (line[i] == ',') line[i] = '.';
+
+ if ((cp = strchr (line, '.')) == NULL) {
+ if (!(valC[recindex] = (char *)malloc (strlen(line)+4)))
+ return 0;
+ sprintf (valC[recindex], "%s.00", line);
+ } else if ( ((len = cp - line + 3)) < strlen (line)) {
+ if (!(valC[recindex] = (char *)malloc (len+1)))
+ return 0;
+ strncpy (valC[recindex], line, len);
+ valC[recindex][len] = '\0';
+ } else {
+ if (!(valC[recindex] = (char *)malloc (strlen(line)+1)))
+ return 0;
+ strcpy(valC[recindex], line);
+ }
+ } else {
+ if ((valC[recindex] = (char *)malloc (strlen(line)+1)))
+ strcpy(valC[recindex], line);
+ else
+ return 0;
+ }
+ }
+ }