Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
+
+bool memeqzero(const void *data, size_t length)
+{
+ const unsigned char *p = data;
+
+ while (length) {
+ if (*p)
+ return false;
+ p++;
+ length--;
+ }
+ return true;
+}
+bool memeqzero(const void *data, size_t length);
+
+/**
+ * memeqzero - Is a byte array all zeroes?
+ * @data: byte array
+ * @length: length of @data in bytes
+ *
+ * Example:
+ * if (memeqzero(somebytes, bytes_len)) {
+ * printf("somebytes == 0!\n");
+ * }
+ */
+PURE_FUNCTION
static inline bool memeqstr(const void *data, size_t length, const char *string)
{
return memeq(data, length, string, strlen(string));
static inline bool memeqstr(const void *data, size_t length, const char *string)
{
return memeq(data, length, string, strlen(string));
char tmp1[SWAPSIZE], tmp2[SWAPSIZE];
/* This is how many tests you plan to run */
char tmp1[SWAPSIZE], tmp2[SWAPSIZE];
/* This is how many tests you plan to run */
ok1(memmem(haystack1, sizeof(haystack1), needle1, 2) == haystack1);
ok1(memmem(haystack1, sizeof(haystack1), needle1, 3) == NULL);
ok1(memmem(haystack1, sizeof(haystack1), needle1, 2) == haystack1);
ok1(memmem(haystack1, sizeof(haystack1), needle1, 3) == NULL);
ok1(memcmp(tmp1, haystack2, sizeof(haystack2)) == 0);
ok1(memcmp(tmp2, haystack1, sizeof(haystack1)) == 0);
ok1(memcmp(tmp1, haystack2, sizeof(haystack2)) == 0);
ok1(memcmp(tmp2, haystack1, sizeof(haystack1)) == 0);
+ ok1(memeqzero(NULL, 0));
+ ok1(memeqzero(scan2, 3));
+ ok1(!memeqzero(scan2, 4));
+
/* This exits depending on whether all tests passed */
return exit_status();
}
/* This exits depending on whether all tests passed */
return exit_status();
}