diff --git a/src/basic/string-util.c b/src/basic/string-util.c index d98d2f44d8..de24e60a14 100644 --- a/src/basic/string-util.c +++ b/src/basic/string-util.c @@ -1383,6 +1383,46 @@ char* find_line_startswith(const char *haystack, const char *needle) { return p + strlen(needle); } +char* find_line(const char *haystack, const char *needle) { + char *p; + + assert(haystack); + assert(needle); + + /* Finds the first line in 'haystack' that match the specified string. Returns a pointer to the + * beginning of the line */ + + p = find_line_startswith(haystack, needle); + if (!p) + return NULL; + + if (*p == 0 || strchr(NEWLINE, *p)) + return p - strlen(needle); + + return NULL; +} + +char* find_line_after(const char *haystack, const char *needle) { + char *p; + + assert(haystack); + assert(needle); + + /* Finds the first line in 'haystack' that match the specified string. Returns a pointer to the + * next line after it */ + + p = find_line_startswith(haystack, needle); + if (!p) + return NULL; + + if (*p == 0) + return p; + if (strchr(NEWLINE, *p)) + return p + 1; + + return NULL; +} + bool version_is_valid(const char *s) { if (isempty(s)) return false; diff --git a/src/basic/string-util.h b/src/basic/string-util.h index 17fac1bfab..b68bf291fe 100644 --- a/src/basic/string-util.h +++ b/src/basic/string-util.h @@ -279,6 +279,8 @@ char* strdupcspn(const char *a, const char *reject); }) char* find_line_startswith(const char *haystack, const char *needle); +char* find_line(const char *haystack, const char *needle); +char* find_line_after(const char *haystack, const char *needle); bool version_is_valid(const char *s);