delete .cvsignore
[reactos.git] / rosapps / net / ncftp / sio / sio.h
1 /* sio.h */
2
3 #ifndef _sio_h_
4 #define _sio_h_ 1
5
6 typedef struct SelectSet {
7 fd_set fds;
8 struct timeval timeout;
9 int maxfd;
10 int numfds;
11 } SelectSet, *SelectSetPtr;
12
13 /* For SReadline */
14 #ifndef _SReadlineInfo_
15 #define _SReadlineInfo_ 1
16 typedef struct SReadlineInfo {
17 char *buf; /* Pointer to beginning of buffer. */
18 char *bufPtr; /* Pointer to current position in buffer. */
19 char *bufLim; /* Pointer to end of buffer. */
20 size_t bufSize; /* Current size of buffer block. */
21 size_t bufSizeMax; /* Maximum size available for buffer. */
22 int malloc; /* If non-zero, malloc() was used for buf. */
23 int fd; /* File descriptor to use for I/O. */
24 int timeoutLen; /* Timeout to use, in seconds. */
25 int requireEOLN; /* When buffer is full, continue reading and discarding until \n? */
26 } SReadlineInfo;
27 #endif
28
29 #ifndef forever
30 # define forever for ( ; ; )
31 #endif
32
33 /* Private decl; only for use when compiling sio code. */
34 #ifdef HAVE_SIGSETJMP
35 # define SSetjmp(a) sigsetjmp(a, 1)
36 # define SLongjmp(a,b) siglongjmp(a, b)
37 # define Sjmp_buf sigjmp_buf
38 #else
39 # define SSetjmp(a) setjmp(a)
40 # define SLongjmp(a,b) longjmp(a, b)
41 # define Sjmp_buf jmp_buf
42 #endif
43
44 /* Parameter to SBind */
45 #define kReUseAddrYes 1
46 #define kReUseAddrNo 0
47
48 /* Parameter to SRead/SWrite */
49 #define kFullBufferNotRequired 00000
50 #define kFullBufferRequired 00001
51 #define kFullBufferRequiredExceptLast 00002
52 #define kNoFirstSelect 00010
53
54 /* Parameter to AddrToAddrStr */
55 #define kUseDNSYes 1
56 #define kUseDNSNo 0
57
58 #define kTimeoutErr (-2)
59 #define kBrokenPipeErr (-3)
60
61 #define kAddrStrToAddrMiscErr (-4)
62 #define kAddrStrToAddrBadHost (-5)
63
64 #define kSNewFailed (-6)
65 #define kSBindFailed (-7)
66 #define kSListenFailed (-8)
67
68 #define kSrlBufSize 2048
69
70 #define kNoTimeLimit 0
71
72 #if 1 /* %config2% -- set by configure script -- do not modify */
73 # ifndef NO_SIGNALS
74 # define NO_SIGNALS 1
75 # endif
76 #else
77 /* #undef NO_SIGNALS */
78 #endif
79
80 /* Don't change the following line -- it is modified by the Configure script. */
81 #define SAccept SAcceptS
82
83 #ifndef SAccept
84 # if defined(NO_SIGNALS) || defined(WIN32) || defined(_WINDOWS)
85 # define SAccept SAcceptS
86 # else
87 # define SAccept SAcceptA
88 # endif
89 #endif
90
91 #if !defined(ETIMEDOUT) && defined(WSAETIMEDOUT)
92 # define ETIMEDOUT WSAETIMEDOUT
93 #endif
94
95 #if !defined(EADDRNOTAVAIL) && defined(WSAEADDRNOTAVAIL)
96 # define EADDRNOTAVAIL WSAEADDRNOTAVAIL
97 #endif
98
99 #if !defined(EWOULDBLOCK) && defined(WSAEWOULDBLOCK)
100 # define EWOULDBLOCK WSAEWOULDBLOCK
101 #endif
102
103 #if !defined(EINPROGRESS) && defined(WSAEINPROGRESS)
104 # define EINPROGRESS WSAEINPROGRESS
105 #endif
106
107 #if !defined(WIN32) && !defined(_WINDOWS) && !defined(closesocket)
108 # define closesocket close
109 #endif
110
111 #if !defined(WIN32) && !defined(_WINDOWS) && !defined(ioctlsocket)
112 # define ioctlsocket ioctl
113 #endif
114
115 #if defined(WIN32) || defined(_WINDOWS)
116 # define SETERRNO errno = WSAGetLastError();
117 # define SETWSATIMEOUTERR WSASetLastError(WSAETIMEDOUT);
118 #else
119 # define SETERRNO
120 # define SETWSATIMEOUTERR
121 #endif
122
123 typedef void (*sio_sigproc_t)(int);
124 typedef volatile sio_sigproc_t vsio_sigproc_t;
125
126 #ifdef __cplusplus
127 extern "C" {
128 #endif
129
130 #ifndef _sio_main_c
131 extern int gLibSio_Uses_Me_To_Quiet_Variable_Unused_Warnings;
132 #endif
133
134 #if (defined(__GNUC__)) && (__GNUC__ >= 2)
135 # ifndef UNUSED
136 # define UNUSED(a) a __attribute__ ((unused))
137 # endif
138 # define LIBSIO_USE_VAR(a)
139 #else
140 # define LIBSIO_USE_VAR(a) gLibSio_Uses_Me_To_Quiet_Variable_Unused_Warnings = (a == 0)
141 # ifndef UNUSED
142 # define UNUSED(a) a
143 # endif
144 #endif
145
146 /* PRead.c */
147 int PRead(int, char *const, size_t, int);
148
149 /* PWrite.c */
150 int PWrite(int, const char *const, size_t);
151
152 /* SAcceptA.c */
153 int SAcceptA(int, struct sockaddr_in *const, int);
154
155 /* SAcceptS.c */
156 int SAcceptS(int, struct sockaddr_in *const, int);
157
158 /* SBind.c */
159 int SBind(int, const int, const int, const int);
160 int SListen(int, int);
161
162 /* SClose.c */
163 int SClose(int, int);
164
165 /* SConnect.c */
166 int SConnect(int, const struct sockaddr_in *const, int);
167
168 /* SConnectByName.c */
169 int SConnectByName(int, const char *const, const int);
170
171 /* SNew.c */
172 int SNewStreamClient(void);
173 int SNewDatagramClient(void);
174 int SNewStreamServer(const int, const int, const int, int);
175 int SNewDatagramServer(const int, const int, const int);
176
177 /* SRead.c */
178 int SRead(int, char *const, size_t, int, int);
179
180 /* SReadline.c */
181 void FlushSReadlineInfo(SReadlineInfo *);
182 int InitSReadlineInfo(SReadlineInfo *, int, char *, size_t, int, int);
183 void DisposeSReadlineInfo(SReadlineInfo *);
184 int SReadline(SReadlineInfo *, char *const, size_t);
185
186 /* SRecv.c */
187 int SRecv(int, char *const, size_t, int, int, int);
188
189 /* SRecvfrom.c */
190 int SRecvfrom(int, char *const, size_t, int, struct sockaddr_in *const, int);
191
192 /* SRecvmsg.c */
193 int SRecvmsg(int, void *const, int, int);
194
195 /* SSelect.c */
196 void SelectSetInit(SelectSetPtr const, const double);
197 void SelectSetAdd(SelectSetPtr const, const int);
198 void SelectSetRemove(SelectSetPtr const, const int);
199 int SelectW(SelectSetPtr, SelectSetPtr);
200 int SelectR(SelectSetPtr, SelectSetPtr);
201
202 /* SSend.c */
203 int SSend(int, char *, size_t, int, int);
204
205 /* SSendto.c */
206 int SSendto(int, const char *const, size_t, int, const struct sockaddr_in *const, int);
207 int Sendto(int, const char *const, size_t, const struct sockaddr_in *const);
208
209 /* SSendtoByName.c */
210 int SSendtoByName(int, const char *const, size_t, int, const char *const, int);
211 int SendtoByName(int, const char *const, size_t, const char *const);
212
213 /* SWait.c */
214 int SWaitUntilReadyForReading(const int sfd, const int tlen);
215 int SWaitUntilReadyForWriting(const int sfd, const int tlen);
216
217 /* SWrite.c */
218 int SWrite(int, const char *const, size_t, int, int);
219
220 /* SocketUtil.c */
221 int GetSocketBufSize(int, size_t *const, size_t *const);
222 int SetSocketBufSize(int, size_t, size_t);
223 int GetSocketNagleAlgorithm(const int);
224 int SetSocketNagleAlgorithm(const int, const int);
225 int GetSocketLinger(const int, int *const);
226 int SetSocketLinger(const int, const int, const int);
227
228 /* StrAddr.c */
229 int AddrStrToAddr(const char *const, struct sockaddr_in *const, const int);
230 char *AddrToAddrStr(char *const dst, size_t dsize, struct sockaddr_in * const saddrp, int dns, const char *fmt);
231
232 /* SError.c */
233 const char *SError(int e);
234
235 /* main.c */
236 void SIOHandler(int);
237 void (*SSignal(int signum, void (*handler)(int)))(int);
238
239 #ifdef __cplusplus
240 }
241 #endif
242
243 #endif /* _sio_h_ */