X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=ccl%2Fcclqfile.c;h=76fb21f54bc55befc6c5065f52519e1d46d34877;hb=e02e52d1bd554b3c3c34a262dc715666fb42a223;hp=96d57e91bf9cea74de25af8ac355ab80e834c0f0;hpb=6a5e596a2520ae688b080432212728bd4b12901e;p=yaz-moved-to-github.git diff --git a/ccl/cclqfile.c b/ccl/cclqfile.c index 96d57e9..76fb21f 100644 --- a/ccl/cclqfile.c +++ b/ccl/cclqfile.c @@ -45,7 +45,14 @@ * Europagate, 1995 * * $Log: cclqfile.c,v $ - * Revision 1.7 2001-01-24 11:55:31 adam + * Revision 1.9 2001-03-07 13:24:40 adam + * Member and_not in Z_Operator is kept for backwards compatibility. + * Added support for definition of CCL operators in field spec file. + * + * Revision 1.8 2001/02/21 13:46:53 adam + * C++ fixes. + * + * Revision 1.7 2001/01/24 11:55:31 adam * Fixed nasty bug introduced by previous commit (attribute sets not * properly allocated). * @@ -88,7 +95,7 @@ #include -void ccl_qual_fitem (CCL_bibset bibset, const char *cp, const char *qual_name) +void ccl_qual_field (CCL_bibset bibset, const char *cp, const char *qual_name) { char qual_spec[128]; int no_scan; @@ -175,7 +182,7 @@ void ccl_qual_fitem (CCL_bibset bibset, const char *cp, const char *qual_name) pair[pair_no*2+1] = value; if (setp) { - attsets[pair_no] = malloc (strlen(qual_spec)+1); + attsets[pair_no] = (char*) malloc (strlen(qual_spec)+1); strcpy (attsets[pair_no], qual_spec); } else @@ -188,6 +195,14 @@ void ccl_qual_fitem (CCL_bibset bibset, const char *cp, const char *qual_name) ccl_qual_add_set (bibset, qual_name, pair_no, pair, attsets); } +void ccl_qual_fitem (CCL_bibset bibset, const char *cp, const char *qual_name) +{ + if (*qual_name == '@') + ccl_qual_add_special(bibset, qual_name+1, cp); + else + ccl_qual_field(bibset, cp, qual_name); +} + /* * ccl_qual_file: Read bibset definition from file. * bibset: Bibset @@ -204,7 +219,7 @@ void ccl_qual_fitem (CCL_bibset bibset, const char *cp, const char *qual_name) void ccl_qual_file (CCL_bibset bibset, FILE *inf) { char line[256]; - char *cp; + char *cp, *cp1; char qual_name[128]; int no_scan; @@ -216,6 +231,9 @@ void ccl_qual_file (CCL_bibset bibset, FILE *inf) if (sscanf (cp, "%s%n", qual_name, &no_scan) != 1) continue; /* also ignore empty lines */ cp += no_scan; + cp1 = strchr(cp, '#'); + if (cp1) + *cp1 = '\0'; ccl_qual_fitem (bibset, cp, qual_name); } }