1 #ifndef _IOSTUFF_H_INCLUDED_
2 #define _IOSTUFF_H_INCLUDED_
3 
4 /*++
5 /* NAME
6 /*	iostuff 3h
7 /* SUMMARY
8 /*	miscellaneous I/O primitives
9 /* SYNOPSIS
10 /*	#include <iostuff.h>
11 /* DESCRIPTION
12 
13  /*
14   * External interface.
15   */
16 extern int non_blocking(int, int);
17 extern int close_on_exec(int, int);
18 extern int open_limit(int);
19 extern int poll_fd(int, int, int, int, int);
20 extern off_t get_file_limit(void);
21 extern void set_file_limit(off_t);
22 extern ssize_t peekfd(int);
23 extern ssize_t write_buf(int, const char *, ssize_t, int);
24 extern ssize_t timed_read(int, void *, size_t, int, void *);
25 extern ssize_t timed_write(int, const void *, size_t, int, void *);
26 extern void doze(unsigned);
27 extern void rand_sleep(unsigned, unsigned);
28 extern int duplex_pipe(int *);
29 extern int stream_recv_fd(int);
30 extern int stream_send_fd(int, int);
31 extern int unix_recv_fd(int);
32 extern int unix_send_fd(int, int);
33 extern ssize_t dummy_read(int, void *, size_t, int, void *);
34 extern ssize_t dummy_write(int, void *, size_t, int, void *);
35 
36 #define readable(fd)		poll_fd((fd), POLL_FD_READ, 0, 1, 0)
37 #define writable(fd)		poll_fd((fd), POLL_FD_WRITE, 0, 1, 0)
38 
39 #define read_wait(fd, timeout) poll_fd((fd), POLL_FD_READ, (timeout), 0, -1)
40 #define write_wait(fd, timeout) poll_fd((fd), POLL_FD_WRITE, (timeout), 0, -1)
41 
42 extern int inet_windowsize;
43 extern void set_inet_windowsize(int, int);
44 
45 #define POLL_FD_READ	0
46 #define POLL_FD_WRITE	1
47 
48 #define BLOCKING	0
49 #define NON_BLOCKING	1
50 
51 #define CLOSE_ON_EXEC	1
52 #define PASS_ON_EXEC	0
53 
54 extern int unix_pass_fd_fix;
55 extern void set_unix_pass_fd_fix(const char *);
56 
57 #define UNIX_PASS_FD_FIX_NONE		(0)
58 #define UNIX_PASS_FD_FIX_CMSG_LEN	(1<<0)
59 
60 /* LICENSE
61 /* .ad
62 /* .fi
63 /*	The Secure Mailer license must be distributed with this software.
64 /* AUTHOR(S)
65 /*	Wietse Venema
66 /*	IBM T.J. Watson Research
67 /*	P.O. Box 704
68 /*	Yorktown Heights, NY 10598, USA
69 /* CREATION DATE
70 /*	Sat Jan 25 16:54:13 EST 1997
71 /*--*/
72 
73 #endif
74