summaryrefslogtreecommitdiffstats
path: root/blob.c
diff options
context:
space:
mode:
Diffstat (limited to 'blob.c')
-rw-r--r--blob.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/blob.c b/blob.c
index 0c28877..5a3b226 100644
--- a/blob.c
+++ b/blob.c
@@ -189,6 +189,22 @@ unsigned int blob_pull_uint(blob_t *b, int radix)
return val;
}
+blob_t blob_pull_spn(blob_t *b, const blob_t reject)
+{
+ blob_t t = *b;
+ int i;
+
+ for (i = 0; i < t.len; i++) {
+ if (memchr(reject.ptr, t.ptr[i], reject.len) == NULL) {
+ *b = BLOB_PTR_LEN(t.ptr + i, t.len - i);
+ return BLOB_PTR_LEN(t.ptr, i);
+ }
+ }
+
+ *b = BLOB_NULL;
+ return t;
+}
+
blob_t blob_pull_cspn(blob_t *b, const blob_t reject)
{
blob_t t = *b;