common: Add func has_leading_keyword.
authorWerner Koch <wk@gnupg.org>
Thu, 21 Feb 2013 19:25:12 +0000 (20:25 +0100)
committerWerner Koch <wk@gnupg.org>
Thu, 21 Feb 2013 19:25:12 +0000 (20:25 +0100)
* common/stringhelp.c (has_leading_keyword): New.

common/stringhelp.c
common/stringhelp.h

index 842f6a1..d51d3e0 100644 (file)
@@ -74,6 +74,29 @@ change_slashes (char *name)
 
 
 /*
+ * Check whether STRINGS starts with KEYWORD.  The keyword is
+ * delimited by end of string, a space or a tab.  Returns NULL if not
+ * found or a pointer into STRING to the next non-space character
+ * after the KEYWORD (which may be end of string).
+ */
+char *
+has_leading_keyword (const char *string, const char *keyword)
+{
+  size_t n = strlen (keyword);
+
+  if (!strncmp (string, keyword, n)
+      && (!string[n] || string[n] == ' ' || string[n] == '\t'))
+    {
+      string += n;
+      while (*string == ' ' || *string == '\t')
+        string++;
+      return (char*)string;
+    }
+  return NULL;
+}
+
+
+/*
  * Look for the substring SUB in buffer and return a pointer to that
  * substring in BUFFER or NULL if not found.
  * Comparison is case-insensitive.
index 60ba12b..c1f7ea1 100644 (file)
@@ -34,6 +34,8 @@
 
 #include "types.h"
 
+char *has_leading_keyword (const char *string, const char *keyword);
+
 const char *memistr (const void *buf, size_t buflen, const char *sub);
 char *mem2str( char *, const void *, size_t);
 char *trim_spaces( char *string );