+ /*
+ * Get any extension directives (right now just the content transfer
+ * encoding, but maybe others) that we care about.
+ */
+
+ if (magic && *cp == '*') {
+ /*
+ * See if it's a CTE we match on
+ */
+ struct k2v *kv;
+
+ dp = ++cp;
+ while (*cp != '\0' && ! isspace((unsigned char) *cp))
+ cp++;
+
+ if (dp == cp) {
+ advise (NULL, "invalid null transfer encoding specification");
+ return NOTOK;
+ }
+
+ if (*cp != '\0')
+ *cp++ = '\0';
+
+ ct->c_reqencoding = CE_UNKNOWN;
+
+ for (kv = EncodingType; kv->kv_key; kv++) {
+ if (strcasecmp(kv->kv_key, dp) == 0) {
+ ct->c_reqencoding = kv->kv_value;
+ break;
+ }
+ }
+
+ if (ct->c_reqencoding == CE_UNKNOWN) {
+ advise (NULL, "invalid CTE specification: \"%s\"", dp);
+ return NOTOK;
+ }
+
+ while (isspace ((unsigned char) *cp))
+ cp++;
+ }
+