annotate src/libident/id_query.c @ 1:af25f5c39d90
added diff from debian (masqmail-0.2.21-4)
author |
meillo@marmaro.de |
date |
Fri, 26 Sep 2008 20:56:23 +0200 |
parents |
|
children |
26e34ae9a3e3 |
rev |
line source |
meillo@0
|
1 /*
|
meillo@0
|
2 ** id_query.c Transmit a query to an IDENT server
|
meillo@0
|
3 **
|
meillo@0
|
4 ** Author: Peter Eriksson <pen@lysator.liu.se>
|
meillo@0
|
5 */
|
meillo@0
|
6
|
meillo@0
|
7 #ifdef NeXT3
|
meillo@0
|
8 # include <libc.h>
|
meillo@0
|
9 #endif
|
meillo@0
|
10
|
meillo@0
|
11 #include <stdio.h>
|
meillo@0
|
12 #include <errno.h>
|
meillo@0
|
13 #include <signal.h>
|
meillo@0
|
14
|
meillo@0
|
15 #ifdef HAVE_ANSIHEADERS
|
meillo@0
|
16 # include <stdlib.h>
|
meillo@0
|
17 # include <string.h>
|
meillo@0
|
18 # include <unistd.h>
|
meillo@0
|
19 #endif
|
meillo@0
|
20
|
meillo@0
|
21 #include <sys/types.h>
|
meillo@0
|
22 #include <sys/wait.h>
|
meillo@0
|
23 #include <sys/time.h>
|
meillo@0
|
24
|
meillo@0
|
25 #ifdef _AIX
|
meillo@0
|
26 # include <sys/select.h>
|
meillo@0
|
27 #endif
|
meillo@0
|
28
|
meillo@0
|
29 #ifdef _AIX
|
meillo@0
|
30 # include <sys/select.h>
|
meillo@0
|
31 #endif
|
meillo@0
|
32 #ifdef VMS
|
meillo@0
|
33 # include <sys/socket.h> /* for fd_set */
|
meillo@0
|
34 #endif
|
meillo@0
|
35 #define IN_LIBIDENT_SRC
|
meillo@0
|
36 #include "ident.h"
|
meillo@0
|
37
|
meillo@0
|
38
|
meillo@0
|
39 /*
|
meillo@0
|
40 int id_query __P4(ident_t *, id,
|
meillo@0
|
41 int, lport,
|
meillo@0
|
42 int, fport,
|
meillo@0
|
43 struct timeval *, timeout)
|
meillo@0
|
44 */
|
meillo@0
|
45
|
meillo@0
|
46 int id_query __P(( ident_t *id,
|
meillo@0
|
47 int lport,
|
meillo@0
|
48 int fport,
|
meillo@0
|
49 __STRUCT_TIMEVAL_P timeout))
|
meillo@0
|
50 {
|
meillo@0
|
51 #ifdef SIGRETURNTYPE
|
meillo@0
|
52 SIGRETURNTYPE (*old_sig)();
|
meillo@0
|
53 #else
|
meillo@0
|
54 void (*old_sig) __P((int));
|
meillo@0
|
55 #endif
|
meillo@0
|
56 int res;
|
meillo@0
|
57 char buf[80];
|
meillo@0
|
58 fd_set ws;
|
meillo@0
|
59
|
meillo@0
|
60 sprintf(buf, "%d , %d\r\n", lport, fport);
|
meillo@0
|
61
|
meillo@0
|
62 if (timeout)
|
meillo@0
|
63 {
|
meillo@0
|
64 FD_ZERO(&ws);
|
meillo@0
|
65 FD_SET(id->fd, &ws);
|
meillo@0
|
66
|
meillo@0
|
67 #ifdef __hpux
|
meillo@0
|
68 if ((res = select(FD_SETSIZE, (int *)0, (int *)&ws, (int *)0, timeout)) < 0)
|
meillo@0
|
69 #else
|
meillo@0
|
70 if ((res = select(FD_SETSIZE, (fd_set *)0, &ws, (fd_set *)0, timeout)) < 0)
|
meillo@0
|
71 #endif
|
meillo@0
|
72 return -1;
|
meillo@0
|
73
|
meillo@0
|
74 if (res == 0)
|
meillo@0
|
75 {
|
meillo@0
|
76 errno = ETIMEDOUT;
|
meillo@0
|
77 return -1;
|
meillo@0
|
78 }
|
meillo@0
|
79 }
|
meillo@0
|
80
|
meillo@0
|
81 old_sig = signal(SIGPIPE, SIG_IGN);
|
meillo@0
|
82
|
meillo@0
|
83 res = write(id->fd, buf, strlen(buf));
|
meillo@0
|
84
|
meillo@0
|
85 signal(SIGPIPE, old_sig);
|
meillo@0
|
86
|
meillo@0
|
87 return res;
|
meillo@0
|
88 }
|