+/* Get the next include/exclude arg from the string. The token will not
+ * be '\0' terminated, so use the returned length to limit the string.
+ * Also, be sure to add this length to the returned pointer before passing
+ * it back to ask for the next token. This routine will not split off a
+ * prefix of "+ " or "- " unless xflags contains XFLG_NO_PREFIXES.
+ */
+static const char *get_exclude_tok(const char *p, int *len_ptr, int xflags)
+{
+ const unsigned char *s, *t;
+
+ /* Skip over any initial spaces */
+ for (s = (unsigned char *)p; isspace(*s); s++) {}
+
+ /* Remember the beginning of the token. */
+ t = s;
+
+ /* Do we have a token to parse? */
+ if (*s) {
+ /* Is this a '+' or '-' followed by a space (not whitespace)? */
+ if (!(xflags & XFLG_NO_PREFIXES)
+ && (*s == '+' || *s == '-') && s[1] == ' ')
+ s += 2;
+
+ /* Skip to the next space or the end of the string */
+ while (!isspace(*s) && *s != '\0')
+ s++;
+ }
+
+ *len_ptr = s - t;
+ return (const char *)t;
+}
+
+
+void add_exclude(struct exclude_struct ***listp, const char *pattern, int xflags)