From 4af0c62b15c51056dc293c8e3b907e7c41fbf08c Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Thu, 21 Feb 2013 20:25:12 +0100 Subject: [PATCH] common: Add func has_leading_keyword. * common/stringhelp.c (has_leading_keyword): New. --- common/stringhelp.c | 23 +++++++++++++++++++++++ common/stringhelp.h | 2 ++ 2 files changed, 25 insertions(+) diff --git a/common/stringhelp.c b/common/stringhelp.c index 842f6a14b..d51d3e0ce 100644 --- a/common/stringhelp.c +++ b/common/stringhelp.c @@ -73,6 +73,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. diff --git a/common/stringhelp.h b/common/stringhelp.h index 60ba12b8c..c1f7ea12d 100644 --- a/common/stringhelp.h +++ b/common/stringhelp.h @@ -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 );