]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/mac/macsock.h
more fixes to stream code: allow deriving from wxStreamBuffer and using custom
[wxWidgets.git] / include / wx / mac / macsock.h
index 5703eb5f004d44f305a19b4772824c4cee70d00e..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
-/*********************************************************************
-Project        :       GUSI                            -       Grand Unified Socket Interface
-File           :       GUSI.h                  -       Socket calls
-Author :       Matthias Neeracher
-Language       :       MPW C/C++
-*********************************************************************/
-
-#ifndef _GUSI_
-#define _GUSI_
-
-#ifdef __MWERKS__
-       #ifndef macintosh
-               #define macintosh 1
-       #endif
-#endif
-
-#ifdef macintosh
-#include <errno.h>
-#else
-#ifndef KERNEL
-extern int errno;                      /* global error number */
-#endif
-#endif
-
-#define        __P(protos)     protos          /* full-blown ANSI C */
-
-#define        EPERM                   1               /* Operation not permitted */
-/* MSL defines ENOMEM, EACCES, ENOENT, ENOSYS. We give in. */
-#ifndef ENOENT
-#define        ENOENT          2               /* No such file or directory */
-#endif
-#define        ESRCH                   3               /* No such process */
-#define        EINTR                   4               /* Interrupted system call */
-#define        EIO                     5               /* Input/output error */
-#define        ENXIO                   6               /* Device not configured */
-#define        E2BIG                   7               /* Argument list too long */
-#define        ENOEXEC         8               /* Exec format error */
-#define        EBADF                   9               /* Bad file descriptor */
-#define        ECHILD          10              /* No child processes */
-#define        EDEADLK         11              /* Resource deadlock avoided */
-                                       /* 11 was EAGAIN */
-#ifndef ENOMEM 
-#define        ENOMEM          12              /* Cannot allocate memory */
-#define        EACCES          13              /* Permission denied */
-#endif
-#define        EFAULT          14              /* Bad address */
-#ifndef _POSIX_SOURCE
-#define        ENOTBLK         15              /* Block device required */
-#define        EBUSY                   16              /* Device busy */
-#endif
-#define        EEXIST          17              /* File exists */
-#define        EXDEV                   18              /* Cross-device link */
-#define        ENODEV          19              /* Operation not supported by device */
-#define        ENOTDIR         20              /* Not a directory */
-#define        EISDIR          21              /* Is a directory */
-#define        EINVAL          22              /* Invalid argument */
-#define        ENFILE          23              /* Too many open files in system */
-#define        EMFILE          24              /* Too many open files */
-#define        ENOTTY          25              /* Inappropriate ioctl for device */
-#ifndef _POSIX_SOURCE
-#define        ETXTBSY         26              /* Text file busy */
-#endif
-#define        EFBIG                   27              /* File too large */
-#define        ENOSPC          28              /* No space left on device */
-#define        ESPIPE          29              /* Illegal seek */
-#define        EROFS                   30              /* Read-only file system */
-#define        EMLINK          31              /* Too many links */
-#define        EPIPE                   32              /* Broken pipe */
-
-#ifndef __MWERKS__
-/* math software */
-#define        EDOM                    33              /* Numerical argument out of domain */
-#define        ERANGE          34              /* Result too large */
-#endif
-
-/* non-blocking and interrupt i/o */
-#if defined(macintosh) 
-#ifndef EAGAIN
-#define EAGAIN                 11
-#endif
-#else
-#define        EAGAIN          35              /* Resource temporarily unavailable */
-#endif
-#define        EWOULDBLOCK     EAGAIN  /* Operation would block */
-#ifndef _POSIX_SOURCE
-/* Did I tell that MSL also occupies errnos 33-40? We give in. */
-#if ENOMEM==37
-#define        EINPROGRESS     136             /* Operation now in progress */
-#define        EALREADY                137             /* Operation already in progress */
-
-/* ipc/network software -- argument errors */
-#define        ENOTSOCK                138             /* Socket operation on non-socket */
-#define        EDESTADDRREQ    139             /* Destination address required */
-#define        EMSGSIZE                140             /* Message too long */
-#else
-#define        EINPROGRESS     36              /* Operation now in progress */
-#define        EALREADY                37              /* Operation already in progress */
-
-/* ipc/network software -- argument errors */
-#define        ENOTSOCK                38              /* Socket operation on non-socket */
-#define        EDESTADDRREQ    39              /* Destination address required */
-#define        EMSGSIZE                40              /* Message too long */
-#endif
-#define        EPROTOTYPE      41              /* Protocol wrong type for socket */
-#define        ENOPROTOOPT     42              /* Protocol not available */
-#define        EPROTONOSUPPORT 43              /* Protocol not supported */
-#define        ESOCKTNOSUPPORT 44              /* Socket type not supported */
-#define        EOPNOTSUPP              45              /* Operation not supported on socket */
-#define        EPFNOSUPPORT    46              /* Protocol family not supported */
-#define        EAFNOSUPPORT    47              /* Address family not supported by protocol family */
-#define        EADDRINUSE              48              /* Address already in use */
-#define        EADDRNOTAVAIL   49              /* Can't assign requested address */
-
-/* ipc/network software -- operational errors */
-#define        ENETDOWN                        50              /* Network is down */
-#define        ENETUNREACH             51              /* Network is unreachable */
-#define        ENETRESET               52              /* Network dropped connection on reset */
-#define        ECONNABORTED    53              /* Software caused connection abort */
-#define        ECONNRESET              54              /* Connection reset by peer */
-#define        ENOBUFS                 55              /* No buffer space available */
-#define        EISCONN                 56              /* Socket is already connected */
-#define        ENOTCONN                        57              /* Socket is not connected */
-#define        ESHUTDOWN               58              /* Can't send after socket shutdown */
-#define        ETOOMANYREFS    59              /* Too many references: can't splice */
-#define        ETIMEDOUT               60              /* Connection timed out */
-#define        ECONNREFUSED    61              /* Connection refused */
-
-#define        ELOOP                           62              /* Too many levels of symbolic links */
-#endif /* _POSIX_SOURCE */
-#define        ENAMETOOLONG    63              /* File name too long */
-
-/* should be rearranged */
-#ifndef _POSIX_SOURCE
-#define        EHOSTDOWN               64              /* Host is down */
-#define        EHOSTUNREACH    65              /* No route to host */
-#endif /* _POSIX_SOURCE */
-#define        ENOTEMPTY               66              /* Directory not empty */
-
-/* quotas & mush */
-#ifndef _POSIX_SOURCE
-#define        EPROCLIM                        67              /* Too many processes */
-#define        EUSERS                  68              /* Too many users */
-#define        EDQUOT                  69              /* Disc quota exceeded */
-
-/* Network File System */
-#define        ESTALE                  70              /* Stale NFS file handle */
-#define        EREMOTE                 71              /* Too many levels of remote in path */
-#define        EBADRPC                 72              /* RPC struct is bad */
-#define        ERPCMISMATCH    73              /* RPC version wrong */
-#define        EPROGUNAVAIL    74              /* RPC prog. not avail */
-#define        EPROGMISMATCH   75              /* Program version wrong */
-#define        EPROCUNAVAIL    76              /* Bad procedure for program */
-#endif /* _POSIX_SOURCE */
-
-#define        ENOLCK                  77              /* No locks available */
-
-#ifndef ENOSYS
-#define        ENOSYS                  78              /* Function not implemented */
-#endif
-
-#define        EFTYPE                  79              /* Inappropriate file type or format */
-
-#ifdef KERNEL
-/* pseudo-errors returned inside kernel to modify return to process */
-#define        ERESTART        -1              /* restart syscall */
-#define        EJUSTRETURN     -2              /* don't modify regs, just return */
-#endif
-
-#define        NBBY    8               /* number of bits in a byte */
-
-/*
- * Select uses bit masks of file descriptors in longs.  These macros
- * manipulate such bit fields (the filesystem macros use chars).
- * FD_SETSIZE may be defined by the user, but the default here should
- * be enough for most uses.
- */
-#ifndef        FD_SETSIZE
-#ifdef macintosh
-#define        FD_SETSIZE      64
-#else
-#define        FD_SETSIZE      256
-#endif
-#endif
-
-typedef long   fd_mask;
-#define NFDBITS        (sizeof(fd_mask) * NBBY)        /* bits per mask */
-
-#ifndef howmany
-#define        howmany(x, y)   (((x)+((y)-1))/(y))
-#endif
-
-typedef        struct fd_set {
-       fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
-} fd_set;
-
-#define        FD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
-#define        FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
-#define        FD_ISSET(n, p)  ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
-#define        FD_ZERO(p)      bzero((char *)(p), sizeof(*(p)))
-
-// #include <sys/types.h>
-typedef        unsigned char   u_char;
-typedef        unsigned short  u_short;
-typedef        unsigned int    u_int;
-typedef        unsigned long   u_long;
-typedef        unsigned short  ushort;         /* Sys V compatibility */
-
-typedef        char *  caddr_t;                /* core address */
-typedef        long    daddr_t;                /* disk address */
-typedef        short   dev_t;                  /* device number */
-typedef        u_long  ino_t;                  /* inode number */
-typedef        long    off_t;                  /* file offset (should be a quad) */
-typedef        u_short nlink_t;                /* link count */
-typedef        long    swblk_t;                /* swap offset */
-typedef        long    segsz_t;                /* segment size */
-typedef        u_short uid_t;                  /* user id */
-typedef        u_short gid_t;                  /* group id */
-typedef        short   pid_t;                  /* process id */
-typedef        u_short mode_t;                 /* permissions */
-typedef u_long fixpt_t;                /* fixed point number */
-
-
-// Feel free to increase FD_SETSIZE as needed 
-#define GUSI_MAX_FD    FD_SETSIZE
-
-//#include <sys/cdefs.h>
-
-#ifndef macintosh
-#ifdef __MWERKS__
-#define macintosh 1
-#endif
-#endif
-
-#if defined(__cplusplus)
-#define        __BEGIN_DECLS   extern "C" {
-#define        __END_DECLS     }
-#else
-#define        __BEGIN_DECLS
-#define        __END_DECLS
-#endif
-
-//#include <compat.h>
-//#include <sys/ioctl.h>
-#define        IOCPARM_MASK    0x1fff          /* parameter length, at most 13 bits */
-#define        IOCPARM_LEN(x)  (((x) >> 16) & IOCPARM_MASK)
-#define        IOCBASECMD(x)   ((x) & ~IOCPARM_MASK)
-#define        IOCGROUP(x)     (((x) >> 8) & 0xff)
-
-#define        IOCPARM_MAX     NBPG            /* max size of ioctl, mult. of NBPG */
-#define        IOC_VOID        0x20000000      /* no parameters */
-#define        IOC_OUT         0x40000000      /* copy out parameters */
-#define        IOC_IN          0x80000000      /* copy in parameters */
-#define        IOC_INOUT       (IOC_IN|IOC_OUT)
-#define        IOC_DIRMASK     0xe0000000      /* mask for IN/OUT/VOID */
-
-#define _IOC(inout,group,num,len) \
-       (inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num))
-#define        _IO(g,n)        _IOC(IOC_VOID,  (g), (n), 0)
-#define        _IOR(g,n,t)     _IOC(IOC_OUT,   (g), (n), sizeof(t))
-#define        _IOW(g,n,t)     _IOC(IOC_IN,    (g), (n), sizeof(t))
-/* this should be _IORW, but stdio got there first */
-#define        _IOWR(g,n,t)    _IOC(IOC_INOUT, (g), (n), sizeof(t))
-
-#define        FIOCLEX         _IO('f', 1)             /* set close on exec on fd */
-#define        FIONCLEX        _IO('f', 2)             /* remove close on exec */
-#define        FIONREAD        _IOR('f', 127, int)     /* get # bytes to read */
-#define        FIONBIO         _IOW('f', 126, int)     /* set/clear non-blocking i/o */
-#define        FIOASYNC        _IOW('f', 125, int)     /* set/clear async i/o */
-#define        FIOSETOWN       _IOW('f', 124, int)     /* set owner */
-#define        FIOGETOWN       _IOR('f', 123, int)     /* get owner */
-
-__BEGIN_DECLS
-#ifdef macintosh
-int ioctl(int fildes, unsigned int cmd, unsigned long *arg);
-#else
-int    ioctl __P((int, unsigned long, ...));
-#endif
-__END_DECLS
-
-//#include <sys/fcntl.h>
-//#include <sys/stat.h>
-//#include <dirent.h>
-//#include <Types.h>
-//#include <Events.h>
-//#include <Files.h>
-//#include <AppleTalk.h>
-//#include <CTBUtilities.h>
-//#include <Packages.h>
-//#include <PPCToolBox.h>
-//#include <StandardFile.h>
-//#include <stdio.h>
-//#include <sys/time.h>
-
-
-/*
- * Definitions for byte order, according to byte significance from low
- * address to high.
- */
-#define        LITTLE_ENDIAN   1234    /* LSB first: i386, vax */
-#define        BIG_ENDIAN              4321    /* MSB first: 68000, ibm, net */
-#define        PDP_ENDIAN              3412    /* LSB first in word, MSW first in long */
-
-#define        BYTE_ORDER      BIG_ENDIAN
-
-__BEGIN_DECLS
-unsigned long  htonl (unsigned long);
-unsigned short htons (unsigned short);
-unsigned long  ntohl (unsigned long);
-unsigned short ntohs (unsigned short);
-__END_DECLS
-
-/*
- * Macros for network/external number representation conversion.
- */
-#if BYTE_ORDER == BIG_ENDIAN && !defined(lint)
-#define        ntohl(x)        (x)
-#define        ntohs(x)        (x)
-#define        htonl(x)        (x)
-#define        htons(x)        (x)
-
-#define        NTOHL(x)        (x)
-#define        NTOHS(x)        (x)
-#define        HTONL(x)        (x)
-#define        HTONS(x)        (x)
-
-#else
-
-#define        NTOHL(x)        (x) = ntohl((u_long)x)
-#define        NTOHS(x)        (x) = ntohs((u_short)x)
-#define        HTONL(x)        (x) = htonl((u_long)x)
-#define        HTONS(x)        (x) = htons((u_short)x)
-#endif
-
-
-
-/*
- * Constants and structures defined by the internet system,
- * Per RFC 790, September 1981.
- */
-
-/*
- * Protocols
- */
-#define        IPPROTO_IP              0               /* dummy for IP */
-#define        IPPROTO_ICMP    1               /* control message protocol */
-#define        IPPROTO_GGP             3               /* gateway^2 (deprecated) */
-#define        IPPROTO_TCP             6               /* tcp */
-#define        IPPROTO_EGP             8               /* exterior gateway protocol */
-#define        IPPROTO_PUP             12              /* pup */
-#define        IPPROTO_UDP             17              /* user datagram protocol */
-#define        IPPROTO_IDP             22              /* xns idp */
-#define        IPPROTO_TP              29      /* tp-4 w/ class negotiation */
-#define        IPPROTO_EON             80              /* ISO cnlp */
-
-#define        IPPROTO_RAW             255     /* raw IP packet */
-#define        IPPROTO_MAX             256
-
-
-/*
- * Local port number conventions:
- * Ports < IPPORT_RESERVED are reserved for
- * privileged processes (e.g. root).
- * Ports > IPPORT_USERRESERVED are reserved
- * for servers, not necessarily privileged.
- */
-#define        IPPORT_RESERVED         1024
-#define        IPPORT_USERRESERVED     5000
-
-/*
- * Internet address (a structure for historical reasons)
- */
-struct in_addr {
-       u_long s_addr;
-};
-
-/*
- * Definitions of bits in internet address integers.
- * On subnets, the decomposition of addresses to host and net parts
- * is done according to subnet mask, not the masks here.
- */
-#define        IN_CLASSA(i)            (((long)(i) & 0x80000000) == 0)
-#define        IN_CLASSA_NET           0xff000000
-#define        IN_CLASSA_NSHIFT        24
-#define        IN_CLASSA_HOST          0x00ffffff
-#define        IN_CLASSA_MAX           128
-
-#define        IN_CLASSB(i)            (((long)(i) & 0xc0000000) == 0x80000000)
-#define        IN_CLASSB_NET           0xffff0000
-#define        IN_CLASSB_NSHIFT        16
-#define        IN_CLASSB_HOST          0x0000ffff
-#define        IN_CLASSB_MAX           65536
-
-#define        IN_CLASSC(i)            (((long)(i) & 0xe0000000) == 0xc0000000)
-#define        IN_CLASSC_NET           0xffffff00
-#define        IN_CLASSC_NSHIFT        8
-#define        IN_CLASSC_HOST          0x000000ff
-
-#define        IN_CLASSD(i)            (((long)(i) & 0xf0000000) == 0xe0000000)
-#define        IN_MULTICAST(i)         IN_CLASSD(i)
-
-#define        IN_EXPERIMENTAL(i)      (((long)(i) & 0xe0000000) == 0xe0000000)
-#define        IN_BADCLASS(i)          (((long)(i) & 0xf0000000) == 0xf0000000)
-
-#define        INADDR_ANY              (u_long)0x00000000
-#define        INADDR_BROADCAST        (u_long)0xffffffff      /* must be masked */
-#ifndef KERNEL
-#define        INADDR_NONE             0xffffffff              /* -1 return */
-#endif
-
-#define        IN_LOOPBACKNET          127                     /* official! */
-
-/*
- * Socket address, internet style.
- */
-struct sockaddr_in {
-       u_char  sin_len;
-       u_char  sin_family;
-       u_short sin_port;
-       struct  in_addr sin_addr;
-       char            sin_zero[8];
-};
-
-/*
- * Structure used to describe IP options.
- * Used to store options internally, to pass them to a process,
- * or to restore options retrieved earlier.
- * The ip_dst is used for the first-hop gateway when using a source route
- * (this gets put into the header proper).
- */
-#ifdef __MWERKS__
-#pragma cplusplus off
-#endif
-struct ip_opts {
-       struct  in_addr ip_dst;         /* first hop, 0 w/o src rt */
-       char            ip_opts[40];            /* actually variable in size */
-};
-#ifdef __MWERKS__
-#pragma cplusplus reset
-#endif
-
-/*
- * Options for use with [gs]etsockopt at the IP level.
- * First word of comment is data type; bool is stored in int.
- */
-#define        IP_OPTIONS      1       /* buf/ip_opts; set/get IP per-packet options */
-#define        IP_HDRINCL      2       /* int; header is included with data (raw) */
-#define        IP_TOS          3       /* int; IP type of service and precedence */
-#define        IP_TTL          4       /* int; IP time to live */
-#define        IP_RECVOPTS     5       /* bool; receive all IP options w/datagram */
-#define        IP_RECVRETOPTS  6       /* bool; receive IP options for response */
-#define        IP_RECVDSTADDR  7       /* bool; receive IP dst addr w/datagram */
-#define        IP_RETOPTS      8       /* ip_opts; set/get IP per-packet options */
-
-/*
- * Structure returned by gettimeofday(2) system call,
- * and used in other calls.
- */
-struct timeval {
-       long    tv_sec;         /* seconds */
-       long    tv_usec;                /* and microseconds */
-};
-
-struct timezone {
-       int     tz_minuteswest; /* minutes west of Greenwich */
-       int     tz_dsttime;                     /* type of dst correction */
-};
-#define        DST_NONE                0       /* not on dst */
-#define        DST_USA         1       /* USA style dst */
-#define        DST_AUST                2       /* Australian style dst */
-#define        DST_WET         3       /* Western European dst */
-#define        DST_MET         4       /* Middle European dst */
-#define        DST_EET         5       /* Eastern European dst */
-#define        DST_CAN         6       /* Canada */
-//#include <sys/socket.h>
-
-/*
- * Definitions related to sockets: types, address families, options.
- */
-
-/*
- * Types
- */
-#define        SOCK_STREAM             1               /* stream socket */
-#define        SOCK_DGRAM              2               /* datagram socket */
-#define        SOCK_RAW                        3               /* raw-protocol interface */
-#define        SOCK_RDM                        4               /* reliably-delivered message */
-#define        SOCK_SEQPACKET  5               /* sequenced packet stream */
-
-/*
- * Option flags per-socket.
- */
-#define        SO_DEBUG                        0x0001          /* turn on debugging info recording */
-#define        SO_ACCEPTCONN   0x0002          /* socket has had listen() */
-#define        SO_REUSEADDR    0x0004          /* allow local address reuse */
-#define        SO_KEEPALIVE    0x0008          /* keep connections alive */
-#define        SO_DONTROUTE    0x0010          /* just use interface addresses */
-#define        SO_BROADCAST    0x0020          /* permit sending of broadcast msgs */
-#define        SO_USELOOPBACK  0x0040          /* bypass hardware when possible */
-#define        SO_LINGER               0x0080          /* linger on close if data present */
-#define        SO_OOBINLINE    0x0100          /* leave received OOB data in line */
-
-/*
- * Additional options, not kept in so_options.
- */
-#define SO_SNDBUF              0x1001          /* send buffer size */
-#define SO_RCVBUF              0x1002          /* receive buffer size */
-#define SO_SNDLOWAT    0x1003          /* send low-water mark */
-#define SO_RCVLOWAT    0x1004          /* receive low-water mark */
-#define SO_SNDTIMEO    0x1005          /* send timeout */
-#define SO_RCVTIMEO    0x1006          /* receive timeout */
-#define        SO_ERROR                0x1007          /* get error status and clear */
-#define        SO_TYPE         0x1008          /* get socket type */
-
-/*
- * Structure used for manipulating linger option.
- */
-struct linger {
-       int     l_onoff;                        /* option on/off */
-       int     l_linger;               /* linger time */
-};
-
-/*
- * Level number for (get/set)sockopt() to apply to socket itself.
- */
-#define        SOL_SOCKET      0xffff          /* options for socket level */
-
-/*
- * Address families.
- */
-#ifdef macintosh
-#define        AF_UNSPEC                0              /* unspecified                                                                  */
-#define        AF_UNIX                  1              /* local to host (pipes, portals)                       */
-#define        AF_INET                  2              /* internetwork: UDP, TCP, etc.                                 */
-#define        AF_CTB                   3              /* Apple Comm Toolbox (not yet supported) */
-#define        AF_FILE                  4              /* Normal File I/O (used internally)            */
-#define        AF_PPC                   5              /* PPC Toolbox                                                                          */
-#define        AF_PAP                   6              /* Printer Access Protocol (client only)        */
-#define        AF_APPLETALK    16              /* Apple Talk                                                                           */
-
-#define        AF_MAX          20
-#else
-#define        ATALK_SYMADDR 272               /* Symbolic Address for AppleTalk                       */
-#define        AF_UNSPEC       0               /* unspecified */
-#define        AF_UNIX         1               /* local to host (pipes, portals) */
-#define        AF_INET         2               /* internetwork: UDP, TCP, etc. */
-#define        AF_IMPLINK      3               /* arpanet imp addresses */
-#define        AF_PUP          4               /* pup protocols: e.g. BSP */
-#define        AF_CHAOS                5               /* mit CHAOS protocols */
-#define        AF_NS                   6               /* XEROX NS protocols */
-#define        AF_ISO          7               /* ISO protocols */
-#define        AF_OSI          AF_ISO
-#define        AF_ECMA         8               /* european computer manufacturers */
-#define        AF_DATAKIT      9               /* datakit protocols */
-#define        AF_CCITT                10              /* CCITT protocols, X.25 etc */
-#define        AF_SNA          11              /* IBM SNA */
-#define AF_DECnet              12              /* DECnet */
-#define AF_DLI                 13              /* DEC Direct data link interface */
-#define AF_LAT                 14              /* LAT */
-#define        AF_HYLINK       15              /* NSC Hyperchannel */
-#define        AF_APPLETALK16          /* Apple Talk */
-#define        AF_ROUTE                17              /* Internal Routing Protocol */
-#define        AF_LINK         18              /* Link layer interface */
-#define        pseudo_AF_XTP   19              /* eXpress Transfer Protocol (no AF) */
-
-#define        AF_MAX          20
-#endif
-
-/*
- * Structure used by kernel to store most
- * addresses.
- */
-#if defined(powerc) || defined (__powerc)
-#pragma options align=mac68k
-#endif
-struct sockaddr {
-       u_char  sa_len;                 /* total length */
-       u_char  sa_family;              /* address family */
-       char    sa_data[14];            /* actually longer; address value */
-};
-#if defined(powerc) || defined (__powerc)
-#pragma options align=reset
-#endif
-
-/*
- * Structure used by kernel to pass protocol
- * information in raw sockets.
- */
-struct sockproto {
-       u_short sp_family;              /* address family */
-       u_short sp_protocol;            /* protocol */
-};
-
-/*
- * Protocol families, same as address families for now.
- */
-#ifdef macintosh
-#define        PF_UNSPEC                AF_UNSPEC              /* unspecified                                                                  */
-#define        PF_UNIX                  AF_UNIX                        /* local to host (pipes, portals)                       */
-#define        PF_INET                  AF_INET                        /* internetwork: UDP, TCP, etc.                                 */
-#define        PF_CTB                   AF_CTB                 /* Apple Comm Toolbox (not yet supported) */
-#define        PF_FILE                  AF_FILE                        /* Normal File I/O (used internally)            */
-#define        PF_PPC                   AF_PPC                 /* PPC Toolbox                                                                          */
-#define        PF_PAP                   AF_PAP                 /* Printer Access Protocol (client only)        */
-#define        PF_APPLETALK     AF_APPLETALK   /* Apple Talk                                                                           */
-#else
-#define        PF_UNSPEC       AF_UNSPEC
-#define        PF_UNIX         AF_UNIX
-#define        PF_INET         AF_INET
-#define        PF_IMPLINK      AF_IMPLINK
-#define        PF_PUP          AF_PUP
-#define        PF_CHAOS                AF_CHAOS
-#define        PF_NS                   AF_NS
-#define        PF_ISO          AF_ISO
-#define        PF_OSI          AF_ISO
-#define        PF_ECMA         AF_ECMA
-#define        PF_DATAKIT      AF_DATAKIT
-#define        PF_CCITT                AF_CCITT
-#define        PF_SNA          AF_SNA
-#define PF_DECnet              AF_DECnet
-#define PF_DLI                 AF_DLI
-#define PF_LAT                 AF_LAT
-#define        PF_HYLINK       AF_HYLINK
-#define        PF_APPLETALK    AF_APPLETALK
-#define        PF_ROUTE                AF_ROUTE
-#define        PF_LINK         AF_LINK
-#define        PF_XTP          pseudo_AF_XTP   /* really just proto family, no AF */
-#endif
-
-#define        PF_MAX          AF_MAX
-
-/*
- * Maximum queue length specifiable by listen.
- */
-#define        SOMAXCONN       5
-
-/*
- * Message header for recvmsg and sendmsg calls.
- * Used value-result for recvmsg, value only for sendmsg.
- */
-struct msghdr {
-       caddr_t msg_name;               /* optional address */
-       u_int           msg_namelen;            /* size of address */
-       struct  iovec *msg_iov;         /* scatter/gather array */
-       u_int           msg_iovlen;             /* # elements in msg_iov */
-       caddr_t msg_control;            /* ancillary data, see below */
-       u_int           msg_controllen;         /* ancillary data buffer len */
-       int             msg_flags;              /* flags on received message */
-};
-
-#define        MSG_OOB                 0x1             /* process out-of-band data */
-#define        MSG_PEEK                        0x2             /* peek at incoming message */
-#define        MSG_DONTROUTE   0x4             /* send without using routing tables */
-#define        MSG_EOR                 0x8             /* data completes record */
-#define        MSG_TRUNC               0x10            /* data discarded before delivery */
-#define        MSG_CTRUNC              0x20            /* control data lost before delivery */
-#define        MSG_WAITALL             0x40            /* wait for full request or error */
-
-/*
- * Header for ancillary data objects in msg_control buffer.
- * Used for additional information with/about a datagram
- * not expressible by flags.  The format is a sequence
- * of message elements headed by cmsghdr structures.
- */
-struct cmsghdr {
-       u_int   cmsg_len;               /* data byte count, including hdr */
-       int     cmsg_level;             /* originating protocol */
-       int     cmsg_type;              /* protocol-specific type */
-/* followed by u_char  cmsg_data[]; */
-};
-
-/* given pointer to struct adatahdr, return pointer to data */
-#define        CMSG_DATA(cmsg)         ((u_char *)((cmsg) + 1))
-
-/* given pointer to struct adatahdr, return pointer to next adatahdr */
-#define        CMSG_NXTHDR(mhdr, cmsg) \
-       (((caddr_t)(cmsg) + (cmsg)->cmsg_len + sizeof(struct cmsghdr) > \
-           (mhdr)->msg_control + (mhdr)->msg_controllen) ? \
-           (struct cmsghdr *)NULL : \
-           (struct cmsghdr *)((caddr_t)(cmsg) + ALIGN((cmsg)->cmsg_len)))
-
-#define        CMSG_FIRSTHDR(mhdr)     ((struct cmsghdr *)(mhdr)->msg_control)
-
-/* "Socket"-level control message types: */
-#define        SCM_RIGHTS      0x01            /* access rights (array of int) */
-
-/*
- * 4.3 compat sockaddr, move to compat file later
- */
-struct osockaddr {
-       u_short sa_family;                      /* address family */
-       char            sa_data[14];            /* up to 14 bytes of direct address */
-};
-
-/*
- * 4.3-compat message header (move to compat file later).
- */
-struct omsghdr {
-       caddr_t msg_name;                       /* optional address */
-       int             msg_namelen;            /* size of address */
-       struct  iovec *msg_iov; /* scatter/gather array */
-       int             msg_iovlen;                     /* # elements in msg_iov */
-       caddr_t msg_accrights;          /* access rights sent/received */
-       int             msg_accrightslen;
-};
-
-//#include <string.h>
-//#include <netinet/in.h>
-//#include <netdb.h>
-//#include <sys/un.h>
-//#include <unistd.h>
-//#include <machine/endian.h>
-//
-
-typedef enum spin_msg {
-       SP_MISC,                                /* some weird thing, usually just return immediately if you get this */
-       SP_SELECT,                      /* in a select call */
-       SP_NAME,                                /* getting a host by name */
-       SP_ADDR,                                /* getting a host by address */
-       SP_STREAM_READ, /* Stream read call */
-       SP_STREAM_WRITE,        /* Stream write call */
-       SP_DGRAM_READ,          /* Datagram read call */
-       SP_DGRAM_WRITE, /* Datagram write call */
-       SP_SLEEP,                       /* sleeping, passes ticks left to sleep */
-       SP_AUTO_SPIN            /* Autospin, passes argument to SpinCursor */
-} spin_msg;
-
-typedef int (*GUSISpinFn)(spin_msg msg, long param);
-typedef void (*GUSIEvtHandler)(EventRecord * ev);
-typedef GUSIEvtHandler GUSIEvtTable[24];
-
-/*
- * Address families, defined in sys/socket.h
- *
-#define        AF_UNSPEC                0              // unspecified
-#define        AF_UNIX                  1              // local to host (pipes, portals)
-#define        AF_INET                  2              // internetwork: UDP, TCP, etc.
-#define        AF_CTB                   3              // Apple Comm Toolbox (not yet supported)
-#define        AF_FILE                  4              // Normal File I/O (used internally)
-#define        AF_PPC                   5              // PPC Toolbox
-#define        AF_PAP                   6              // Printer Access Protocol (client only)
-#define        AF_APPLETALK    16              // Apple Talk
-
-*/
-
-#define        ATALK_SYMADDR 272               /* Symbolic Address for AppleTalk                       */
-
-/*
- * Some Implementations of GUSI require you to call GUSISetup for the
- * socket families you'd like to have defined. It's a good idea to call
- * this for *all* implementations.
- *
- * GUSIDefaultSetup() will include all socket families.
- *
- * Never call any of the GUSIwithXXX routines directly.
- */
-
-__BEGIN_DECLS
-void GUSIwithAppleTalkSockets();
-void GUSIwithInternetSockets();
-void GUSIwithPAPSockets();
-void GUSIwithPPCSockets();
-void GUSIwithUnixSockets();
-void GUSIwithSIOUXSockets();
-void GUSIwithMPWSockets();
-
-void GUSISetup(void (*socketfamily)());
-void GUSIDefaultSetup();
-__END_DECLS
-/*
- * Types,  defined in sys/socket.h
- *
-
-#define        SOCK_STREAM              1              // stream socket 
-#define        SOCK_DGRAM               2              // datagram socket
-
-*/
-
-/*
- * Defined in sys/un.h
- *
-struct sockaddr_un {
-       short           sun_family;
-       char            sun_path[108];
-};
-
-*/
-
-#ifndef PRAGMA_ALIGN_SUPPORTED
-#error Apple had some fun with the conditional macros again
-#endif
-
-#if PRAGMA_ALIGN_SUPPORTED
-#pragma options align=mac68k
-#endif
-
-/*
-struct sockaddr_atlk {
-       short                   family;
-       AddrBlock       addr;
-};
-
-struct sockaddr_atlk_sym {
-       short                   family;
-       EntityName      name;
-};
-
-struct sockaddr_ppc {
-       short                                   family;
-       LocationNameRec location;
-       PPCPortRec                      port;
-};
-
-// Definitions for choose() 
-
-#define        CHOOSE_DEFAULT  1               
-#define        CHOOSE_NEW              2               
-#define        CHOOSE_DIR              4               
-
-typedef struct {
-       short                   numTypes;
-       SFTypeList      types;
-} sa_constr_file;
-
-typedef struct {
-       short                   numTypes;
-       NLType          types;
-} sa_constr_atlk;
-
-
-// Definitions for sa_constr_ppc 
-
-#define PPC_CON_NEWSTYLE               0x8000  
-#define PPC_CON_MATCH_NAME             0x0001  
-#define PPC_CON_MATCH_TYPE     0x0002  
-#define PPC_CON_MATCH_NBP              0x0004  
-
-typedef struct {
-       short                   flags;
-       Str32                   nbpType;
-       PPCPortRec      match;
-} sa_constr_ppc;
-
-*/
-
-#if PRAGMA_ALIGN_SUPPORTED
-#pragma options align=reset
-#endif
-
-__BEGIN_DECLS
-/* 
- * IO/Socket stuff, defined elsewhere (unistd.h, sys/socket.h
- *
-*/
-int socket(int domain, int type, short protocol);
-int bind(int s, void *name, int namelen);
-int connect(int s, void *addr, int addrlen);
-int listen(int s, int qlen);
-int accept(int s, void *addr, int *addrlen);
-int close(int s);
-int read(int s, char *buffer, unsigned buflen);
-int readv(int s, struct iovec *iov, int count);
-int recv(int s, void *buffer, int buflen, int flags);
-int recvfrom(int s, void *buffer, int buflen, int flags, void *from, int *fromlen);
-int recvmsg(int s,struct msghdr *msg,int flags);
-int write(int s, const char *buffer, unsigned buflen);
-int writev(int s, struct iovec *iov, int count);
-int send(int s, void *buffer, int buflen, int flags);
-int sendto (int s, void *buffer, int buflen, int flags, void *to, int tolen);
-int sendmsg(int s,struct msghdr *msg,int flags);
-int select(int width, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
-int getdtablesize(void);
-int getsockname(int s, void *name, int *namelen);
-int getpeername(int s, struct sockaddr *name, int *namelen);
-int shutdown(int s, int how);
-int fcntl(int s, unsigned int cmd, int arg);
-int dup(int s);
-int dup2(int s, int s1);
-//int ioctl(int d, unsigned int request, long *argp);
-int getsockopt(int s, int level, int optname, char *optval, int * optlen);
-int setsockopt(int s, int level, int optname, char *optval, int optlen);
-int isatty(int);
-int remove(const char *filename);
-int rename(const char *oldname, const char *newname);
-int creat(const char*);
-int faccess(char*, unsigned int, long*);
-long lseek(int, long, int);
-int open(const char*, int);
-int unlink(char*);
-int symlink(char* linkto, char* linkname);
-int readlink(char* path, char* buf, int bufsiz);
-int truncate(char *path, long length);
-int ftruncate(int fd, long length);
-int chdir(char * path);
-int mkdir(char * path);
-int rmdir(char * path);
-char * getcwd(char * buf, int size);
-
-
-/* 
- * Defined in stdio.h
- */
-#ifdef __MWERKS__
-void fsetfileinfo (char *filename, unsigned long newcreator, unsigned long newtype);
-#endif
-
-void fgetfileinfo (char *filename, unsigned long * creator, unsigned long * type);
-
-#ifdef __MWERKS__
-FILE *fdopen(int fd, const char *mode);
-int fwalk(int (*func)(FILE * stream));
-#endif
-
-int choose(
-               int             domain,
-               int             type,
-               char *  prompt,
-               void *  constraint,
-               int             flags,
-               void *  name,
-               int *   namelen);
-
-/* 
- * Hostname routines, defined in netdb.h
- *
-*/ 
-
-/*
- * Structures returned by network data base library.  All addresses are
- * supplied in host order, and returned in network order (suitable for
- * use in system calls).
- */
-struct hostent {
-       char    *h_name;        /* official name of host */
-       char    **h_aliases;    /* alias list */
-       int     h_addrtype;     /* host address type */
-       int     h_length;       /* length of address */
-       char    **h_addr_list;  /* list of addresses from name server */
-#define        h_addr  h_addr_list[0]  /* address, for backward compatiblity */
-};
-
-/*
- * Assumption here is that a network number
- * fits in 32 bits -- probably a poor one.
- */
-struct netent {
-       char            *n_name;        /* official name of net */
-       char            **n_aliases;    /* alias list */
-       int             n_addrtype;     /* net address type */
-       unsigned long   n_net;          /* network # */
-};
-
-struct servent {
-       char    *s_name;        /* official service name */
-       char    **s_aliases;    /* alias list */
-       int     s_port;         /* port # */
-       char    *s_proto;       /* protocol to use */
-};
-
-struct protoent {
-       char    *p_name;        /* official protocol name */
-       char    **p_aliases;    /* alias list */
-       int     p_proto;        /* protocol # */
-};
-
-/*
- * Error return codes from gethostbyname() and gethostbyaddr()
- * (left in extern int h_errno).
- */
-
-#define        HOST_NOT_FOUND  1 /* Authoritative Answer Host not found */
-#define        TRY_AGAIN       2 /* Non-Authoritive Host not found, or SERVERFAIL */
-#define        NO_RECOVERY     3 /* Non recoverable errors, FORMERR, REFUSED, NOTIMP */
-#define        NO_DATA         4 /* Valid name, no data record of requested type */
-#define        NO_ADDRESS      NO_DATA         /* no address, look for MX record */
-
-int gethostname(char *machname, long buflen);
-
-void           endhostent __P((void));
-void           endnetent __P((void));
-void           endprotoent __P((void));
-void           endservent __P((void));
-struct hostent *gethostbyaddr __P((const char *, int, int));
-struct hostent *gethostbyname __P((const char *));
-struct hostent *gethostent __P((void));
-struct netent  *getnetbyaddr __P((long, int)); /* u_long? */
-struct netent  *getnetbyname __P((const char *));
-struct netent  *getnetent __P((void));
-struct protoent        *getprotobyname __P((const char *));
-struct protoent        *getprotobynumber __P((int));
-struct protoent        *getprotoent __P((void));
-struct servent *getservbyname __P((const char *, const char *));
-struct servent *getservbyport __P((int, const char *));
-struct servent *getservent __P((void));
-void           herror __P((const char *));
-void           sethostent __P((int));
-/* void                sethostfile __P((const char *)); */
-void           setnetent __P((int));
-void           setprotoent __P((int));
-void           setservent __P((int));
-
-
-char * inet_ntoa(struct in_addr inaddr);
-struct in_addr inet_addr(const char *address);
-
-/* 
- * GUSI supports a number of hooks. Every one of them has a different prototype, but needs
- * to be passed as a GUSIHook
- */
-
-typedef enum {
-       GUSI_SpinHook,  /* A GUSISpinFn, to be called when a call blocks */
-       GUSI_ExecHook, /* Boolean (*hook)(const GUSIFileRef & ref), decides if file is executable */
-       GUSI_FTypeHook,/* Boolean (*hook)(const FSSpec & spec) sets a default file type */
-       GUSI_SpeedHook /* A long integer, to be added to the cursor spin variable */
-} GUSIHookCode;
-
-typedef void (*GUSIHook)(void);
-void GUSISetHook(GUSIHookCode code, GUSIHook hook);
-GUSIHook GUSIGetHook(GUSIHookCode code);
-
-/* 
- * What to do when a routine blocks
- */
-
-/* Defined for compatibility */
-#define GUSISetSpin(routine)   GUSISetHook(GUSI_SpinHook, (GUSIHook)routine)
-#define GUSIGetSpin()                  (GUSISpinFn) GUSIGetHook(GUSI_SpinHook)
-
-int GUSISetEvents(GUSIEvtTable table);
-GUSIEvtHandler * GUSIGetEvents(void);
-
-extern GUSIEvtHandler  GUSISIOWEvents[];
-
-#define SIGPIPE        13
-#define SIGALRM        14
-
-/* 
- * BSD memory routines, defined in compat.h
- *
-*/
-#define index(a, b)                                            strchr(a, b)
-#define rindex(a, b)                                           strrchr(a, b)
-#define bzero(from, len)                               memset(from, 0, len)
-#define bcopy(from, to, len)                   memcpy(to, from, len)
-#define bcmp(s1, s2, len)                              memcmp(s1, s2, len)
-#define bfill(from, len, x)                    memset(from, x, len)
-
-
-__END_DECLS
-
-       typedef struct wxSockInternal 
-       {
-               long nothing ;
-       } ;
-