/
driver3.2@242/autoconf/
driver3.2@242/doc/LPC/
driver3.2@242/hosts/
driver3.2@242/hosts/amiga/NetIncl/
driver3.2@242/hosts/amiga/NetIncl/netinet/
driver3.2@242/hosts/amiga/NetIncl/sys/
driver3.2@242/hosts/atari/
driver3.2@242/hosts/fcrypt/
driver3.2@242/mudlib/
driver3.2@242/mudlib/sys/
driver3.2@242/util/
driver3.2@242/util/indent/hosts/next/
driver3.2@242/util/make_docs/
#ifndef SOCKET_TCP_H
#define SOCKET_TCP_H

#include <exec/types.h>
#include <sys/types.h>
#include <sys/errno.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

#include "hosts/amiga/socket_sim_protos.h"

#define SOCKET_T int
#define socket_number(s) (s)

#ifdef AMITCP
#include <clib/socket_protos.h>

extern struct Library *SocketBase;

  /* At least DICE doesn't do recursive macro expansion... */
#define socket_close(s)       if (SocketBase) close(s); else sim_close(s)
#define socket_ioctl(s,t,u)   (SocketBase ? ioctl(s,t,u,0)        : 0                   )
#define socket_write(s,b,l)   (SocketBase ? write(s,b,l)          : sim_write(s,b,l)    )
#define socket_read(s,b,l)    (SocketBase ? read(s,b,l)           : sim_read(s,b,l)     )
#define socket_select(s,t,u,v,w) (SocketBase ? select(s,t,u,v,w) : sim_select(s,t,u,v,w))
#define shutdown(a,b)         (SocketBase ? shutdown(a,b)         : sim_shutdown(a,b)   )
#define socket(a,b,c)         (SocketBase ? socket(a,b,c)         : sim_socket(a,b,c)   )
#define accept(a,b,c)         (SocketBase ? accept(a,b,c)         : sim_accept(a,b,c)   )
#define bind(a,b,c)           (SocketBase ? bind(a,b,c)           : sim_bind(a,b,c)     )
#define gethostbyname(c)      (SocketBase ? gethostbyname(c)      : sim_gethostbyname(c))
#define gethostname(c,l)      (SocketBase ? gethostname(c,l)      : sim_gethostname(c,l))
#define setsockopt(s,a,b,c,d) (SocketBase ? setsockopt(s,a,b,c,d) : 0                   )
#define listen(s,q)           (SocketBase ? listen(s,q)           : 0                   )
#define recvfrom(s,b,c,f,a,l) (SocketBase ? recvfrom(s,b,c,f,a,l) : -1                  )
#define sendto(s,m,n,f,a,l)   (SocketBase ? sendto(s,m,n,f,a,l)   : -1                  )
#define inet_addr(a)          (SocketBase ? inet_addr(a)          : sim_inet_addr(a)    )
#define inet_ntoa(a)          (SocketBase ? Inet_NtoA(a)          : sim_inet_ntoa(a)    )

#define ntohl(x) (x)

#endif /* AMITCP */

#ifdef AS225
extern struct Library *SockBase;

#define socket_close(s)       if (SockBase) s_close(s); else sim_close(s)
#define socket_ioctl(s,t,u)   (SockBase ? s_ioctl(s,t,u,0)      : 0                   )
#define socket_write(s,b,l)   (SockBase ? send(s,b,l,0)         : sim_write(s,b,l)    )
#define socket_read(s,b,l)    (SockBase ? recv(s,b,l,0)         : sim_read(s,b,l)     )
#define socket_select(s,t,u,v,w) (SockBase ? select(s,t,u,v,w) : sim_select(s,t,u,v,w))
#define shutdown(a,b)         (SockBase ? shutdown(a,b)         : sim_shutdown(a,b)   )
#define socket(a,b,c)         (SockBase ? socket(a,b,c)         : sim_socket(a,b,c)   )
#define accept(a,b,c)         (SockBase ? accept(a,b,c)         : sim_accept(a,b,c)   )
#define bind(a,b,c)           (SockBase ? bind(a,b,c)           : sim_bind(a,b,c)     )
#define gethostbyname(c)      (SockBase ? gethostbyname(c)      : sim_gethostbyname(c))
#define gethostname(c,l)      (SockBase ? gethostname(c,l)      : sim_gethostname(c,l))
#define setsockopt(s,a,b,c,d) (SockBase ? setsockopt(s,a,b,c,d) : 0                   )
#define listen(s,q)           (SockBase ? listen(s,q)           : 0                   )
#define recvfrom(s,b,c,f,a,l) (SockBase ? recvfrom(s,b,c,f,a,l) : -1                  )
#define sendto(s,m,n,f,a,l)   (SockBase ? sendto(s,m,n,f,a,l)   : -1                  )
#define inet_addr(a)          (SockBase ? inet_addr(a)          : sim_inet_addr(a)    )
#define inet_ntoa(a)          (SockBase ? Inet_NtoA(a)          : sim_inet_ntoa(a)    )

#define ntohl(x) (x)

#endif

/* #define perror(str) printf("%s: %d %s\n", str, errno, strerror(errno)) */

#endif /* SOCKET_TCP_H */