+#define TERM_EXIST 1
+#define TERM_SPACE 2
+#define TERM_TAB 4
+
+static int name_terminate(const char *name, int namelen, int c, int terminate)
+{
+ if (c == ' ' && !(terminate & TERM_SPACE))
+ return 0;
+ if (c == '\t' && !(terminate & TERM_TAB))
+ return 0;
+
+ /*
+ * Do we want an existing name? Return false and
+ * continue if it's not there.
+ */
+ if (terminate & TERM_EXIST)
+ return cache_name_pos(name, namelen) >= 0;
+
+ return 1;
+}
+
+static char * find_name(const char *line, char *def, int p_value, int terminate)