X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=include%2Futils.h;h=fdcd0c3aebf44fd2cc13bfb39a9060a13c7c0102;hb=refs%2Fheads%2Fjava;hp=d09f17255047f7a57fe776e11a8e001a6ab1e7c7;hpb=c660fffadc2878be45ad247c43025f0502fc4696;p=doldaconnect.git diff --git a/include/utils.h b/include/utils.h index d09f172..fdcd0c3 100644 --- a/include/utils.h +++ b/include/utils.h @@ -1,6 +1,6 @@ /* * Dolda Connect - Modular multiuser Direct Connect-style client - * Copyright (C) 2004 Fredrik Tolf (fredrik@dolda2000.com) + * Copyright (C) 2004 Fredrik Tolf * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -31,6 +31,11 @@ struct wcspair { wchar_t *val; }; +struct strpair { + struct strpair *next; + char *key; + char *val; +}; /* "Safe" functions */ #ifdef DAEMON @@ -65,12 +70,6 @@ extern struct cbchain_ ## name { \ void *data; \ } * name -extern int vswprintf (wchar_t *__restrict __s, size_t __n, - __const wchar_t *__restrict __format, - __gnuc_va_list __arg); -extern int swprintf (wchar_t *__restrict __s, size_t __n, - __const wchar_t *__restrict __format, ...); - char *vsprintf2(char *format, va_list al); char *sprintf2(char *format, ...) #if defined(__GNUC__) @@ -101,22 +100,25 @@ char *base32decode(char *data, size_t *datalen); void _freeparr(void **arr); int _parrlen(void **arr); char *findfile(char *name, char *homedir, int filldef); +struct strpair *newstrpair(char *key, char *val, struct strpair **list); +void freestrpair(struct strpair *pair, struct strpair **list); +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); -#define sizebuf(b, bs, rs, es, a) _sizebuf((void **)(b), (bs), (rs), (es), (a)) -#define sizebuf2(b, rs, a) _sizebuf((void **)(&(b)), &(b ## size), (rs), sizeof(*(b)), (a)) +#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)) #define addtobuf(b, c) \ do { \ - _sizebuf((void **)(&(b)), &(b ## size), (b ## data) + 1, sizeof(*(b)), 1); \ + _sizebuf((void **)(void *)(&(b)), &(b ## size), (b ## data) + 1, sizeof(*(b)), 1); \ (b)[(b ## data)++] = (c); \ } while(0) #define bufcat(d, s, n) \ do { \ size_t __bufcat_size__; \ __bufcat_size__ = (n); \ - _sizebuf((void **)(&(d)), &(d ## size), (d ## data) + __bufcat_size__, sizeof(*(d)), 1); \ + _sizebuf((void **)(void *)(&(d)), &(d ## size), (d ## data) + __bufcat_size__, sizeof(*(d)), 1); \ memcpy((d) + (d ## data), (s), sizeof(*(d)) * __bufcat_size__); \ (d ## data) += __bufcat_size__; \ } while (0)