Add bitfield_set function from libubox.
authorStijn Tintel <stijn@linux-ipv6.be>
Thu, 17 Aug 2017 14:27:20 +0000 (16:27 +0200)
committerStijn Tintel <stijn@linux-ipv6.be>
Fri, 29 Sep 2017 12:35:06 +0000 (15:35 +0300)
The bitfield functions and macros where removed from libubox. Add the
bitfield_set function which is used by uci, and prefix it with uci_.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
blob.c
uci.h

diff --git a/blob.c b/blob.c
index c8e5dc9..bc38a7f 100644 (file)
--- a/blob.c
+++ b/blob.c
@@ -188,7 +188,7 @@ uci_blob_diff(struct blob_attr **tb1, struct blob_attr **tb2,
 mark:
                ret = true;
                if (diff)
-                       bitfield_set(diff, i);
+                       uci_bitfield_set(diff, i);
                else
                        return ret;
        }
diff --git a/uci.h b/uci.h
index c5583ed..43f2052 100644 (file)
--- a/uci.h
+++ b/uci.h
@@ -689,6 +689,15 @@ uci_lookup_option_string(struct uci_context *ctx, struct uci_section *s, const c
        return o->v.string;
 }
 
+#ifndef BITS_PER_LONG
+#define BITS_PER_LONG (8 * sizeof(unsigned long))
+#endif
+
+static inline void uci_bitfield_set(unsigned long *bits, int bit)
+{
+       bits[bit / BITS_PER_LONG] |= (1UL << (bit % BITS_PER_LONG));
+}
+
 #ifdef __cplusplus
 }
 #endif