+#include "config.h"
+#include <stdio.h>
+#include <string.h>
+
+/**
+ * structeq - bitwise comparison of structs.
+ *
+ * This is a replacement for memcmp, which checks the argument types are the
+ * same.
+ *
+ * License: CC0 (Public domain)
+ * Author: Rusty Russell <rusty@rustcorp.com.au>
+ *
+ * Example:
+ * #include <ccan/structeq/structeq.h>
+ * #include <ccan/build_assert/build_assert.h>
+ * #include <assert.h>
+ *
+ * struct mydata {
+ * int start, end;
+ * };
+ *
+ * int main(void)
+ * {
+ * struct mydata a, b;
+ *
+ * // No padding in struct, otherwise this doesn't work!
+ * BUILD_ASSERT(sizeof(a) == sizeof(a.start) + sizeof(a.end));
+ *
+ * a.start = 100;
+ * a.end = 101;
+ *
+ * b.start = 100;
+ * b.end = 101;
+ *
+ * // They are equal.
+ * assert(structeq(&a, &b));
+ *
+ * b.end++;
+ * // Now they are not.
+ * assert(!structeq(&a, &b));
+ *
+ * return 0;
+ * }
+ */
+int main(int argc, char *argv[])
+{
+ /* Expect exactly one argument */
+ if (argc != 2)
+ return 1;
+
+ if (strcmp(argv[1], "depends") == 0) {
+ return 0;
+ }
+
+ return 1;
+}