X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=include%2Futils.h;h=1e52949bef9d46159b9f92c06213241baf45fb7b;hb=8d8c739fc25e302e0d9c490a15f7eca11bf4654b;hp=fdcd0c3aebf44fd2cc13bfb39a9060a13c7c0102;hpb=e0cbc756d0375ee96cb9da2548117a6884d57a9f;p=doldaconnect.git diff --git a/include/utils.h b/include/utils.h index fdcd0c3..1e52949 100644 --- a/include/utils.h +++ b/include/utils.h @@ -37,6 +37,12 @@ struct strpair { char *val; }; +struct btree { + struct btree *l, *r; + int h; + void *d; +}; + /* "Safe" functions */ #ifdef DAEMON #define LOGOOM(size) flog(LOG_CRIT, "%s (%s:%i): out of memory (alloc %zi)", __FUNCTION__, __FILE__, __LINE__, (size)) @@ -87,7 +93,7 @@ wchar_t *wcstolower(wchar_t *wcs); wchar_t ucptowc(int ucp); void _sizebuf(void **buf, size_t *bufsize, size_t reqsize, size_t elsize, int algo); double ntime(void); -int wcsexists(wchar_t *h, wchar_t *n); +wchar_t *wcslower(wchar_t *wcs); #ifndef HAVE_WCSCASECMP int wcscasecmp(const wchar_t *s1, const wchar_t *s2); #endif @@ -106,6 +112,11 @@ char *spfind(struct strpair *list, char *key); struct wcspair *newwcspair(wchar_t *key, wchar_t *val, struct wcspair **list); void freewcspair(struct wcspair *pair, struct wcspair **list); wchar_t *wpfind(struct wcspair *list, wchar_t *key); +int bbtreedel(struct btree **tree, void *item, int (*cmp)(void *, void *)); +int bbtreeput(struct btree **tree, void *item, int (*cmp)(void *, void *)); +void *btreeget(struct btree *tree, void *key, int (*cmp)(void *, void *)); +void *btreeiter(struct btree *tree); +void btreefree(struct btree *tree); #define sizebuf(b, bs, rs, es, a) _sizebuf((void **)(void *)(b), (bs), (rs), (es), (a)) #define sizebuf2(b, rs, a) _sizebuf((void **)(void *)(&(b)), &(b ## size), (rs), sizeof(*(b)), (a))