No empty .Rs/.Re
[netbsd-mini2440.git] / external / ibm-public / postfix / dist / src / util / peekfd.c
bloba4442c35b82d033cd19021971a17f6f2ae51e50e
1 /* $NetBSD$ */
3 /*++
4 /* NAME
5 /* peekfd 3
6 /* SUMMARY
7 /* determine amount of data ready to read
8 /* SYNOPSIS
9 /* #include <iostuff.h>
11 /* ssize_t peekfd(fd)
12 /* int fd;
13 /* DESCRIPTION
14 /* peekfd() attempts to find out how many bytes are available to
15 /* be read from the named file descriptor. The result value is
16 /* the number of available bytes.
17 /* DIAGNOSTICS
18 /* peekfd() returns -1 in case of trouble. The global \fIerrno\fR
19 /* variable reflects the nature of the problem.
20 /* BUGS
21 /* On some systems, non-blocking read() may fail even after a
22 /* positive return from peekfd(). The smtp-sink program works
23 /* around this by using the readable() function instead.
24 /* LICENSE
25 /* .ad
26 /* .fi
27 /* The Secure Mailer license must be distributed with this software.
28 /* AUTHOR(S)
29 /* Wietse Venema
30 /* IBM T.J. Watson Research
31 /* P.O. Box 704
32 /* Yorktown Heights, NY 10598, USA
33 /*--*/
35 /* System library. */
37 #include <sys_defs.h>
38 #include <sys/ioctl.h>
39 #ifdef FIONREAD_IN_SYS_FILIO_H
40 #include <sys/filio.h>
41 #endif
42 #ifdef FIONREAD_IN_TERMIOS_H
43 #include <termios.h>
44 #endif
45 #include <unistd.h>
47 /* Utility library. */
49 #include "iostuff.h"
51 /* peekfd - return amount of data ready to read */
53 ssize_t peekfd(int fd)
57 * Anticipate a series of system-dependent code fragments.
59 #ifdef FIONREAD
60 int count;
62 return (ioctl(fd, FIONREAD, (char *) &count) < 0 ? -1 : count);
63 #else
64 #error "don't know how to look ahead"
65 #endif