* USE OR PERFORMANCE OF THIS SOFTWARE.
*
*/
+/**
+ * \file cclqfile.c
+ * \brief Implements parsing of CCL qualifier specs in files
+ */
/* CCL qualifiers
* Europagate, 1995
*
- * $Id: cclqfile.c,v 1.2 2004-08-18 10:03:01 adam Exp $
+ * $Id: cclqfile.c,v 1.6 2004-10-15 00:19:00 adam Exp $
*
* Old Europagate Log:
*
type = CCL_BIB1_REL;
if (!ccl_stricmp (qual_value, "o"))
value = CCL_BIB1_REL_ORDER;
+ else if (!ccl_stricmp (qual_value, "r"))
+ value = CCL_BIB1_REL_PORDER;
break;
case 'p':
case 'P':
len = split - qual_value;
else
len = strlen(qual_value);
- svalue_ar[pair_no] = xmalloc(len+1);
+ svalue_ar[pair_no] = (char *) xmalloc(len+1);
memcpy(svalue_ar[pair_no], qual_value, len);
svalue_ar[pair_no][len] = '\0';
}
ccl_qual_field(bibset, cp, qual_name);
}
+void ccl_qual_buf(CCL_bibset bibset, const char *buf)
+{
+ const char *cp1 = buf;
+ char line[256];
+ while (1)
+ {
+ const char *cp2 = cp1;
+ int len;
+ while (*cp2 && !strchr("\r\n", *cp2))
+ cp2++;
+ len = cp2 - cp1;
+ if (len > 0)
+ {
+ if (len >= (sizeof(line)-1))
+ len = sizeof(line)-1;
+ memcpy(line, cp1, len);
+ line[len] = '\0';
+ ccl_qual_line(bibset, line);
+ }
+ if (!*cp2)
+ break;
+ cp1 = cp2+1;
+ }
+}
+
void ccl_qual_line(CCL_bibset bibset, char *line)
{
int no_scan = 0;