Пример #1
0
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);
}
Пример #2
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);
}