From 2814cdbd86389516eeea570ae12f7c2c7338d81b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 10 Dec 2020 15:06:16 +1100 Subject: BLI_string: extract quote utility into BLI_str_escape_find_quote Duplicate logic for this exists in BLI_str_quoted_substrN, which doesn't properly support escaping. --- source/blender/blenlib/intern/string.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'source/blender/blenlib/intern') diff --git a/source/blender/blenlib/intern/string.c b/source/blender/blenlib/intern/string.c index c4b51338360..d02241230de 100644 --- a/source/blender/blenlib/intern/string.c +++ b/source/blender/blenlib/intern/string.c @@ -398,6 +398,21 @@ size_t BLI_str_unescape(char *__restrict dst, const char *__restrict src, const return len; } +/** + * Find the first un-escaped quote in the string (to find the end of the string). + */ +const char *BLI_str_escape_find_quote(const char *str) +{ + bool escape = false; + while (*str && (*str != '"' || escape)) { + /* A pair of back-slashes represents a single back-slash, + * only use a single back-slash for escaping. */ + escape = (escape == false) && (*str == '\\'); + str++; + } + return (*str == '"') ? str : NULL; +} + /** * Makes a copy of the text within the "" that appear after some text 'blahblah' * i.e. for string 'pose["apples"]' with prefix 'pose[', it should grab "apples" -- cgit v1.2.3