Esempio n. 1
0
void
FreeFieldList(FieldList list)
{
    int     i;

    if (list == NULL)
	return;

    for (i = 0; list[i] != NULL; i++)
    {
	FreeFieldList(list[i]->subfields);
	FreeFieldSpec(list[i]);
    }

    free(list);
}
Esempio n. 2
0
int
ReadNativeFieldList(FieldList *listp, /* output variable */
                    FILE      *file) /* input file */
{
   FieldList    list;
   long num_fields;
   long i;
   FieldSpec    *spec;


   if (fread(&num_fields, sizeof(long), 1, file) != 1)
      {
         DebugMsg(1, "ReadNativeFieldList: Couldn't get number of fields.");
         return FALSE;
      }

   list = NULL;

   for (i = 0; i < num_fields; i++)
      {
         spec = ReadNativeFieldSpec(file);
         if (spec == NULL || !AddField(&list, spec))
            {
               if (list != NULL)
                  FreeFieldList(list);
               DebugMsg(2, ((spec == NULL)
                            ? "ReadNativeFieldList: couldn't read field spec."
                            : ("ReadNativeFieldList: "
                               "couldn't add field spec to list.")));
               return FALSE;
            }
      }

   *listp = list;

   return TRUE;
}