Mercurial > masqmail-0.2
comparison src/libident/ident.h @ 0:08114f7dcc23 0.2.21
this is masqmail-0.2.21 from oliver kurth
author | meillo@marmaro.de |
---|---|
date | Fri, 26 Sep 2008 17:05:23 +0200 |
parents | |
children | 26e34ae9a3e3 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:08114f7dcc23 |
---|---|
1 /* | |
2 ** ident.h | |
3 ** | |
4 ** Author: Peter Eriksson <pen@lysator.liu.se> | |
5 ** Intruder: Pär Emanuelsson <pell@lysator.liu.se> | |
6 */ | |
7 | |
8 #ifndef __IDENT_H__ | |
9 #define __IDENT_H__ | |
10 | |
11 #ifdef __cplusplus | |
12 extern "C" { | |
13 #endif | |
14 | |
15 /* Sigh */ | |
16 #ifdef __STDC__ | |
17 # if __STDC__ == 1 | |
18 # define IS_STDC 1 | |
19 # endif | |
20 #endif | |
21 | |
22 #ifdef __P | |
23 # undef __P | |
24 #endif | |
25 | |
26 #ifdef IS_STDC | |
27 # define __P(AL) AL | |
28 | |
29 #ifdef IN_LIBIDENT_SRC | |
30 | |
31 # define __P1(t1,a1) \ | |
32 (t1 a1) | |
33 | |
34 # define __P2(t1,a1,t2,a2) \ | |
35 (t1 a1, t2 a2) | |
36 | |
37 # define __P3(t1,a1,t2,a2,t3,a3) \ | |
38 (t1 a1, t2 a2, t3 a3) | |
39 | |
40 # define __P4(t1,a1,t2,a2,t3,a3,t4,a4) \ | |
41 (t1 a1, t2 a2, t3 a3, t4 a4) | |
42 | |
43 # define __P5(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) \ | |
44 (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5) | |
45 | |
46 # define __P7(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \ | |
47 (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7) | |
48 #endif | |
49 | |
50 #else | |
51 | |
52 # define __P(AL) () | |
53 | |
54 #ifdef IN_LIBIDENT_SRC | |
55 | |
56 # define __P1(t1,a1) (a1) \ | |
57 t1 a1; | |
58 # define __P2(t1,a1,t2,a2) (a1, a2) \ | |
59 t1 a1; \ | |
60 t2 a2; | |
61 # define __P3(t1,a1,t2,a2,t3,a3) (a1, a2, a3) \ | |
62 t1 a1; \ | |
63 t2 a2; \ | |
64 t3 a3; | |
65 # define __P4(t1,a1,t2,a2,t3,a3,t4,a4) (a1, a2, a3, a4) \ | |
66 t1 a1; \ | |
67 t2 a2; \ | |
68 t3 a3; \ | |
69 t4 a4; | |
70 # define __P5(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) (a1, a2, a3, a4, a5) \ | |
71 t1 a1; \ | |
72 t2 a2; \ | |
73 t3 a3; \ | |
74 t4 a4; \ | |
75 t5 a5; | |
76 # define __P7(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) \ | |
77 (a1, a2, a3, a4, a5, a6, a7) \ | |
78 t1 a1; \ | |
79 t2 a2; \ | |
80 t3 a3; \ | |
81 t4 a4; \ | |
82 t5 a5; \ | |
83 t6 a6; \ | |
84 t7 a7; | |
85 #endif | |
86 #endif | |
87 | |
88 #ifdef IS_STDC | |
89 # undef IS_STDC | |
90 #endif | |
91 | |
92 #ifdef _AIX | |
93 # include <sys/select.h> | |
94 #endif | |
95 #ifdef __sgi | |
96 # include <bstring.h> | |
97 #endif | |
98 #include <sys/types.h> | |
99 #include <netinet/in.h> | |
100 #include <sys/time.h> | |
101 | |
102 #if defined(VMS) && !defined(FD_SETSIZE) | |
103 # define FD_SETSIZE 64 | |
104 #endif | |
105 | |
106 /* | |
107 * Sigh, GCC v2 complains when using undefined struct tags | |
108 * in function prototypes... | |
109 */ | |
110 #if defined(__GNUC__) && !defined(INADDR_ANY) | |
111 # define __STRUCT_IN_ADDR_P void * | |
112 #else | |
113 # define __STRUCT_IN_ADDR_P struct in_addr * | |
114 #endif | |
115 | |
116 #if defined(__GNUC__) && !defined(DST_NONE) | |
117 # define __STRUCT_TIMEVAL_P void * | |
118 #else | |
119 # define __STRUCT_TIMEVAL_P struct timeval * | |
120 #endif | |
121 | |
122 #if defined(__sgi) && defined(_POSIX_SOURCE) | |
123 # undef __STRUCT_TIMEVAL_P | |
124 # define __STRUCT_TIMEVAL_P void * | |
125 #endif | |
126 | |
127 #ifndef IDBUFSIZE | |
128 # define IDBUFSIZE 2048 | |
129 #endif | |
130 | |
131 #ifndef IDPORT | |
132 # define IDPORT 113 | |
133 #endif | |
134 | |
135 typedef struct | |
136 { | |
137 int fd; | |
138 char buf[IDBUFSIZE]; | |
139 } ident_t; | |
140 | |
141 typedef struct { | |
142 int lport; /* Local port */ | |
143 int fport; /* Far (remote) port */ | |
144 char *identifier; /* Normally user name */ | |
145 char *opsys; /* OS */ | |
146 char *charset; /* Charset (what did you expect?) */ | |
147 } IDENT; /* For higher-level routines */ | |
148 | |
149 /* Low-level calls and macros */ | |
150 #define id_fileno(ID) ((ID)->fd) | |
151 | |
152 extern ident_t * id_open __P((__STRUCT_IN_ADDR_P laddr, | |
153 __STRUCT_IN_ADDR_P faddr, | |
154 __STRUCT_TIMEVAL_P timeout)); | |
155 | |
156 extern int id_close __P((ident_t *id)); | |
157 | |
158 extern int id_query __P((ident_t *id, | |
159 int lport, | |
160 int fport, | |
161 __STRUCT_TIMEVAL_P timeout)); | |
162 | |
163 extern int id_parse __P((ident_t *id, | |
164 __STRUCT_TIMEVAL_P timeout, | |
165 int *lport, | |
166 int *fport, | |
167 char **identifier, | |
168 char **opsys, | |
169 char **charset)); | |
170 | |
171 /* High-level calls */ | |
172 | |
173 extern IDENT *ident_lookup __P((int fd, int timeout)); | |
174 | |
175 extern char *ident_id __P((int fd, int timeout)); | |
176 | |
177 extern IDENT *ident_query __P(( __STRUCT_IN_ADDR_P laddr, __STRUCT_IN_ADDR_P raddr, int lport, int rport, int timeout)); | |
178 | |
179 extern void ident_free __P((IDENT *id)); | |
180 | |
181 extern char id_version[]; | |
182 | |
183 #ifdef IN_LIBIDENT_SRC | |
184 | |
185 extern char *id_strdup __P((char *str)); | |
186 extern char *id_strtok __P((char *cp, char *cs, char *dc)); | |
187 | |
188 #endif | |
189 | |
190 #ifdef __cplusplus | |
191 } | |
192 #endif | |
193 | |
194 #endif |