masqmail

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 }