+ colon = strchr(cmd, ':');
+ len = colon - cmd;
+ /*
+ * In case we're running on Windows, don't allow a single letter before
+ * the colon.
+ */
+ if (len == 1)
+ colon = NULL;
+
+ /* If no prefix is given, exec filter is the default. */
+ if (!colon)
+ return new_exec_filter(cmd, filtertype);
+
+ for (i = 0; i < ARRAY_SIZE(filter_specs); i++) {
+ if (len == strlen(filter_specs[i].prefix) &&
+ !strncmp(filter_specs[i].prefix, cmd, len))
+ return filter_specs[i].ctor(colon + 1, filtertype);
+ }
+
+ die("Invalid filter type: %.*s", (int) len, cmd);