+void ccl_qual_add_special (CCL_bibset bibset, const char *n, const char *v)
+{
+ struct ccl_qualifier_special *p;
+ const char *pe;
+
+ for (p = bibset->special; p && strcmp(p->name, n); p = p->next)
+ ;
+ if (p)
+ free (p->value);
+ else
+ {
+ p = (struct ccl_qualifier_special *) malloc (sizeof(*p));
+ p->name = ccl_strdup (n);
+ p->value = 0;
+ p->next = bibset->special;
+ bibset->special = p;
+ }
+ while (strchr(" \t", *v))
+ ++v;
+ for (pe = v + strlen(v); pe != v; --pe)
+ if (!strchr(" \n\r\t", pe[-1]))
+ break;
+ p->value = (char*) malloc (pe - v + 1);
+ if (pe - v)
+ memcpy (p->value, v, pe - v);
+ p->value[pe - v] = '\0';
+}
+
+