avl: add blob comparator function
authorFelix Fietkau <nbd@nbd.name>
Fri, 29 Jul 2016 08:58:55 +0000 (10:58 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 29 Jul 2016 08:58:55 +0000 (10:58 +0200)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
avl-cmp.c
avl-cmp.h

index 2d0acecd9d1b3a72bd63b7a71eb0309340a8d98e..39c1f5b081f38d5d047f6dfec488b722b31a5858 100644 (file)
--- a/avl-cmp.c
+++ b/avl-cmp.c
  */
 #include <string.h>
 #include "avl-cmp.h"
+#include "blob.h"
+
+static inline int _min(int v1, int v2)
+{
+       return v1 < v2 ? v1 : v2;
+}
 
 int
 avl_strcmp(const void *k1, const void *k2, void *ptr)
@@ -22,3 +28,10 @@ avl_strcmp(const void *k1, const void *k2, void *ptr)
        return strcmp(k1, k2);
 }
 
+int
+avl_blobcmp(const void *k1, const void *k2, void *ptr)
+{
+       int len = _min(blob_raw_len(k1), blob_raw_len(k2));
+
+       return memcmp(k1, k2, len);
+}
index 5adb495c02d543372175d5de7297c44b0cdd02dd..f97ae8d25e71ad63cbd8a7ff4562461a5ff81b67 100644 (file)
--- a/avl-cmp.h
+++ b/avl-cmp.h
@@ -17,5 +17,6 @@
 #define __AVL_CMP_H
 
 int avl_strcmp(const void *k1, const void *k2, void *ptr);
+int avl_blobcmp(const void *k1, const void *k2, void *ptr);
 
 #endif