int readfetfile_ret(FET **ofet, char *file) { int ret; FILE *fp; FET *fet; char c,buf[MAXFETLENGTH]; size_t len = 0; if ((fp = fopen(file,"rb")) == (FILE *)NULL){ fprintf(stderr, "ERROR : readfetfile_ret : fopen : %s\n", file); return(-2); } if((ret = allocfet_ret(&fet, MAXFETS))){ fclose(fp); return(ret); } while (fscanf(fp,"%s",buf) != EOF){ while(((c = getc(fp)) == ' ') || (c == '\t')); ungetc(c, fp); if (fet->num >= fet->alloc){ if((ret = reallocfet_ret(&fet, fet->alloc + MAXFETS))){ fclose(fp); freefet(fet); return(ret); } } len = strlen(buf) + 1; fet->names[fet->num] = malloc(len); if(fet->names[fet->num] == (char *)NULL){ fprintf(stderr, "ERROR : readfetfile_ret : malloc : fet->names[]\n"); fclose(fp); freefet(fet); return(-3); } strncpy(fet->names[fet->num], buf, len); fgets(buf,MAXFETLENGTH-1,fp); buf[strlen(buf)-1] = '\0'; len = strlen(buf) + 1; fet->values[fet->num] = malloc(len); if(fet->values[fet->num] == (char *)NULL){ fprintf(stderr, "ERROR : readfetfile_ret : malloc : fet->values[]\n"); fclose(fp); freefet(fet); return(-4); } strncpy(fet->values[fet->num], buf, len); (fet->num)++; } fclose(fp); *ofet = fet; return(0); }
int string2fet(FET **ofet, char *istr) { int ret; char *iptr, *optr; char name[MAXFETLENGTH], value[MAXFETLENGTH]; FET *fet; ret = allocfet_ret(&fet, MAXFETS); if(ret) return(ret); iptr = istr; while(*iptr != '\0'){ /* Get next name */ optr = name; while((*iptr != '\0')&&(*iptr != ' ')&&(*iptr != '\t')) *optr++ = *iptr++; *optr = '\0'; /* Skip white space */ while((*iptr != '\0')&& ((*iptr == ' ')||(*iptr == '\t'))) iptr++; /* Get next value */ optr = value; while((*iptr != '\0')&&(*iptr != '\n')) *optr++ = *iptr++; *optr = '\0'; /* Skip white space */ while((*iptr != '\0')&& ((*iptr == ' ')||(*iptr == '\t')||(*iptr == '\n'))) iptr++; /* Test (name,value) pair */ if(strlen(name) == 0){ fprintf(stderr, "ERROR : string2fet : empty name string found\n"); return(-2); } /* Store name and value pair into FET. */ ret = updatefet_ret(name, value, fet); if(ret){ freefet(fet); return(ret); } } *ofet = fet; return(0); }