X-Git-Url: http://git.tuebingen.mpg.de/?p=adu.git;a=blobdiff_plain;f=adu.h;h=83c3c664daa2fcfc4acea3e40e225834baef4638;hp=31050444a6ef74dc8790b003c0376a49a78334aa;hb=f56aa749790691ac3a44cc9c67a0ee7055939f78;hpb=f638c88fad8a1350cf56d5f60ddef297ece92805 diff --git a/adu.h b/adu.h index 3105044..83c3c66 100644 --- a/adu.h +++ b/adu.h @@ -4,7 +4,7 @@ * Licensed under the GPL v2. For licencing details see COPYING. */ -/** \file adu.h Global definitions. */ +/** \file adu.h \brief Global definitions. */ #include #include @@ -85,6 +85,21 @@ #endif /** \endcond */ +/** + * Wrapper for isspace. + * NetBSD needs this. + */ +/* + * The values should be cast to an unsigned char first, then to int. + * Why? Because the isdigit (as do all other is/to functions/macros) + * expect a number from 0 upto and including 255 as their (int) argument. + * Because char is signed on most systems, casting it to int immediately + * gives the functions an argument between -128 and 127 (inclusive), + * which they will use as an array index, and which will thus fail + * horribly for characters which have their most significant bit set. + */ +#define adu_isspace(c) isspace((int)(unsigned char)(c)) + /** * Write a log message to a dynamically allocated string. * @@ -139,6 +154,9 @@ extern struct osl_table *dir_table; /** The adu command line options. */ extern struct gengetopt_args_info conf; +/** Computed database dir. */ +extern char *database_dir; + /** * The select command line options. * @@ -157,7 +175,7 @@ extern struct select_args_info select_conf; * * \sa osl_compare_func, osl_hash_compare(). */ -static inline int uint64_compare(const struct osl_object *obj1, +_static_inline_ int uint64_compare(const struct osl_object *obj1, const struct osl_object *obj2) { uint64_t d1 = read_u64((const char *)obj1->data); @@ -180,7 +198,7 @@ static inline int uint64_compare(const struct osl_object *obj1, * equal, the address of \a obj1 and \a obj2 are compared. So this compare function * returns zero if and only if \a obj1 and \a obj2 point to the same memory area. */ -static inline int size_compare(const struct osl_object *obj1, const struct osl_object *obj2) +_static_inline_ int size_compare(const struct osl_object *obj1, const struct osl_object *obj2) { uint64_t d1 = *(uint64_t *)obj1->data; uint64_t d2 = *(uint64_t *)obj2->data;