rev |
line source |
paulo@0
|
1 /*
|
paulo@0
|
2 * $Id: gt_utils.h,v 1.8 2004/04/17 06:05:54 hipnod Exp $
|
paulo@0
|
3 *
|
paulo@0
|
4 * Copyright (C) 2001-2003 giFT project (gift.sourceforge.net)
|
paulo@0
|
5 *
|
paulo@0
|
6 * This program is free software; you can redistribute it and/or modify it
|
paulo@0
|
7 * under the terms of the GNU General Public License as published by the
|
paulo@0
|
8 * Free Software Foundation; either version 2, or (at your option) any
|
paulo@0
|
9 * later version.
|
paulo@0
|
10 *
|
paulo@0
|
11 * This program is distributed in the hope that it will be useful, but
|
paulo@0
|
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
|
paulo@0
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
paulo@0
|
14 * General Public License for more details.
|
paulo@0
|
15 */
|
paulo@0
|
16
|
paulo@0
|
17 #ifndef GIFT_GT_UTILS_H_
|
paulo@0
|
18 #define GIFT_GT_UTILS_H_
|
paulo@0
|
19
|
paulo@0
|
20 /*****************************************************************************/
|
paulo@0
|
21
|
paulo@0
|
22 /* define to set data structures to a predefined value after freeing */
|
paulo@0
|
23 /* #define POISON_FREE 1 */
|
paulo@0
|
24
|
paulo@0
|
25 /*****************************************************************************/
|
paulo@0
|
26
|
paulo@0
|
27 typedef struct gt_zlib_stream
|
paulo@0
|
28 {
|
paulo@0
|
29 void *streamptr;
|
paulo@0
|
30
|
paulo@0
|
31 enum
|
paulo@0
|
32 {
|
paulo@0
|
33 ZSTREAM_NONE = 0x00,
|
paulo@0
|
34 ZSTREAM_INFLATE = 0x01,
|
paulo@0
|
35 ZSTREAM_DEFLATE = 0x02,
|
paulo@0
|
36 } type;
|
paulo@0
|
37
|
paulo@0
|
38 char *data;
|
paulo@0
|
39 char *start, *end;
|
paulo@0
|
40 char *pos;
|
paulo@0
|
41 } ZlibStream;
|
paulo@0
|
42
|
paulo@0
|
43 /*****************************************************************************/
|
paulo@0
|
44
|
paulo@0
|
45 char *make_str (char *pseudo_str, int len);
|
paulo@0
|
46
|
paulo@0
|
47 int peer_addr (int fd, in_addr_t *r_ip, in_port_t *r_port);
|
paulo@0
|
48
|
paulo@0
|
49 void fprint_hex (FILE *f, char *buf, int len);
|
paulo@0
|
50
|
paulo@0
|
51 /*****************************************************************************/
|
paulo@0
|
52
|
paulo@0
|
53 ZlibStream *zlib_stream_open (size_t max);
|
paulo@0
|
54 void zlib_stream_close (ZlibStream *stream);
|
paulo@0
|
55 int zlib_stream_inflate (ZlibStream *stream, char *data, size_t size);
|
paulo@0
|
56 int zlib_stream_write (ZlibStream *stream, char *data, size_t size);
|
paulo@0
|
57
|
paulo@0
|
58 /* returns the amount of data read */
|
paulo@0
|
59 int zlib_stream_read (ZlibStream *stream, char **r_data);
|
paulo@0
|
60
|
paulo@0
|
61 /*****************************************************************************/
|
paulo@0
|
62
|
paulo@0
|
63 #ifdef POISON_FREE
|
paulo@0
|
64 #define poisoned_free(ptr, chr) \
|
paulo@0
|
65 do { \
|
paulo@0
|
66 memset ((ptr), (chr), sizeof (*(ptr))); \
|
paulo@0
|
67 free ((ptr)); \
|
paulo@0
|
68 } while (0)
|
paulo@0
|
69 #else /* POISON_FREE */
|
paulo@0
|
70 #define poisoned_free(ptr, chr) \
|
paulo@0
|
71 free ((ptr))
|
paulo@0
|
72 #endif /* POISON_FREE */
|
paulo@0
|
73
|
paulo@0
|
74 /*****************************************************************************/
|
paulo@0
|
75
|
paulo@0
|
76 #endif /* GIFT_GT_UTILS_H_ */
|