]> mj.ucw.cz Git - maildups.git/blob - util.h
Initial revision
[maildups.git] / util.h
1 /*
2  *      Various Utility Functions (extracted from the UCW Library)
3  *
4  *      (c) 2005 Martin Mares <mj@ucw.cz>
5  */
6
7 #include <stdint.h>
8
9 #ifdef __GNUC__
10 #define NONRET __attribute__((noreturn))
11 #define UNUSED __attribute__((unused))
12 #define likely(x) __builtin_expect((x),1)
13 #define unlikely(x) __builtin_expect((x),0)
14 #else
15 #define NONRET
16 #define UNUSED
17 #define likely(x) (x)
18 #define ulikely(x) (x)
19 #endif
20
21 #define STR2(c) #c
22 #define STR(c) STR2(c)
23
24 typedef unsigned int uns;
25 typedef uint8_t u8;
26 typedef uint16_t u16;
27 typedef uint32_t u32;
28 typedef uint64_t u64;
29
30 /* util.c */
31
32 extern int verbose;
33
34 void NONRET die(char *x, ...);
35 void verb(int level, char *x, ...);
36 void *xmalloc(uns size);
37 void *xrealloc(void *old, uns size);
38
39 /* sha1.c */
40
41 struct sha1_ctx {
42         u64 count;
43         u32 state[5];
44         u8 buffer[64];
45 };
46
47 void sha1_init(struct sha1_ctx *ctx);
48 void sha1_update(struct sha1_ctx *sctx, const u8 *data, unsigned int len);
49 void sha1_final(struct sha1_ctx *sctx, u8 *out);