summaryrefslogtreecommitdiff
path: root/misc.c
diff options
context:
space:
mode:
authormrb0nk500 <b0nk@b0nk.xyz>2022-07-27 15:55:42 -0300
committermrb0nk500 <b0nk@b0nk.xyz>2022-07-27 15:55:42 -0300
commitfcf4fcb23c0ae3f74d80a23e6b4b4ace02c0b968 (patch)
tree08f4baa0134b67a127f70ad2d8cc2a3b4c8f46e8 /misc.c
parenta459d34d124a2993a313d29cf8b84a5d0df42e87 (diff)
misc: Make `find_delm()` account for escaped delimiters.
Diffstat (limited to 'misc.c')
-rw-r--r--misc.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/misc.c b/misc.c
index 8246ba1..63cac3d 100644
--- a/misc.c
+++ b/misc.c
@@ -71,8 +71,16 @@ char *get_line(char **str) {
char *find_delm(char *str, const char *delm, int skip_delm) {
if (!is_empty(str)) {
- const size_t span = strcspn(str, delm);
- return &str[(skip_delm) ? strspn(&str[span], delm) : span];
+ char *s;
+ for (s = str; *s != '\0'; s += strcspn(s, delm)) {
+ if (*s++ == '\\') {
+ s += strspn(s, delm);
+ continue;
+ } else {
+ break;
+ }
+ }
+ return (skip_delm) ? &s[strspn(s, delm)] : s;
} else {
return NULL;
}