* Europagate, 1995
*
* $Log: cclqfile.c,v $
- * Revision 1.4 2000-01-31 13:15:21 adam
+ * Revision 1.6 2000-11-16 09:58:02 adam
+ * Implemented local AttributeSet setting for CCL field maps.
+ *
+ * Revision 1.5 2000/10/17 19:50:28 adam
+ * Implemented and-list and or-list for CCL module.
+ *
+ * Revision 1.4 2000/01/31 13:15:21 adam
* Removed uses of assert(3). Cleanup of ODR. CCL parser update so
* that some characters are not surrounded by spaces in resulting term.
* ILL-code updates.
void ccl_qual_fitem (CCL_bibset bibset, const char *cp, const char *qual_name)
{
- char qual_type[128];
+ char qual_spec[128];
int no_scan;
- int pair[128];
+ int pair[256];
+ char *attsets[128];
int pair_no = 0;
- while (1)
+ while (pair_no < 128)
{
- char *qual_value;
- char *split;
-
- if (sscanf (cp, "%s%n", qual_type, &no_scan) != 1)
- break;
+ char *qual_value, *qual_type;
+ char *split, *setp;
- if (!(split = strchr (qual_type, '=')))
+ if (sscanf (cp, "%s%n", qual_spec, &no_scan) != 1)
+ break;
+
+ if (!(split = strchr (qual_spec, '=')))
break;
cp += no_scan;
*split++ = '\0';
- while (1)
+
+ setp = strchr (qual_spec, ',');
+ if (setp)
+ {
+
+ *setp++ = '\0';
+ attsets[pair_no] = malloc (strlen(qual_spec)+1);
+ strcpy (attsets[pair_no], qual_spec);
+ qual_type = setp;
+ }
+ else
+ {
+ attsets[pair_no] = 0;
+ qual_type = qual_spec;
+ }
+ while (pair_no < 128)
{
int type, value;
type = CCL_BIB1_STR;
if (!ccl_stricmp (qual_value, "pw"))
value = CCL_BIB1_STR_WP;
+ if (!ccl_stricmp (qual_value, "al"))
+ value = CCL_BIB1_STR_AND_LIST;
+ if (!ccl_stricmp (qual_value, "ol"))
+ value = CCL_BIB1_STR_OR_LIST;
break;
case 't':
case 'T':
case 'c':
case 'C':
type = CCL_BIB1_COM;
- break;
+ break;
default:
type = atoi (qual_type);
}
break;
}
}
- ccl_qual_add (bibset, qual_name, pair_no, pair);
+ ccl_qual_add_set (bibset, qual_name, pair_no, pair, attsets);
}
/*
ccl_qual_fitem (bibset, cp, qual_name);
}
}
+
+int ccl_qual_fname (CCL_bibset bibset, const char *fname)
+{
+ FILE *inf;
+ inf = fopen (fname, "r");
+ if (!inf)
+ return -1;
+ ccl_qual_file (bibset, inf);
+ return 0;
+}