+ case 'C':
+ /*
+ * -C means we split our argument up into
+ * colon-separated chunks and assemble them
+ * into a config paragraph.
+ */
+ {
+ wchar_t *keywords;
+ char *q;
+ wchar_t *u;
+ paragraph *para;
+
+ keywords = mknewa(wchar_t, 2+strlen(p));
+
+ u = keywords;
+ q = p;
+
+ while (*q) {
+ if (*q == ':') {
+ *u++ = L'\0';
+ } else {
+ if (*q == '\\' && q[1])
+ q++;
+ /* FIXME: lacks charset flexibility */
+ *u++ = *q;
+ }
+ q++;
+ }
+ *u = L'\0';
+
+ para = mknew(paragraph);
+ memset(para, 0, sizeof(*para));
+ para->type = para_Config;
+ para->keyword = keywords;
+ para->next = NULL;
+ para->fpos.filename = "<command line>";
+ para->fpos.line = para->fpos.col = -1;
+
+ if (cfg_tail)
+ cfg_tail->next = para;
+ else
+ cfg = para;
+ cfg_tail = para;
+ }