]> git.ozlabs.org Git - ccan/blobdiff - ccan/bytestring/bytestring.h
bitmap: Avoid shadowing type name with parameter name
[ccan] / ccan / bytestring / bytestring.h
index dd1f913ca45ee2f0dbe7d66f50f175256927095b..a0689db15b2f4457a9a15525edf08ee5ae4b55f2 100644 (file)
@@ -94,8 +94,7 @@ static inline struct bytestring bytestring_from_string(const char *s)
  */
 static inline bool bytestring_eq(struct bytestring a, struct bytestring b)
 {
-       return (a.len == b.len)
-               && (memcmp(a.ptr, b.ptr, a.len) == 0);
+       return memeq(a.ptr, a.len, b.ptr, b.len);
 }
 
 /**
@@ -149,8 +148,7 @@ static inline struct bytestring bytestring_slice(struct bytestring s,
 static inline bool bytestring_starts(struct bytestring s,
                                     struct bytestring prefix)
 {
-       return (s.len >= prefix.len) && (memcmp(s.ptr,
-                                               prefix.ptr, prefix.len) == 0);
+       return memstarts(s.ptr, s.len, prefix.ptr, prefix.len);
 }
 
 /**
@@ -163,8 +161,7 @@ static inline bool bytestring_starts(struct bytestring s,
 static inline bool bytestring_ends(struct bytestring s,
                                   struct bytestring suffix)
 {
-       return (s.len >= suffix.len) && (memcmp(s.ptr + s.len - suffix.len,
-                                               suffix.ptr, suffix.len) == 0);
+       return memends(s.ptr, s.len, suffix.ptr, suffix.len);
 }
 
 /**
@@ -206,8 +203,13 @@ static inline const char *bytestring_rindex(struct bytestring haystack,
 static inline struct bytestring bytestring_bytestring(struct bytestring haystack,
                                                      struct bytestring needle)
 {
-       const char *p = memmem(haystack.ptr, haystack.len,
-                              needle.ptr, needle.len);
+       const char *p;
+
+       /* Allow needle.ptr == NULL, without memmem sanitizer complaining */
+       if (needle.len == 0)
+               return bytestring(haystack.ptr, 0);
+
+       p = memmem(haystack.ptr, haystack.len, needle.ptr, needle.len);
        if (p)
                return bytestring(p, needle.len);
        else