X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=test%2Fnotmuch-test.h;h=ed713099b1d3b435024abae6d100d6c1ddf75a4d;hp=df852da9de552fd35dd7305018d001763e6aa7c3;hb=2786aa4d548d28579c761e9358d44c84dfb29068;hpb=60ddce8a161772583e8d223498997ee866d04ede diff --git a/test/notmuch-test.h b/test/notmuch-test.h index df852da9..ed713099 100644 --- a/test/notmuch-test.h +++ b/test/notmuch-test.h @@ -1,6 +1,21 @@ #ifndef _NOTMUCH_TEST_H #define _NOTMUCH_TEST_H +#ifndef _GNU_SOURCE +#define _GNU_SOURCE +#endif + +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include + #include inline static void @@ -13,4 +28,23 @@ expect0 (int line, notmuch_status_t ret) } #define EXPECT0(v) expect0 (__LINE__, v); + +inline static void * +dlsym_next (const char *symbol) +{ + void *sym = dlsym (RTLD_NEXT, symbol); + char *str = dlerror (); + + if (str != NULL) { + fprintf (stderr, "finding symbol '%s' failed: %s", symbol, str); + exit (77); + } + return sym; +} + +#define WRAP_DLFUNC(_rtype, _func, _args) \ + _rtype _func _args; \ + _rtype _func _args { \ + static _rtype (*_func##_orig) _args = NULL; \ + if (! _func##_orig ) *(void **) (&_func##_orig) = dlsym_next (#_func); #endif