+ if (is->files[cat].fc_list)
+ {
+ int b, j;
+ for (j = 0; j<is->files[cat].fc_max; j++)
+ if (!is->files[cat].fc_list[j])
+ {
+ is->files[cat].fc_list[j] = pos;
+ return;
+ }
+ }
+ release_block (is, cat, pos);
+}
+
+static void init_fc (ISAMC is, int cat)
+{
+ int j = 100;
+
+ is->files[cat].fc_max = j;
+ is->files[cat].fc_list = xmalloc (sizeof(*is->files[0].fc_list) * j);
+ while (--j >= 0)
+ is->files[cat].fc_list[j] = 0;
+}
+
+static void release_fc (ISAMC is, int cat)
+{
+ int b, j = is->files[cat].fc_max;
+
+ while (--j >= 0)
+ if ((b = is->files[cat].fc_list[j]))
+ {
+ release_block (is, cat, b);
+ is->files[cat].fc_list[j] = 0;
+ }