summaryrefslogtreecommitdiff
path: root/apps/plugins/sdl/progs/quake/mpdosock.h
diff options
context:
space:
mode:
authorFranklin Wei <git@fwei.tk>2018-02-11 15:34:30 -0500
committerFranklin Wei <git@fwei.tk>2019-07-19 22:37:40 -0400
commit5d05b9d3e920a6aa5fcb553758e98ed0da8c91e4 (patch)
tree84406e21639529a185556a33e5de7f43cffc277b /apps/plugins/sdl/progs/quake/mpdosock.h
parentb70fecf21ddc21877ec1ae7888d9c18a979e37ad (diff)
downloadrockbox-5d05b9d3e920a6aa5fcb553758e98ed0da8c91e4.tar.gz
rockbox-5d05b9d3e920a6aa5fcb553758e98ed0da8c91e4.zip
Quake!
This ports id Software's Quake to run on the SDL plugin runtime. The source code originated from id under the GPLv2 license. I used https://github.com/ahefner/sdlquake as the base of my port. Performance is, unsurprisingly, not on par with what you're probably used to on PC. I average about 10FPS on ipod6g, but it's still playable. Sound works well enough, but in-game music is not supported. I've written ARM assembly routines for the inner sound loop. Make sure you turn the "brightness" all the way down, or colors will look funky. To run, extract Quake's data files to /.rockbox/quake. Have fun! Change-Id: I4285036e967d7f0722802d43cf2096c808ca5799
Diffstat (limited to 'apps/plugins/sdl/progs/quake/mpdosock.h')
-rw-r--r--apps/plugins/sdl/progs/quake/mpdosock.h797
1 files changed, 797 insertions, 0 deletions
diff --git a/apps/plugins/sdl/progs/quake/mpdosock.h b/apps/plugins/sdl/progs/quake/mpdosock.h
new file mode 100644
index 0000000000..75171f4d69
--- /dev/null
+++ b/apps/plugins/sdl/progs/quake/mpdosock.h
@@ -0,0 +1,797 @@
1/* WINSOCK.H--definitions to be used with the WINSOCK.DLL
2 * Copyright (c) 1993-1995, Microsoft Corp. All rights reserved.
3 *
4 * This header file corresponds to version 1.1 of the Windows Sockets specification.
5 *
6 * This file includes parts which are Copyright (c) 1982-1986 Regents
7 * of the University of California. All rights reserved. The
8 * Berkeley Software License Agreement specifies the terms and
9 * conditions for redistribution.
10 *
11 */
12
13#ifndef _WINSOCKAPI_
14#define _WINSOCKAPI_
15
16#define FAR
17#define PASCAL
18
19/*
20 * Basic system type definitions, taken from the BSD file sys/types.h.
21 */
22typedef unsigned char u_char;
23typedef unsigned short u_short;
24typedef unsigned int u_int;
25typedef unsigned long u_long;
26
27/*
28 * The new type to be used in all
29 * instances which refer to sockets.
30 */
31typedef u_int SOCKET;
32
33// FIXME
34#if 0
35/*
36 * Select uses arrays of SOCKETs. These macros manipulate such
37 * arrays. FD_SETSIZE may be defined by the user before including
38 * this file, but the default here should be >= 64.
39 *
40 * CAVEAT IMPLEMENTOR and USER: THESE MACROS AND TYPES MUST BE
41 * INCLUDED IN WINSOCK.H EXACTLY AS SHOWN HERE.
42 */
43#ifndef FD_SETSIZE
44#define FD_SETSIZE 64
45#endif /* FD_SETSIZE */
46
47typedef struct fd_set {
48 u_int fd_count; /* how many are SET? */
49 SOCKET fd_array[FD_SETSIZE]; /* an array of SOCKETs */
50} fd_set;
51
52#ifdef __cplusplus
53extern "C" {
54#endif
55
56extern int PASCAL FAR __WSAFDIsSet(SOCKET, fd_set FAR *);
57
58#ifdef __cplusplus
59}
60#endif
61
62
63#define FD_CLR(fd, set) do { \
64 u_int __i; \
65 for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count ; __i++) { \
66 if (((fd_set FAR *)(set))->fd_array[__i] == fd) { \
67 while (__i < ((fd_set FAR *)(set))->fd_count-1) { \
68 ((fd_set FAR *)(set))->fd_array[__i] = \
69 ((fd_set FAR *)(set))->fd_array[__i+1]; \
70 __i++; \
71 } \
72 ((fd_set FAR *)(set))->fd_count--; \
73 break; \
74 } \
75 } \
76} while(0)
77
78#define FD_SET(fd, set) do { \
79 if (((fd_set FAR *)(set))->fd_count < FD_SETSIZE) \
80 ((fd_set FAR *)(set))->fd_array[((fd_set FAR *)(set))->fd_count++]=(fd);\
81} while(0)
82
83#define FD_ZERO(set) (((fd_set FAR *)(set))->fd_count=0)
84
85#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR *)(set))
86
87/*
88 * Structure used in select() call, taken from the BSD file sys/time.h.
89 */
90struct timeval {
91 long tv_sec; /* seconds */
92 long tv_usec; /* and microseconds */
93};
94
95/*
96 * Operations on timevals.
97 *
98 * NB: timercmp does not work for >= or <=.
99 */
100#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
101#define timercmp(tvp, uvp, cmp) \
102 ((tvp)->tv_sec cmp (uvp)->tv_sec || \
103 (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)
104#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
105#endif
106
107/*
108 * Commands for ioctlsocket(), taken from the BSD file fcntl.h.
109 *
110 *
111 * Ioctl's have the command encoded in the lower word,
112 * and the size of any in or out parameters in the upper
113 * word. The high 2 bits of the upper word are used
114 * to encode the in/out status of the parameter; for now
115 * we restrict parameters to at most 128 bytes.
116 */
117#define IOCPARM_MASK 0x7f /* parameters must be < 128 bytes */
118#define IOC_VOID 0x20000000 /* no parameters */
119#define IOC_OUT 0x40000000 /* copy out parameters */
120#define IOC_IN 0x80000000 /* copy in parameters */
121#define IOC_INOUT (IOC_IN|IOC_OUT)
122 /* 0x20000000 distinguishes new &
123 old ioctl's */
124#define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
125
126#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
127
128#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
129
130#define FIONREAD _IOR('f', 127, u_long) /* get # bytes to read */
131#define FIONBIO _IOW('f', 126, u_long) /* set/clear non-blocking i/o */
132#define FIOASYNC _IOW('f', 125, u_long) /* set/clear async i/o */
133
134/* Socket I/O Controls */
135#define SIOCSHIWAT _IOW('s', 0, u_long) /* set high watermark */
136#define SIOCGHIWAT _IOR('s', 1, u_long) /* get high watermark */
137#define SIOCSLOWAT _IOW('s', 2, u_long) /* set low watermark */
138#define SIOCGLOWAT _IOR('s', 3, u_long) /* get low watermark */
139#define SIOCATMARK _IOR('s', 7, u_long) /* at oob mark? */
140
141/*
142 * Structures returned by network data base library, taken from the
143 * BSD file netdb.h. All addresses are supplied in host order, and
144 * returned in network order (suitable for use in system calls).
145 */
146
147struct hostent {
148 char FAR * h_name; /* official name of host */
149 char FAR * FAR * h_aliases; /* alias list */
150 short h_addrtype; /* host address type */
151 short h_length; /* length of address */
152 char FAR * FAR * h_addr_list; /* list of addresses */
153#define h_addr h_addr_list[0] /* address, for backward compat */
154};
155
156/*
157 * It is assumed here that a network number
158 * fits in 32 bits.
159 */
160struct netent {
161 char FAR * n_name; /* official name of net */
162 char FAR * FAR * n_aliases; /* alias list */
163 short n_addrtype; /* net address type */
164 u_long n_net; /* network # */
165};
166
167struct servent {
168 char FAR * s_name; /* official service name */
169 char FAR * FAR * s_aliases; /* alias list */
170 short s_port; /* port # */
171 char FAR * s_proto; /* protocol to use */
172};
173
174struct protoent {
175 char FAR * p_name; /* official protocol name */
176 char FAR * FAR * p_aliases; /* alias list */
177 short p_proto; /* protocol # */
178};
179
180/*
181 * Constants and structures defined by the internet system,
182 * Per RFC 790, September 1981, taken from the BSD file netinet/in.h.
183 */
184
185/*
186 * Protocols
187 */
188#define IPPROTO_IP 0 /* dummy for IP */
189#define IPPROTO_ICMP 1 /* control message protocol */
190#define IPPROTO_GGP 2 /* gateway^2 (deprecated) */
191#define IPPROTO_TCP 6 /* tcp */
192#define IPPROTO_PUP 12 /* pup */
193#define IPPROTO_UDP 17 /* user datagram protocol */
194#define IPPROTO_IDP 22 /* xns idp */
195#define IPPROTO_ND 77 /* UNOFFICIAL net disk proto */
196
197#define IPPROTO_RAW 255 /* raw IP packet */
198#define IPPROTO_MAX 256
199
200/*
201 * Port/socket numbers: network standard functions
202 */
203#define IPPORT_ECHO 7
204#define IPPORT_DISCARD 9
205#define IPPORT_SYSTAT 11
206#define IPPORT_DAYTIME 13
207#define IPPORT_NETSTAT 15
208#define IPPORT_FTP 21
209#define IPPORT_TELNET 23
210#define IPPORT_SMTP 25
211#define IPPORT_TIMESERVER 37
212#define IPPORT_NAMESERVER 42
213#define IPPORT_WHOIS 43
214#define IPPORT_MTP 57
215
216/*
217 * Port/socket numbers: host specific functions
218 */
219#define IPPORT_TFTP 69
220#define IPPORT_RJE 77
221#define IPPORT_FINGER 79
222#define IPPORT_TTYLINK 87
223#define IPPORT_SUPDUP 95
224
225/*
226 * UNIX TCP sockets
227 */
228#define IPPORT_EXECSERVER 512
229#define IPPORT_LOGINSERVER 513
230#define IPPORT_CMDSERVER 514
231#define IPPORT_EFSSERVER 520
232
233/*
234 * UNIX UDP sockets
235 */
236#define IPPORT_BIFFUDP 512
237#define IPPORT_WHOSERVER 513
238#define IPPORT_ROUTESERVER 520
239 /* 520+1 also used */
240
241/*
242 * Ports < IPPORT_RESERVED are reserved for
243 * privileged processes (e.g. root).
244 */
245#define IPPORT_RESERVED 1024
246
247/*
248 * Link numbers
249 */
250#define IMPLINK_IP 155
251#define IMPLINK_LOWEXPER 156
252#define IMPLINK_HIGHEXPER 158
253
254/*
255 * Internet address (old style... should be updated)
256 */
257struct in_addr {
258 union {
259 struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
260 struct { u_short s_w1,s_w2; } S_un_w;
261 u_long S_addr;
262 } S_un;
263#define s_addr S_un.S_addr
264 /* can be used for most tcp & ip code */
265#define s_host S_un.S_un_b.s_b2
266 /* host on imp */
267#define s_net S_un.S_un_b.s_b1
268 /* network */
269#define s_imp S_un.S_un_w.s_w2
270 /* imp */
271#define s_impno S_un.S_un_b.s_b4
272 /* imp # */
273#define s_lh S_un.S_un_b.s_b3
274 /* logical host */
275};
276
277/*
278 * Definitions of bits in internet address integers.
279 * On subnets, the decomposition of addresses to host and net parts
280 * is done according to subnet mask, not the masks here.
281 */
282#define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0)
283#define IN_CLASSA_NET 0xff000000
284#define IN_CLASSA_NSHIFT 24
285#define IN_CLASSA_HOST 0x00ffffff
286#define IN_CLASSA_MAX 128
287
288#define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000)
289#define IN_CLASSB_NET 0xffff0000
290#define IN_CLASSB_NSHIFT 16
291#define IN_CLASSB_HOST 0x0000ffff
292#define IN_CLASSB_MAX 65536
293
294#define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000)
295#define IN_CLASSC_NET 0xffffff00
296#define IN_CLASSC_NSHIFT 8
297#define IN_CLASSC_HOST 0x000000ff
298
299#define INADDR_ANY (u_long)0x00000000
300#define INADDR_LOOPBACK 0x7f000001
301#define INADDR_BROADCAST (u_long)0xffffffff
302#define INADDR_NONE 0xffffffff
303
304/*
305 * Socket address, internet style.
306 */
307struct sockaddr_in {
308 short sin_family;
309 u_short sin_port;
310 struct in_addr sin_addr;
311 char sin_zero[8];
312};
313
314#define WSADESCRIPTION_LEN 256
315#define WSASYS_STATUS_LEN 128
316
317
318/*
319 * Options for use with [gs]etsockopt at the IP level.
320 */
321#define IP_OPTIONS 1 /* set/get IP per-packet options */
322#define IP_MULTICAST_IF 2 /* set/get IP multicast interface */
323#define IP_MULTICAST_TTL 3 /* set/get IP multicast timetolive */
324#define IP_MULTICAST_LOOP 4 /* set/get IP multicast loopback */
325#define IP_ADD_MEMBERSHIP 5 /* add an IP group membership */
326#define IP_DROP_MEMBERSHIP 6 /* drop an IP group membership */
327
328#define IP_DEFAULT_MULTICAST_TTL 1 /* normally limit m'casts to 1 hop */
329#define IP_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */
330#define IP_MAX_MEMBERSHIPS 20 /* per socket; must fit in one mbuf */
331
332/*
333 * Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
334 */
335struct ip_mreq {
336 struct in_addr imr_multiaddr; /* IP multicast address of group */
337 struct in_addr imr_interface; /* local IP address of interface */
338};
339
340/*
341 * Definitions related to sockets: types, address families, options,
342 * taken from the BSD file sys/socket.h.
343 */
344
345/*
346 * This is used instead of -1, since the
347 * SOCKET type is unsigned.
348 */
349#define INVALID_SOCKET (SOCKET)(~0)
350#define SOCKET_ERROR (-1)
351
352/*
353 * Types
354 */
355#define SOCK_STREAM 1 /* stream socket */
356#define SOCK_DGRAM 2 /* datagram socket */
357#define SOCK_RAW 3 /* raw-protocol interface */
358#define SOCK_RDM 4 /* reliably-delivered message */
359#define SOCK_SEQPACKET 5 /* sequenced packet stream */
360
361/*
362 * Option flags per-socket.
363 */
364#define SO_DEBUG 0x0001 /* turn on debugging info recording */
365#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */
366#define SO_REUSEADDR 0x0004 /* allow local address reuse */
367#define SO_KEEPALIVE 0x0008 /* keep connections alive */
368#define SO_DONTROUTE 0x0010 /* just use interface addresses */
369#define SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */
370#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */
371#define SO_LINGER 0x0080 /* linger on close if data present */
372#define SO_OOBINLINE 0x0100 /* leave received OOB data in line */
373
374#define SO_DONTLINGER (u_int)(~SO_LINGER)
375
376/*
377 * Additional options.
378 */
379#define SO_SNDBUF 0x1001 /* send buffer size */
380#define SO_RCVBUF 0x1002 /* receive buffer size */
381#define SO_SNDLOWAT 0x1003 /* send low-water mark */
382#define SO_RCVLOWAT 0x1004 /* receive low-water mark */
383#define SO_SNDTIMEO 0x1005 /* send timeout */
384#define SO_RCVTIMEO 0x1006 /* receive timeout */
385#define SO_ERROR 0x1007 /* get error status and clear */
386#define SO_TYPE 0x1008 /* get socket type */
387
388/*
389 * Options for connect and disconnect data and options. Used only by
390 * non-TCP/IP transports such as DECNet, OSI TP4, etc.
391 */
392#define SO_CONNDATA 0x7000
393#define SO_CONNOPT 0x7001
394#define SO_DISCDATA 0x7002
395#define SO_DISCOPT 0x7003
396#define SO_CONNDATALEN 0x7004
397#define SO_CONNOPTLEN 0x7005
398#define SO_DISCDATALEN 0x7006
399#define SO_DISCOPTLEN 0x7007
400
401/*
402 * Option for opening sockets for synchronous access.
403 */
404#define SO_OPENTYPE 0x7008
405
406#define SO_SYNCHRONOUS_ALERT 0x10
407#define SO_SYNCHRONOUS_NONALERT 0x20
408
409/*
410 * Other NT-specific options.
411 */
412#define SO_MAXDG 0x7009
413#define SO_MAXPATHDG 0x700A
414
415/*
416 * TCP options.
417 */
418#define TCP_NODELAY 0x0001
419#define TCP_BSDURGENT 0x7000
420
421/*
422 * Address families.
423 */
424#define AF_UNSPEC 0 /* unspecified */
425#define AF_UNIX 1 /* local to host (pipes, portals) */
426#define AF_INET 2 /* internetwork: UDP, TCP, etc. */
427#define AF_IMPLINK 3 /* arpanet imp addresses */
428#define AF_PUP 4 /* pup protocols: e.g. BSP */
429#define AF_CHAOS 5 /* mit CHAOS protocols */
430#define AF_IPX 6 /* IPX and SPX */
431#define AF_NS 6 /* XEROX NS protocols */
432#define AF_ISO 7 /* ISO protocols */
433#define AF_OSI AF_ISO /* OSI is ISO */
434#define AF_ECMA 8 /* european computer manufacturers */
435#define AF_DATAKIT 9 /* datakit protocols */
436#define AF_CCITT 10 /* CCITT protocols, X.25 etc */
437#define AF_SNA 11 /* IBM SNA */
438#define AF_DECnet 12 /* DECnet */
439#define AF_DLI 13 /* Direct data link interface */
440#define AF_LAT 14 /* LAT */
441#define AF_HYLINK 15 /* NSC Hyperchannel */
442#define AF_APPLETALK 16 /* AppleTalk */
443#define AF_NETBIOS 17 /* NetBios-style addresses */
444#define AF_VOICEVIEW 18 /* VoiceView */
445
446#define AF_MAX 19
447
448/*
449 * Structure used by kernel to store most
450 * addresses.
451 */
452struct sockaddr {
453 u_short sa_family; /* address family */
454 char sa_data[14]; /* up to 14 bytes of direct address */
455};
456
457/*
458 * Structure used by kernel to pass protocol
459 * information in raw sockets.
460 */
461struct sockproto {
462 u_short sp_family; /* address family */
463 u_short sp_protocol; /* protocol */
464};
465
466/*
467 * Protocol families, same as address families for now.
468 */
469#define PF_UNSPEC AF_UNSPEC
470#define PF_UNIX AF_UNIX
471#define PF_INET AF_INET
472#define PF_IMPLINK AF_IMPLINK
473#define PF_PUP AF_PUP
474#define PF_CHAOS AF_CHAOS
475#define PF_NS AF_NS
476#define PF_IPX AF_IPX
477#define PF_ISO AF_ISO
478#define PF_OSI AF_OSI
479#define PF_ECMA AF_ECMA
480#define PF_DATAKIT AF_DATAKIT
481#define PF_CCITT AF_CCITT
482#define PF_SNA AF_SNA
483#define PF_DECnet AF_DECnet
484#define PF_DLI AF_DLI
485#define PF_LAT AF_LAT
486#define PF_HYLINK AF_HYLINK
487#define PF_APPLETALK AF_APPLETALK
488#define PF_VOICEVIEW AF_VOICEVIEW
489
490#define PF_MAX AF_MAX
491
492/*
493 * Structure used for manipulating linger option.
494 */
495struct linger {
496 u_short l_onoff; /* option on/off */
497 u_short l_linger; /* linger time */
498};
499
500/*
501 * Level number for (get/set)sockopt() to apply to socket itself.
502 */
503#define SOL_SOCKET 0xffff /* options for socket level */
504
505/*
506 * Maximum queue length specifiable by listen.
507 */
508#define SOMAXCONN 5
509
510#define MSG_OOB 0x1 /* process out-of-band data */
511#define MSG_PEEK 0x2 /* peek at incoming message */
512#define MSG_DONTROUTE 0x4 /* send without using routing tables */
513
514#define MSG_MAXIOVLEN 16
515
516#define MSG_PARTIAL 0x8000 /* partial send or recv for message xport */
517
518/*
519 * Define constant based on rfc883, used by gethostbyxxxx() calls.
520 */
521#define MAXGETHOSTSTRUCT 1024
522
523/*
524 * Define flags to be used with the WSAAsyncSelect() call.
525 */
526#define FD_READ 0x01
527#define FD_WRITE 0x02
528#define FD_OOB 0x04
529#define FD_ACCEPT 0x08
530#define FD_CONNECT 0x10
531#define FD_CLOSE 0x20
532
533/*
534 * All Windows Sockets error constants are biased by WSABASEERR from
535 * the "normal"
536 */
537#define WSABASEERR 10000
538/*
539 * Windows Sockets definitions of regular Microsoft C error constants
540 */
541#define WSAEINTR (WSABASEERR+4)
542#define WSAEBADF (WSABASEERR+9)
543#define WSAEACCES (WSABASEERR+13)
544#define WSAEFAULT (WSABASEERR+14)
545#define WSAEINVAL (WSABASEERR+22)
546#define WSAEMFILE (WSABASEERR+24)
547
548/*
549 * Windows Sockets definitions of regular Berkeley error constants
550 */
551#define WSAEWOULDBLOCK (WSABASEERR+35)
552#define WSAEINPROGRESS (WSABASEERR+36)
553#define WSAEALREADY (WSABASEERR+37)
554#define WSAENOTSOCK (WSABASEERR+38)
555#define WSAEDESTADDRREQ (WSABASEERR+39)
556#define WSAEMSGSIZE (WSABASEERR+40)
557#define WSAEPROTOTYPE (WSABASEERR+41)
558#define WSAENOPROTOOPT (WSABASEERR+42)
559#define WSAEPROTONOSUPPORT (WSABASEERR+43)
560#define WSAESOCKTNOSUPPORT (WSABASEERR+44)
561#define WSAEOPNOTSUPP (WSABASEERR+45)
562#define WSAEPFNOSUPPORT (WSABASEERR+46)
563#define WSAEAFNOSUPPORT (WSABASEERR+47)
564#define WSAEADDRINUSE (WSABASEERR+48)
565#define WSAEADDRNOTAVAIL (WSABASEERR+49)
566#define WSAENETDOWN (WSABASEERR+50)
567#define WSAENETUNREACH (WSABASEERR+51)
568#define WSAENETRESET (WSABASEERR+52)
569#define WSAECONNABORTED (WSABASEERR+53)
570#define WSAECONNRESET (WSABASEERR+54)
571#define WSAENOBUFS (WSABASEERR+55)
572#define WSAEISCONN (WSABASEERR+56)
573#define WSAENOTCONN (WSABASEERR+57)
574#define WSAESHUTDOWN (WSABASEERR+58)
575#define WSAETOOMANYREFS (WSABASEERR+59)
576#define WSAETIMEDOUT (WSABASEERR+60)
577#define WSAECONNREFUSED (WSABASEERR+61)
578#define WSAELOOP (WSABASEERR+62)
579#define WSAENAMETOOLONG (WSABASEERR+63)
580#define WSAEHOSTDOWN (WSABASEERR+64)
581#define WSAEHOSTUNREACH (WSABASEERR+65)
582#define WSAENOTEMPTY (WSABASEERR+66)
583#define WSAEPROCLIM (WSABASEERR+67)
584#define WSAEUSERS (WSABASEERR+68)
585#define WSAEDQUOT (WSABASEERR+69)
586#define WSAESTALE (WSABASEERR+70)
587#define WSAEREMOTE (WSABASEERR+71)
588
589#define WSAEDISCON (WSABASEERR+101)
590
591/*
592 * Extended Windows Sockets error constant definitions
593 */
594#define WSASYSNOTREADY (WSABASEERR+91)
595#define WSAVERNOTSUPPORTED (WSABASEERR+92)
596#define WSANOTINITIALISED (WSABASEERR+93)
597
598/*
599 * Error return codes from gethostbyname() and gethostbyaddr()
600 * (when using the resolver). Note that these errors are
601 * retrieved via WSAGetLastError() and must therefore follow
602 * the rules for avoiding clashes with error numbers from
603 * specific implementations or language run-time systems.
604 * For this reason the codes are based at WSABASEERR+1001.
605 * Note also that [WSA]NO_ADDRESS is defined only for
606 * compatibility purposes.
607 */
608
609#define h_errno WSAGetLastError()
610
611/* Authoritative Answer: Host not found */
612#define WSAHOST_NOT_FOUND (WSABASEERR+1001)
613#define HOST_NOT_FOUND WSAHOST_NOT_FOUND
614
615/* Non-Authoritative: Host not found, or SERVERFAIL */
616#define WSATRY_AGAIN (WSABASEERR+1002)
617#define TRY_AGAIN WSATRY_AGAIN
618
619/* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
620#define WSANO_RECOVERY (WSABASEERR+1003)
621#define NO_RECOVERY WSANO_RECOVERY
622
623/* Valid name, no data record of requested type */
624#define WSANO_DATA (WSABASEERR+1004)
625#define NO_DATA WSANO_DATA
626
627/* no address, look for MX record */
628#define WSANO_ADDRESS WSANO_DATA
629#define NO_ADDRESS WSANO_ADDRESS
630
631/*
632 * Windows Sockets errors redefined as regular Berkeley error constants.
633 * These are commented out in Windows NT to avoid conflicts with errno.h.
634 * Use the WSA constants instead.
635 */
636#if 0
637#define EWOULDBLOCK WSAEWOULDBLOCK
638#define EINPROGRESS WSAEINPROGRESS
639#define EALREADY WSAEALREADY
640#define ENOTSOCK WSAENOTSOCK
641#define EDESTADDRREQ WSAEDESTADDRREQ
642#define EMSGSIZE WSAEMSGSIZE
643#define EPROTOTYPE WSAEPROTOTYPE
644#define ENOPROTOOPT WSAENOPROTOOPT
645#define EPROTONOSUPPORT WSAEPROTONOSUPPORT
646#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT
647#define EOPNOTSUPP WSAEOPNOTSUPP
648#define EPFNOSUPPORT WSAEPFNOSUPPORT
649#define EAFNOSUPPORT WSAEAFNOSUPPORT
650#define EADDRINUSE WSAEADDRINUSE
651#define EADDRNOTAVAIL WSAEADDRNOTAVAIL
652#define ENETDOWN WSAENETDOWN
653#define ENETUNREACH WSAENETUNREACH
654#define ENETRESET WSAENETRESET
655#define ECONNABORTED WSAECONNABORTED
656#define ECONNRESET WSAECONNRESET
657#define ENOBUFS WSAENOBUFS
658#define EISCONN WSAEISCONN
659#define ENOTCONN WSAENOTCONN
660#define ESHUTDOWN WSAESHUTDOWN
661#define ETOOMANYREFS WSAETOOMANYREFS
662#define ETIMEDOUT WSAETIMEDOUT
663#define ECONNREFUSED WSAECONNREFUSED
664#define ELOOP WSAELOOP
665#define ENAMETOOLONG WSAENAMETOOLONG
666#define EHOSTDOWN WSAEHOSTDOWN
667#define EHOSTUNREACH WSAEHOSTUNREACH
668#define ENOTEMPTY WSAENOTEMPTY
669#define EPROCLIM WSAEPROCLIM
670#define EUSERS WSAEUSERS
671#define EDQUOT WSAEDQUOT
672#define ESTALE WSAESTALE
673#define EREMOTE WSAEREMOTE
674#endif
675
676/* Socket function prototypes */
677
678#ifdef __cplusplus
679extern "C" {
680#endif
681
682SOCKET PASCAL FAR accept (SOCKET s, struct sockaddr FAR *addr,
683 int FAR *addrlen);
684
685int PASCAL FAR bind (SOCKET s, const struct sockaddr FAR *addr, int namelen);
686
687int PASCAL FAR closesocket (SOCKET s);
688
689int PASCAL FAR connect (SOCKET s, const struct sockaddr FAR *name, int namelen);
690
691int PASCAL FAR ioctlsocket (SOCKET s, long cmd, u_long FAR *argp);
692
693int PASCAL FAR getpeername (SOCKET s, struct sockaddr FAR *name,
694 int FAR * namelen);
695
696int PASCAL FAR getsockname (SOCKET s, struct sockaddr FAR *name,
697 int FAR * namelen);
698
699int PASCAL FAR getsockopt (SOCKET s, int level, int optname,
700 char FAR * optval, int FAR *optlen);
701
702u_long PASCAL FAR htonl (u_long hostlong);
703
704u_short PASCAL FAR htons (u_short hostshort);
705
706unsigned long PASCAL FAR inet_addr (const char FAR * cp);
707
708char FAR * PASCAL FAR inet_ntoa (struct in_addr in);
709
710int PASCAL FAR listen (SOCKET s, int backlog);
711
712u_long PASCAL FAR ntohl (u_long netlong);
713
714u_short PASCAL FAR ntohs (u_short netshort);
715
716int PASCAL FAR recv (SOCKET s, char FAR * buf, int len, int flags);
717
718int PASCAL FAR recvfrom (SOCKET s, char FAR * buf, int len, int flags,
719 struct sockaddr FAR *from, int FAR * fromlen);
720
721#if 0
722int PASCAL FAR select (int nfds, fd_set FAR *readfds, fd_set FAR *writefds,
723 fd_set FAR *exceptfds, const struct timeval FAR *timeout);
724#endif
725
726int PASCAL FAR send (SOCKET s, const char FAR * buf, int len, int flags);
727
728int PASCAL FAR sendto (SOCKET s, const char FAR * buf, int len, int flags,
729 const struct sockaddr FAR *to, int tolen);
730
731int PASCAL FAR setsockopt (SOCKET s, int level, int optname,
732 const char FAR * optval, int optlen);
733
734int PASCAL FAR shutdown (SOCKET s, int how);
735
736SOCKET PASCAL FAR socket (int af, int type, int protocol);
737
738/* Database function prototypes */
739
740struct hostent FAR * PASCAL FAR gethostbyaddr(const char FAR * addr,
741 int len, int type);
742
743struct hostent FAR * PASCAL FAR gethostbyname(const char FAR * name);
744
745int PASCAL FAR gethostname (char FAR * name, int namelen);
746
747struct servent FAR * PASCAL FAR getservbyport(int port, const char FAR * proto);
748
749struct servent FAR * PASCAL FAR getservbyname(const char FAR * name,
750 const char FAR * proto);
751
752struct protoent FAR * PASCAL FAR getprotobynumber(int proto);
753
754struct protoent FAR * PASCAL FAR getprotobyname(const char FAR * name);
755
756#ifdef __cplusplus
757}
758#endif
759
760/* Microsoft Windows Extended data types */
761typedef struct sockaddr SOCKADDR;
762typedef struct sockaddr *PSOCKADDR;
763typedef struct sockaddr FAR *LPSOCKADDR;
764
765typedef struct sockaddr_in SOCKADDR_IN;
766typedef struct sockaddr_in *PSOCKADDR_IN;
767typedef struct sockaddr_in FAR *LPSOCKADDR_IN;
768
769typedef struct linger LINGER;
770typedef struct linger *PLINGER;
771typedef struct linger FAR *LPLINGER;
772
773typedef struct in_addr IN_ADDR;
774typedef struct in_addr *PIN_ADDR;
775typedef struct in_addr FAR *LPIN_ADDR;
776
777typedef struct fd_set FD_SET;
778typedef struct fd_set *PFD_SET;
779typedef struct fd_set FAR *LPFD_SET;
780
781typedef struct hostent HOSTENT;
782typedef struct hostent *PHOSTENT;
783typedef struct hostent FAR *LPHOSTENT;
784
785typedef struct servent SERVENT;
786typedef struct servent *PSERVENT;
787typedef struct servent FAR *LPSERVENT;
788
789typedef struct protoent PROTOENT;
790typedef struct protoent *PPROTOENT;
791typedef struct protoent FAR *LPPROTOENT;
792
793typedef struct timeval TIMEVAL;
794typedef struct timeval *PTIMEVAL;
795typedef struct timeval FAR *LPTIMEVAL;
796
797#endif /* _WINSOCKAPI_ */