|
Packit |
f574b8 |
/* System dependencies in the W3 library
|
|
Packit |
f574b8 |
* $LynxId: www_tcp.h,v 1.59 2018/05/16 20:31:43 tom Exp $
|
|
Packit |
f574b8 |
*
|
|
Packit |
f574b8 |
SYSTEM DEPENDENCIES
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
System-system differences for TCP include files and macros. This
|
|
Packit |
f574b8 |
file includes for each system the files necessary for network and
|
|
Packit |
f574b8 |
file I/O. It should be used in conjunction with HTUtils.h to help
|
|
Packit |
f574b8 |
ensure portability across as many platforms and flavors of platforms
|
|
Packit |
f574b8 |
as possible.
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
AUTHORS
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
TBL Tim Berners-Lee, W3 project, CERN, <timbl@info.cern.ch>
|
|
Packit |
f574b8 |
EvA Eelco van Asperen <evas@cs.few.eur.nl>
|
|
Packit |
f574b8 |
MA Marc Andreessen NCSA
|
|
Packit |
f574b8 |
AT Aleksandar Totic <atotic@ncsa.uiuc.edu>
|
|
Packit |
f574b8 |
SCW Susan C. Weber <sweber@kyle.eitech.com>
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
HISTORY:
|
|
Packit |
f574b8 |
22 Feb 91 Written (TBL) as part of the WWW library.
|
|
Packit |
f574b8 |
16 Jan 92 PC code from EvA
|
|
Packit |
f574b8 |
22 Apr 93 Merged diffs bits from xmosaic release
|
|
Packit |
f574b8 |
29 Apr 93 Windows/NT code from SCW
|
|
Packit |
f574b8 |
20 May 94 A.Harper Add support for VMS CMU TCP/IP transport
|
|
Packit |
f574b8 |
3 Oct 94 A.Harper Add support for VMS SOCKETSHR/NETLIB
|
|
Packit |
f574b8 |
15 Jul 95 S. Bjorndahl Gnu C for VMS Globaldef/ref support
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef TCP_H
|
|
Packit |
f574b8 |
#define TCP_H
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
Default values
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
These values may be reset and altered by system-specific sections
|
|
Packit |
f574b8 |
later on. there are also a bunch of defaults at the end .
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
/* Default values of those: */
|
|
Packit |
f574b8 |
/* Routine to close a TCP-IP socket */
|
|
Packit |
f574b8 |
#define NETCLOSE close
|
|
Packit |
f574b8 |
/* Routine to read from a TCP-IP socket */
|
|
Packit |
f574b8 |
#define NETREAD(s,p,n) \
|
|
Packit |
f574b8 |
HTDoRead(s, p, (unsigned)(n))
|
|
Packit |
f574b8 |
/* Routine to write to a TCP-IP socket */
|
|
Packit |
f574b8 |
#define NETWRITE(s,p,n) write(s, p, (size_t)(n))
|
|
Packit |
f574b8 |
#define SOCKET_READ(s,b,l) read(s,b,(size_t)(l))
|
|
Packit |
f574b8 |
#define IOCTL(s,cmd,arg) ioctl(s,(long)(cmd),arg)
|
|
Packit |
f574b8 |
#define SOCKET_ERRNO errno /* normal socket errno */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* Unless stated otherwise, */
|
|
Packit |
f574b8 |
#define SELECT /* Can handle >1 channel. */
|
|
Packit |
f574b8 |
#define GOT_SYSTEM /* Can call shell with string */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef UNIX
|
|
Packit |
f574b8 |
#define GOT_PIPE
|
|
Packit |
f574b8 |
#endif /* UNIX */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define INVSOC (-1) /* Unix invalid socket */
|
|
Packit |
f574b8 |
/* NB: newer libwww has something different for Windows */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef VMS
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#include <sys/types.h>
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if defined(__BORLANDC__)
|
|
Packit |
f574b8 |
#define DECL_ERRNO
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if defined(__DJGPP__) || defined(__BORLANDC__)
|
|
Packit |
f574b8 |
#undef HAVE_DIRENT_H
|
|
Packit |
f574b8 |
#define HAVE_DIRENT_H
|
|
Packit |
f574b8 |
#undef HAVE_SYS_FILIO_H
|
|
Packit |
f574b8 |
#endif /* DJGPP or __BORLANDC__ */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if defined(_MSC_VER)
|
|
Packit |
f574b8 |
#undef HAVE_DIRENT_H
|
|
Packit |
f574b8 |
#define HAVE_DIRENT_H
|
|
Packit |
f574b8 |
#undef HAVE_SYS_FILIO_H
|
|
Packit |
f574b8 |
#endif /* _MSC_VER */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef HAVE_DIRENT_H
|
|
Packit |
f574b8 |
# include <dirent.h>
|
|
Packit |
f574b8 |
# define D_NAMLEN(dirent) strlen((dirent)->d_name)
|
|
Packit |
f574b8 |
# define STRUCT_DIRENT struct dirent
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
# define D_NAMLEN(dirent) (dirent)->d_namlen
|
|
Packit |
f574b8 |
# define STRUCT_DIRENT struct direct
|
|
Packit |
f574b8 |
# ifdef HAVE_SYS_NDIR_H
|
|
Packit |
f574b8 |
# include <sys/ndir.h>
|
|
Packit |
f574b8 |
# endif
|
|
Packit |
f574b8 |
# ifdef HAVE_SYS_DIR_H
|
|
Packit |
f574b8 |
# include <sys/dir.h>
|
|
Packit |
f574b8 |
# endif
|
|
Packit |
f574b8 |
# ifdef HAVE_NDIR_H
|
|
Packit |
f574b8 |
# include <ndir.h>
|
|
Packit |
f574b8 |
# endif
|
|
Packit |
f574b8 |
#endif /* HAVE_DIRENT_H */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef HAVE_STRUCT_DIRENT64
|
|
Packit |
f574b8 |
# undef STRUCT_DIRENT
|
|
Packit |
f574b8 |
# define STRUCT_DIRENT struct dirent64
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if !(defined(DOSPATH) || defined(__EMX__) || defined(__CYGWIN__))
|
|
Packit |
f574b8 |
#define STRUCT_DIRENT__D_INO 1
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#endif /* !VMS */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef TIME_WITH_SYS_TIME
|
|
Packit |
f574b8 |
# include <sys/time.h>
|
|
Packit |
f574b8 |
# include <time.h>
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
# ifdef HAVE_SYS_TIME_H
|
|
Packit |
f574b8 |
# include <sys/time.h>
|
|
Packit |
f574b8 |
# else
|
|
Packit |
f574b8 |
# include <time.h>
|
|
Packit |
f574b8 |
# endif
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if defined(_AIX) && !defined(AIX)
|
|
Packit |
f574b8 |
#define AIX
|
|
Packit |
f574b8 |
#endif /* _AIX */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef __CYGWIN__
|
|
Packit |
f574b8 |
#ifdef WIN_EX
|
|
Packit |
f574b8 |
#define HAVE_FTIME 1
|
|
Packit |
f574b8 |
#define HAVE_SYS_TIMEB_H 1
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#endif /* __CYGWIN__ */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef HAVE_FCNTL_H
|
|
Packit |
f574b8 |
#include <fcntl.h>
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#ifdef HAVE_SYS_FCNTL_H
|
|
Packit |
f574b8 |
#include <sys/fcntl.h>
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef HAVE_STRING_H
|
|
Packit |
f574b8 |
#include <string.h> /* For bzero etc */
|
|
Packit |
f574b8 |
#endif /* HAVE_STRING_H */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
MACROS FOR CONVERTING CHARACTERS
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#ifndef TOASCII
|
|
Packit |
f574b8 |
#ifdef EBCDIC /* S/390 -- gil -- 1327 */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
extern const char un_IBM1047[];
|
|
Packit |
f574b8 |
extern const unsigned char IBM1047[];
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* For debugging
|
|
Packit |
f574b8 |
#include <assert.h>
|
|
Packit |
f574b8 |
#define TOASCII(c) (assert((c)>=0 && (c)<256), un_IBM1047[c])
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
/* for production */
|
|
Packit |
f574b8 |
#define TOASCII(c) (un_IBM1047[c])
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define FROMASCII(c) (IBM1047[c])
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#else /* EBCDIC */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if '0' != 48
|
|
Packit |
f574b8 |
error Host character set is not ASCII.
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define TOASCII(c) (c)
|
|
Packit |
f574b8 |
#define FROMASCII(c) (c)
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#endif /* EBCDIC */
|
|
Packit |
f574b8 |
#endif /* !TOASCII */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* convert a char to an unsigned, needed if we have signed characters for ctype.h */
|
|
Packit |
f574b8 |
#define UCH(ch) ((unsigned char)(ch))
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
* These parameters were provided by Nigel Horne, using BeOS professional 5.0
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#ifdef __BEOS__
|
|
Packit |
f574b8 |
#undef NETREAD
|
|
Packit |
f574b8 |
#undef NETWRITE
|
|
Packit |
f574b8 |
#undef NETCLOSE
|
|
Packit |
f574b8 |
#define NETREAD(s,b,l) recv((s),(b),(l),0)
|
|
Packit |
f574b8 |
#define NETWRITE(s,b,l) send((s),(b),(l),0)
|
|
Packit |
f574b8 |
#define NETCLOSE(s) closesocket(s)
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
IBM-PC running Windows NT
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
These parameters provided by Susan C. Weber <sweber@kyle.eitech.com>.
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef _WINDOWS
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef _WINDOWS_NSL
|
|
Packit |
f574b8 |
#define _WINDOWS_NSL
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#include <fcntl.h> /* For HTFile.c */
|
|
Packit |
f574b8 |
#include <sys/types.h> /* For HTFile.c */
|
|
Packit |
f574b8 |
#include <sys/stat.h> /* For HTFile.c */
|
|
Packit |
f574b8 |
#undef NETREAD
|
|
Packit |
f574b8 |
#undef NETWRITE
|
|
Packit |
f574b8 |
#undef NETCLOSE
|
|
Packit |
f574b8 |
#undef IOCTL
|
|
Packit |
f574b8 |
extern int ws_netread(int fd, char *buf, int len);
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define NETREAD(s,b,l) ws_netread((s),(b),(l)) /* 1997/11/06 (Thu) */
|
|
Packit |
f574b8 |
#define NETWRITE(s,b,l) send((s),(b),(l),0)
|
|
Packit |
f574b8 |
#define NETCLOSE(s) closesocket(s)
|
|
Packit |
f574b8 |
#define IOCTL(s,cmd,arg) ioctlsocket(s,cmd,arg)
|
|
Packit |
f574b8 |
#include <io.h>
|
|
Packit |
f574b8 |
#include <string.h>
|
|
Packit |
f574b8 |
#include <process.h>
|
|
Packit |
f574b8 |
#include <time.h>
|
|
Packit |
f574b8 |
#include <errno.h>
|
|
Packit |
f574b8 |
#include <direct.h>
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef ENABLE_IPV6
|
|
Packit |
f574b8 |
#undef USE_WINSOCK2_H
|
|
Packit |
f574b8 |
#define USE_WINSOCK2_H
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* Avoid including <winsock*.h> in <windows.h> */
|
|
Packit |
f574b8 |
#ifndef WIN32_LEAN_AND_MEAN
|
|
Packit |
f574b8 |
#error Define "WIN32_LEAN_AND_MEAN" in your makefile
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef _WINSOCKAPI_
|
|
Packit |
f574b8 |
#error windows.h included before winsock2.h
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if defined(_MSC_VER) && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0501)
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
* Needed to pull in the real getaddrinfo() and not the inline version
|
|
Packit |
f574b8 |
* in <wspiAPI.H> which doesn't support IPv6 (IPv4 only). <wspiAPI.H> is
|
|
Packit |
f574b8 |
* included from <ws2tcpip.h> for <= 0x0500 SDKs.
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#undef _WIN32_WINNT
|
|
Packit |
f574b8 |
#define _WIN32_WINNT 0x0501
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#endif /* ENABLE_IPV6 */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef USE_WINSOCK2_H
|
|
Packit |
f574b8 |
#include <winsock2.h> /* normally included in windows.h */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef ENABLE_IPV6
|
|
Packit |
f574b8 |
#include <ws2tcpip.h>
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#undef EINPROGRESS
|
|
Packit |
f574b8 |
#undef EALREADY
|
|
Packit |
f574b8 |
#undef EISCONN
|
|
Packit |
f574b8 |
#undef EINTR
|
|
Packit |
f574b8 |
#undef EAGAIN
|
|
Packit |
f574b8 |
#undef ENOTCONN
|
|
Packit |
f574b8 |
#undef ECONNRESET
|
|
Packit |
f574b8 |
#undef ETIMEDOUT
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define EINPROGRESS WSAEINPROGRESS
|
|
Packit |
f574b8 |
#define EALREADY WSAEALREADY
|
|
Packit |
f574b8 |
#define EISCONN WSAEISCONN
|
|
Packit |
f574b8 |
#define EINTR WSAEINTR
|
|
Packit |
f574b8 |
/* fine EAGAIN WSAEAGAIN */
|
|
Packit |
f574b8 |
#define ENOTCONN WSAENOTCONN
|
|
Packit |
f574b8 |
#define ECONNRESET WSAECONNRESET
|
|
Packit |
f574b8 |
#define ETIMEDOUT WSAETIMEDOUT
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#else /* USE_WINSOCK2_H */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#include <winsock.h>
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if defined(_MSC_VER) || defined(__MINGW32__)
|
|
Packit |
f574b8 |
#undef EINTR
|
|
Packit |
f574b8 |
#undef EAGAIN
|
|
Packit |
f574b8 |
#endif /* _MSC_VER */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#undef EINPROGRESS
|
|
Packit |
f574b8 |
#define EINPROGRESS (WSABASEERR+36)
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#undef EALREADY
|
|
Packit |
f574b8 |
#define EALREADY (WSABASEERR+37)
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#undef EISCONN
|
|
Packit |
f574b8 |
#define EISCONN (WSABASEERR+56)
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#undef EINTR
|
|
Packit |
f574b8 |
#define EINTR (WSABASEERR+4)
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#undef EAGAIN
|
|
Packit |
f574b8 |
#define EAGAIN (WSABASEERR+1002)
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#undef ENOTCONN
|
|
Packit |
f574b8 |
#define ENOTCONN (WSABASEERR+57)
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#undef ECONNRESET
|
|
Packit |
f574b8 |
#define ECONNRESET (WSABASEERR+54)
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#undef ETIMEDOUT
|
|
Packit |
f574b8 |
#define ETIMEDOUT WSAETIMEDOUT
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#endif /* USE_WINSOCK2_H */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#undef SOCKET_ERRNO
|
|
Packit |
f574b8 |
#define SOCKET_ERRNO WSAGetLastError()
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define INCLUDES_DONE
|
|
Packit |
f574b8 |
#define TCP_INCLUDES_DONE
|
|
Packit |
f574b8 |
#endif /* WINDOWS */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
VAX/VMS
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
Under VMS, there are many versions of TCP-IP. Define one if you do
|
|
Packit |
f574b8 |
not use Digital's UCX product:
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
UCX DEC's "Ultrix connection" (default)
|
|
Packit |
f574b8 |
CMU_TCP Available via FTP from sacusr.mp.usbr.gov
|
|
Packit |
f574b8 |
SOCKETSHR Eckhart Meyer's interface to NETLIB
|
|
Packit |
f574b8 |
WIN_TCP From Wollongong, now GEC software.
|
|
Packit |
f574b8 |
MULTINET From SRI, became TGV, then Cisco.
|
|
Packit |
f574b8 |
DECNET Cern's TCP socket emulation over DECnet
|
|
Packit |
f574b8 |
TCPIP_SERVICES TCP/IP Services (newer than UCX)
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
WIN_TCP, MULTINET and DECNET do not interfere with the
|
|
Packit |
f574b8 |
unix i/o library, and so they need special calls to read, write and
|
|
Packit |
f574b8 |
close sockets. In these cases the socket number is a VMS channel
|
|
Packit |
f574b8 |
number, so we make the @@@ HORRIBLE @@@ assumption that a channel
|
|
Packit |
f574b8 |
number will be greater than 10 but a unix file descriptor less than
|
|
Packit |
f574b8 |
10. It works.
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#ifdef VMS
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef UCX
|
|
Packit |
f574b8 |
#undef IOCTL
|
|
Packit |
f574b8 |
#define IOCTL(s,cmd,arg) HTioctl(s,cmd,arg)
|
|
Packit |
f574b8 |
#endif /* UCX */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef WIN_TCP
|
|
Packit |
f574b8 |
#undef SOCKET_READ
|
|
Packit |
f574b8 |
#undef NETWRITE
|
|
Packit |
f574b8 |
#undef NETCLOSE
|
|
Packit |
f574b8 |
#define SOCKET_READ(s,b,l) ((s)>10 ? netread((s),(b),(l)) : read((s),(b),(l)))
|
|
Packit |
f574b8 |
#define NETWRITE(s,b,l) ((s)>10 ? netwrite((s),(b),(l)) : write((s),(b),(l)))
|
|
Packit |
f574b8 |
#define NETCLOSE(s) ((s)>10 ? netclose(s) : close(s))
|
|
Packit |
f574b8 |
#undef IOCTL
|
|
Packit |
f574b8 |
#define IOCTL(a,b,c) -1 /* disables ioctl function */
|
|
Packit |
f574b8 |
#define NO_IOCTL /* flag to check if ioctl is disabled */
|
|
Packit |
f574b8 |
#endif /* WIN_TCP */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef CMU_TCP
|
|
Packit |
f574b8 |
#undef SOCKET_READ
|
|
Packit |
f574b8 |
#undef NETREAD
|
|
Packit |
f574b8 |
#undef NETWRITE
|
|
Packit |
f574b8 |
#undef NETCLOSE
|
|
Packit |
f574b8 |
#define SOCKET_READ(s,b,l) (cmu_get_sdc((s)) != 0 ? cmu_read((s),(b),(l)) : read((s),(b),(l)))
|
|
Packit |
f574b8 |
#define NETREAD(s,b,l) (cmu_get_sdc((s)) != 0 ? HTDoRead((s),(b),(l)) : read((s),(b),(l)))
|
|
Packit |
f574b8 |
#define NETWRITE(s,b,l) (cmu_get_sdc((s)) != 0 ? cmu_write((s),(b),(l)) : write((s),(b),(l)))
|
|
Packit |
f574b8 |
#define NETCLOSE(s) (cmu_get_sdc((s)) != 0 ? cmu_close((s)) : close((s)))
|
|
Packit |
f574b8 |
#endif /* CMU_TCP */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef MULTINET
|
|
Packit |
f574b8 |
#undef NETCLOSE
|
|
Packit |
f574b8 |
#undef SOCKET_READ
|
|
Packit |
f574b8 |
#undef NETWRITE
|
|
Packit |
f574b8 |
#undef IOCTL
|
|
Packit |
f574b8 |
#undef SOCKET_ERRNO
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
* Delete these socket_foo() prototypes as MultiNet adds them
|
|
Packit |
f574b8 |
* to it's socket library headers. Compiler warnings due to
|
|
Packit |
f574b8 |
* the absence of arguments in the generic prototypes here will
|
|
Packit |
f574b8 |
* include the names of those which can be deleted. - FM
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
extern int socket_read();
|
|
Packit |
f574b8 |
extern int socket_write();
|
|
Packit |
f574b8 |
extern int socket_close();
|
|
Packit |
f574b8 |
extern int socket_ioctl();
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define SOCKET_READ(s,b,l) ((s)>10 ? socket_read((s),(b),(l)) : \
|
|
Packit |
f574b8 |
read((s),(b),(l)))
|
|
Packit |
f574b8 |
#define NETWRITE(s,b,l) ((s)>10 ? socket_write((s),(b),(l)) : \
|
|
Packit |
f574b8 |
write((s),(b),(l)))
|
|
Packit |
f574b8 |
#define NETCLOSE(s) ((s)>10 ? socket_close(s) : close(s))
|
|
Packit |
f574b8 |
#define IOCTL(s,cmd,arg) socket_ioctl(s,cmd,arg)
|
|
Packit |
f574b8 |
#define SOCKET_ERRNO socket_errno
|
|
Packit |
f574b8 |
#endif /* MULTINET */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef SOCKETSHR_TCP
|
|
Packit |
f574b8 |
#undef SOCKET_READ
|
|
Packit |
f574b8 |
#undef NETREAD
|
|
Packit |
f574b8 |
#undef NETWRITE
|
|
Packit |
f574b8 |
#undef NETCLOSE
|
|
Packit |
f574b8 |
#undef IOCTL
|
|
Packit |
f574b8 |
#define SOCKET_READ(s,b,l) (si_get_sdc((s)) != 0 ? si_read((s),(b),(l)) : \
|
|
Packit |
f574b8 |
read((s),(b),(l)))
|
|
Packit |
f574b8 |
#define NETREAD(s,b,l) (si_get_sdc((s)) != 0 ? HTDoRead((s),(b),(l)) : \
|
|
Packit |
f574b8 |
read((s),(b),(l)))
|
|
Packit |
f574b8 |
#define NETWRITE(s,b,l) (si_get_sdc((s)) != 0 ? si_write((s),(b),(l)) : \
|
|
Packit |
f574b8 |
write((s),(b),(l)))
|
|
Packit |
f574b8 |
#define NETCLOSE(s) (si_get_sdc((s)) != 0 ? si_close((s)) : close((s)))
|
|
Packit |
f574b8 |
#define IOCTL(s,cmd,arg) si_ioctl(s,cmd,arg)
|
|
Packit |
f574b8 |
#endif /* SOCKETSHR_TCP */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef TCPIP_SERVICES
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
* TCPIP Services has all of the entrypoints including ioctl().
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#undef NETWRITE
|
|
Packit |
f574b8 |
#define NETWRITE(s,b,l) send((s),(char *)(b),(l),0)
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define TYPE_FD_SET int
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if 0 /* this should be declared via time.h */
|
|
Packit |
f574b8 |
typedef TYPE_FD_SET fd_set;
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#endif /* TCPIP_SERVICES */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#include <string.h>
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#include <file.h>
|
|
Packit |
f574b8 |
#include <stat.h>
|
|
Packit |
f574b8 |
#include <unixio.h>
|
|
Packit |
f574b8 |
#include <unixlib.h>
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define INCLUDES_DONE
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef MULTINET /* Include from standard Multinet directories */
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
* Delete any of these multinet_foo() and associated prototypes
|
|
Packit |
f574b8 |
* as MultiNet adds them to its socket library headers. You'll
|
|
Packit |
f574b8 |
* get compiler warnings about them, due the absence of arguments
|
|
Packit |
f574b8 |
* in the generic prototyping here, and the warnings will include
|
|
Packit |
f574b8 |
* the names of the functions whose prototype entries can be
|
|
Packit |
f574b8 |
* deleted here. - FM
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
extern int multinet_accept();
|
|
Packit |
f574b8 |
extern int multinet_bind();
|
|
Packit |
f574b8 |
extern int multinet_connect();
|
|
Packit |
f574b8 |
extern int multinet_gethostname();
|
|
Packit |
f574b8 |
extern int multinet_getsockname();
|
|
Packit |
f574b8 |
extern unsigned short multinet_htons(unsigned short __val);
|
|
Packit |
f574b8 |
extern unsigned short multinet_ntohs(unsigned short __val);
|
|
Packit |
f574b8 |
extern int multinet_listen();
|
|
Packit |
f574b8 |
extern int multinet_select();
|
|
Packit |
f574b8 |
extern int multinet_socket();
|
|
Packit |
f574b8 |
extern char *vms_errno_string();
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef __SOCKET_TYPEDEFS
|
|
Packit |
f574b8 |
#define __SOCKET_TYPEDEFS 1
|
|
Packit |
f574b8 |
#endif /* !__SOCKET_TYPEDEFS */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#include <time.h>
|
|
Packit |
f574b8 |
#include <types.h>
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
* DEC C before version 5.2 added some typedefs to <types.h> which happen
|
|
Packit |
f574b8 |
* to be suppressed if the version-4 compatibility define is set. In
|
|
Packit |
f574b8 |
* particular, lynx uses "off_t". VAX-C used "unsigned", DEC-C uses "int".
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#if defined(_DECC_V4_SOURCE) && !defined(____OFF_T)
|
|
Packit |
f574b8 |
#undef off_t
|
|
Packit |
f574b8 |
#define off_t int
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef __TIME_T
|
|
Packit |
f574b8 |
#undef __TYPES
|
|
Packit |
f574b8 |
#define __TYPES 1
|
|
Packit |
f574b8 |
#define __TYPES_LOADED 1
|
|
Packit |
f574b8 |
#endif /* __TIME_T */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef __SOCKET_TYPEDEFS
|
|
Packit |
f574b8 |
#undef __SOCKET_TYPEDEFS
|
|
Packit |
f574b8 |
#endif /* __SOCKET_TYPEDEFS */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#include "multinet_root:[multinet.include.sys]types.h"
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef __SOCKET_TYPEDEFS
|
|
Packit |
f574b8 |
#define __SOCKET_TYPEDEFS 1
|
|
Packit |
f574b8 |
#endif /* !__SOCKET_TYPEDEFS */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#include "multinet_root:[multinet.include]errno.h"
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef __TYPES
|
|
Packit |
f574b8 |
#undef __TIME_T
|
|
Packit |
f574b8 |
#define __TIME_T 1
|
|
Packit |
f574b8 |
#endif /* __TYPE */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef __TIME_LOADED
|
|
Packit |
f574b8 |
#undef __TIME
|
|
Packit |
f574b8 |
#define __TIME 1 /* to avoid double definitions in in.h */
|
|
Packit |
f574b8 |
#endif /* __TIME_LOADED */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#include "multinet_root:[multinet.include.sys]time.h"
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define MULTINET_NO_PROTOTYPES /* DECC is compatible-but-different */
|
|
Packit |
f574b8 |
#include "multinet_root:[multinet.include.sys]socket.h"
|
|
Packit |
f574b8 |
#undef MULTINET_NO_PROTOTYPES
|
|
Packit |
f574b8 |
#include "multinet_root:[multinet.include.netinet]in.h"
|
|
Packit |
f574b8 |
#include "multinet_root:[multinet.include.arpa]inet.h"
|
|
Packit |
f574b8 |
#include "multinet_root:[multinet.include]netdb.h"
|
|
Packit |
f574b8 |
#include "multinet_root:[multinet.include.sys]ioctl.h"
|
|
Packit |
f574b8 |
#define TCP_INCLUDES_DONE
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
* Uncomment this if you get compiler messages
|
|
Packit |
f574b8 |
* about struct timeval having no linkage. - FM
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
/*#define NO_TIMEVAL*/
|
|
Packit |
f574b8 |
#ifdef NO_TIMEVAL
|
|
Packit |
f574b8 |
struct timeval {
|
|
Packit |
f574b8 |
long tv_sec; /* seconds since Jan. 1, 1970 */
|
|
Packit |
f574b8 |
long tv_usec; /* microseconds */
|
|
Packit |
f574b8 |
};
|
|
Packit |
f574b8 |
#endif /* NO_TIMEVAL */
|
|
Packit |
f574b8 |
#endif /* MULTINET */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef DECNET
|
|
Packit |
f574b8 |
#include <types.h>
|
|
Packit |
f574b8 |
#include <errno.h>
|
|
Packit |
f574b8 |
#include <time.h>
|
|
Packit |
f574b8 |
#include <types.h> /* for socket.h */
|
|
Packit |
f574b8 |
#include <socket.h>
|
|
Packit |
f574b8 |
#include <dn>
|
|
Packit |
f574b8 |
#include <dnetdb>
|
|
Packit |
f574b8 |
/* #include "vms.h" */
|
|
Packit |
f574b8 |
#define TCP_INCLUDES_DONE
|
|
Packit |
f574b8 |
#endif /* DECNET */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef UCX
|
|
Packit |
f574b8 |
#include <types.h>
|
|
Packit |
f574b8 |
#include <errno.h>
|
|
Packit |
f574b8 |
#include <time.h>
|
|
Packit |
f574b8 |
#include <socket.h>
|
|
Packit |
f574b8 |
#include <in.h>
|
|
Packit |
f574b8 |
#include <inet.h>
|
|
Packit |
f574b8 |
#if defined(TCPWARE) && !defined(__DECC)
|
|
Packit |
f574b8 |
#include "tcpware_include:netdb.h"
|
|
Packit |
f574b8 |
#include "tcpware_include:ucx$inetdef.h"
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#include <netdb.h>
|
|
Packit |
f574b8 |
#ifdef MUCX
|
|
Packit |
f574b8 |
#include <multinet_root:[multinet.include.vms]ucx$inetdef.h>
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#include <ucx$inetdef.h>
|
|
Packit |
f574b8 |
#endif /* MUCX */
|
|
Packit |
f574b8 |
#endif /* TCPWARE */
|
|
Packit |
f574b8 |
#define TCP_INCLUDES_DONE
|
|
Packit |
f574b8 |
#endif /* UCX */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef CMU_TCP
|
|
Packit |
f574b8 |
#include <types.h>
|
|
Packit |
f574b8 |
#include <errno.h>
|
|
Packit |
f574b8 |
#include "cmuip_root:[syslib]time.h"
|
|
Packit |
f574b8 |
#include "cmuip_root:[syslib]socket.h"
|
|
Packit |
f574b8 |
#include <in.h>
|
|
Packit |
f574b8 |
#include <inet.h>
|
|
Packit |
f574b8 |
#include <netdb.h>
|
|
Packit |
f574b8 |
#include "cmuip_root:[syslib]ioctl.h"
|
|
Packit |
f574b8 |
#define TCP_INCLUDES_DONE
|
|
Packit |
f574b8 |
#endif /* CMU_TCP */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef SOCKETSHR_TCP
|
|
Packit |
f574b8 |
#include <types.h>
|
|
Packit |
f574b8 |
#include <errno.h>
|
|
Packit |
f574b8 |
#include <time.h>
|
|
Packit |
f574b8 |
#include <socket.h>
|
|
Packit |
f574b8 |
#include <in.h>
|
|
Packit |
f574b8 |
#include <inet.h>
|
|
Packit |
f574b8 |
#include <netdb.h>
|
|
Packit |
f574b8 |
#include "socketshr_library:socketshr.h"
|
|
Packit |
f574b8 |
#include "socketshr_library:ioctl.h"
|
|
Packit |
f574b8 |
#define TCP_INCLUDES_DONE
|
|
Packit |
f574b8 |
#endif /* SOCKETSHR_TCP */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef TCPIP_SERVICES
|
|
Packit |
f574b8 |
#include <types.h>
|
|
Packit |
f574b8 |
#include <errno.h>
|
|
Packit |
f574b8 |
#include <time.h>
|
|
Packit |
f574b8 |
#include <ioctl.h>
|
|
Packit |
f574b8 |
#include <socket.h>
|
|
Packit |
f574b8 |
#include <in.h>
|
|
Packit |
f574b8 |
#include <inet.h>
|
|
Packit |
f574b8 |
#include <netdb.h>
|
|
Packit |
f574b8 |
#define TCP_INCLUDES_DONE
|
|
Packit |
f574b8 |
#endif /* TCPIP_SERVICES */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef WIN_TCP
|
|
Packit |
f574b8 |
#include <types.h>
|
|
Packit |
f574b8 |
#include <errno.h>
|
|
Packit |
f574b8 |
#include <time.h>
|
|
Packit |
f574b8 |
#include <socket.h>
|
|
Packit |
f574b8 |
#include <in.h>
|
|
Packit |
f574b8 |
#include <inet.h>
|
|
Packit |
f574b8 |
#include <netdb.h>
|
|
Packit |
f574b8 |
#ifndef NO_IOCTL
|
|
Packit |
f574b8 |
#include <ioctl.h>
|
|
Packit |
f574b8 |
#endif /* !NO_IOCTL */
|
|
Packit |
f574b8 |
#define TCP_INCLUDES_DONE
|
|
Packit |
f574b8 |
#endif /* WIN_TCP */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef TCP_INCLUDES_DONE
|
|
Packit |
f574b8 |
#include <types.h>
|
|
Packit |
f574b8 |
#include <errno.h>
|
|
Packit |
f574b8 |
#include <time.h>
|
|
Packit |
f574b8 |
#ifdef VMS_SOCKET_HEADERS
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
* Not all versions of VMS have the full set of headers
|
|
Packit |
f574b8 |
* for socket library functions, because the TCP/IP
|
|
Packit |
f574b8 |
* packages were layered products. If we want these
|
|
Packit |
f574b8 |
* specifically, instead of those for the above packages,
|
|
Packit |
f574b8 |
* the module should be compiled with VMS_SOCKET_HEADERS
|
|
Packit |
f574b8 |
* defined instead of layered product definitions, above.
|
|
Packit |
f574b8 |
* If the module is not using socket library functions,
|
|
Packit |
f574b8 |
* none of the definitions need be used, and we include
|
|
Packit |
f574b8 |
* only the above three headers. - FM
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#include <socket.h>
|
|
Packit |
f574b8 |
#include <in.h>
|
|
Packit |
f574b8 |
#include <inet.h>
|
|
Packit |
f574b8 |
#include <netdb.h>
|
|
Packit |
f574b8 |
#include <ioctl.h>
|
|
Packit |
f574b8 |
#endif /* VMS_SOCKET_HEADERS */
|
|
Packit |
f574b8 |
#define TCP_INCLUDES_DONE
|
|
Packit |
f574b8 |
#endif /* !TCP_INCLUDES_DONE */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
* On VMS machines, the linker needs to be told to put global data sections
|
|
Packit |
f574b8 |
* into a data segment using these storage classes. (MarkDonszelmann)
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#if defined(VAXC) && !defined(__DECC)
|
|
Packit |
f574b8 |
#define GLOBALDEF globaldef
|
|
Packit |
f574b8 |
#define GLOBALREF globalref
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#ifdef __GNUC__ /* this added by Sterling Bjorndahl */
|
|
Packit |
f574b8 |
#define GLOBALREF_IS_MACRO 1
|
|
Packit |
f574b8 |
#define GLOBALDEF_IS_MACRO 1
|
|
Packit |
f574b8 |
#include <gnu_hacks.h> /* defines GLOBALREF and GLOBALDEF for GNUC on VMS */
|
|
Packit |
f574b8 |
#endif /* __GNUC__ */
|
|
Packit |
f574b8 |
#endif /* VAXC && !DECC */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#include <perror.h>
|
|
Packit |
f574b8 |
#ifndef errno
|
|
Packit |
f574b8 |
extern int errno;
|
|
Packit |
f574b8 |
#endif /* !errno */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#endif /* VMS */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
* On non-VMS machines and for DECC on VMS, the GLOBALDEF and GLOBALREF
|
|
Packit |
f574b8 |
* storage types default to normal C storage types.
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#ifndef GLOBALREF
|
|
Packit |
f574b8 |
#define GLOBALDEF
|
|
Packit |
f574b8 |
#define GLOBALREF extern
|
|
Packit |
f574b8 |
#endif /* !GLOBALREF */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef __DJGPP__
|
|
Packit |
f574b8 |
#undef SELECT
|
|
Packit |
f574b8 |
#define TCP_INCLUDES_DONE
|
|
Packit |
f574b8 |
#undef IOCTL
|
|
Packit |
f574b8 |
#define IOCTL(s,cmd,arg) ioctlsocket(s,cmd,(char*)(arg))
|
|
Packit |
f574b8 |
#define DECL_ERRNO
|
|
Packit |
f574b8 |
#include <errno.h>
|
|
Packit |
f574b8 |
#include <sys/types.h>
|
|
Packit |
f574b8 |
#include <io.h>
|
|
Packit |
f574b8 |
#include <sys/ioctl.h>
|
|
Packit |
f574b8 |
#include <sys/socket.h>
|
|
Packit |
f574b8 |
#include <arpa/inet.h>
|
|
Packit |
f574b8 |
#include <tcp.h>
|
|
Packit |
f574b8 |
#ifdef word
|
|
Packit |
f574b8 |
#undef word
|
|
Packit |
f574b8 |
#endif /* word */
|
|
Packit |
f574b8 |
#ifdef set_timeout
|
|
Packit |
f574b8 |
#undef set_timeout
|
|
Packit |
f574b8 |
#endif /* set_timeout */
|
|
Packit |
f574b8 |
#define select select_s
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#undef NETWRITE
|
|
Packit |
f574b8 |
#define NETWRITE write_s
|
|
Packit |
f574b8 |
#undef NETREAD
|
|
Packit |
f574b8 |
#define NETREAD read_s
|
|
Packit |
f574b8 |
#undef NETCLOSE
|
|
Packit |
f574b8 |
#define NETCLOSE close_s
|
|
Packit |
f574b8 |
#ifdef UNIX
|
|
Packit |
f574b8 |
#undef UNIX
|
|
Packit |
f574b8 |
#endif /* UNIX */
|
|
Packit |
f574b8 |
#ifdef HAVE_GETTEXT
|
|
Packit |
f574b8 |
#define gettext gettext__
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#if !defined(NCURSES) && !defined(USE_SLANG)
|
|
Packit |
f574b8 |
#define HAVE_CBREAK 1
|
|
Packit |
f574b8 |
#endif /* !NCURSES && !USE_SLANG */
|
|
Packit |
f574b8 |
#if defined(USE_SLANG) && !defined(NO_DJ_KEYHANDLER) && defined(HAVE_CONFIG_H)
|
|
Packit |
f574b8 |
#define DJGPP_KEYHANDLER
|
|
Packit |
f574b8 |
#endif /* USE_SLANG && !NO_DJ_KEYHANDLER && HAVE_CONFIG_H */
|
|
Packit |
f574b8 |
#endif /* DJGPP */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef HAVE_UNISTD_H
|
|
Packit |
f574b8 |
#include <unistd.h>
|
|
Packit |
f574b8 |
#endif /* HAVE_UNISTD_H */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef HAVE_SYS_FILIO_H
|
|
Packit |
f574b8 |
#include <sys/filio.h>
|
|
Packit |
f574b8 |
#endif /* HAVE_SYS_FILIO_H */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if !defined(HAVE_LSTAT) && !defined(lstat)
|
|
Packit |
f574b8 |
#define lstat(path,block) stat(path,block)
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if defined(DECL_ERRNO) && !defined(errno)
|
|
Packit |
f574b8 |
extern int errno;
|
|
Packit |
f574b8 |
#endif /* DECL_ERRNO */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
Regular BSD unix versions
|
|
Packit |
f574b8 |
=========================
|
|
Packit |
f574b8 |
These are a default unix where not already defined specifically.
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#ifndef INCLUDES_DONE
|
|
Packit |
f574b8 |
#include <sys/types.h>
|
|
Packit |
f574b8 |
#ifdef HAVE_STRING_H
|
|
Packit |
f574b8 |
#include <string.h>
|
|
Packit |
f574b8 |
#endif /* HAVE_STRING_H */
|
|
Packit |
f574b8 |
#include <errno.h> /* independent */
|
|
Packit |
f574b8 |
#ifdef __MVS__ /* S/390 -- gil -- 1361 */
|
|
Packit |
f574b8 |
#include <time.h>
|
|
Packit |
f574b8 |
#endif /* __MVS__ */
|
|
Packit |
f574b8 |
#ifdef SCO
|
|
Packit |
f574b8 |
#include <sys/timeb.h>
|
|
Packit |
f574b8 |
#include <time.h>
|
|
Packit |
f574b8 |
#endif /* SCO */
|
|
Packit |
f574b8 |
#if defined(AIX) || defined(SVR4)
|
|
Packit |
f574b8 |
#include <time.h>
|
|
Packit |
f574b8 |
#endif /* AIX || SVR4 */
|
|
Packit |
f574b8 |
#include <sys/time.h> /* independent */
|
|
Packit |
f574b8 |
#include <sys/stat.h>
|
|
Packit |
f574b8 |
#ifndef __MVS__ /* S/390 -- gil -- 1373 */
|
|
Packit |
f574b8 |
#include <sys/param.h>
|
|
Packit |
f574b8 |
#endif /* __MVS__ */
|
|
Packit |
f574b8 |
#include <sys/file.h> /* For open() etc */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if defined(NeXT) || defined(sony_news)
|
|
Packit |
f574b8 |
#ifndef mode_t
|
|
Packit |
f574b8 |
typedef unsigned short mode_t;
|
|
Packit |
f574b8 |
#endif /* !mode_t */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#endif /* NeXT || sony_news */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define INCLUDES_DONE
|
|
Packit |
f574b8 |
#endif /* Normal includes */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* FIXME: this should be autoconf'd */
|
|
Packit |
f574b8 |
/* Interactive UNIX for i386 and i486 -- Thanks to jeffrey@itm.itm.org */
|
|
Packit |
f574b8 |
#ifdef ISC
|
|
Packit |
f574b8 |
#include <net/errno.h>
|
|
Packit |
f574b8 |
#include <sys/types.h>
|
|
Packit |
f574b8 |
#include <sys/tty.h>
|
|
Packit |
f574b8 |
#include <sys/sioctl.h>
|
|
Packit |
f574b8 |
#include <sys/bsdtypes.h>
|
|
Packit |
f574b8 |
#ifndef MERGE
|
|
Packit |
f574b8 |
#define MERGE
|
|
Packit |
f574b8 |
#include <sys/pty.h>
|
|
Packit |
f574b8 |
#undef MERGE
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#include <sys/pty.h>
|
|
Packit |
f574b8 |
#endif /* !MERGE */
|
|
Packit |
f574b8 |
#ifndef USE_DIRENT
|
|
Packit |
f574b8 |
#define USE_DIRENT /* sys V style directory open */
|
|
Packit |
f574b8 |
#endif /* USE_DIRENT */
|
|
Packit |
f574b8 |
#include <sys/dirent.h>
|
|
Packit |
f574b8 |
#endif /* ISC */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/* Directory reading stuff - BSD or SYS V
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#ifdef HAVE_CONFIG_H
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
# ifdef HAVE_LIMITS_H
|
|
Packit |
f574b8 |
# include <limits.h>
|
|
Packit |
f574b8 |
# endif /* HAVE_LIMITS_H */
|
|
Packit |
f574b8 |
# if !defined(MAXINT) && defined(INT_MAX)
|
|
Packit |
f574b8 |
# define MAXINT INT_MAX
|
|
Packit |
f574b8 |
# endif /* !MAXINT && INT_MAX */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if !(defined(VM) || defined(VMS) || defined(THINK_C) || defined(PCNFS) || defined(_WINDOWS))
|
|
Packit |
f574b8 |
#define DECL_SYS_ERRLIST 1
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if defined(VMS)
|
|
Packit |
f574b8 |
#define socklen_t unsigned
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#define socklen_t int /* used for default LY_SOCKLEN definition */
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#endif /* !HAVE_CONFIG_H */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef HAVE_LIBINTL_H
|
|
Packit |
f574b8 |
#include <libintl.h>
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef HAVE_LIBGETTEXT_H
|
|
Packit |
f574b8 |
#include <libgettext.h>
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define N_(s) s
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef HAVE_GETTEXT
|
|
Packit |
f574b8 |
#define gettext(s) s
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef NLS_TEXTDOMAIN
|
|
Packit |
f574b8 |
#define NLS_TEXTDOMAIN "lynx"
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
Defaults
|
|
Packit |
f574b8 |
========
|
|
Packit |
f574b8 |
INCLUDE FILES FOR TCP
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#ifndef TCP_INCLUDES_DONE
|
|
Packit |
f574b8 |
#ifndef NO_IOCTL
|
|
Packit |
f574b8 |
#include <sys/ioctl.h> /* EJB */
|
|
Packit |
f574b8 |
#endif /* !NO_IOCTL */
|
|
Packit |
f574b8 |
#include <sys/socket.h>
|
|
Packit |
f574b8 |
#include <netinet/in.h>
|
|
Packit |
f574b8 |
#ifdef HAVE_ARPA_INET_H
|
|
Packit |
f574b8 |
#include <arpa/inet.h> /* Must be after netinet/in.h */
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#include <netdb.h>
|
|
Packit |
f574b8 |
#endif /* TCP includes */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
typedef unsigned short PortNumber;
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef S_ISLNK
|
|
Packit |
f574b8 |
#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
|
|
Packit |
f574b8 |
#endif /* S_ISLNK */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef S_ISDIR
|
|
Packit |
f574b8 |
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
|
Packit |
f574b8 |
#endif /* S_ISDIR */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef S_ISREG
|
|
Packit |
f574b8 |
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
|
|
Packit |
f574b8 |
#endif /* S_ISREG */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef S_ISUID
|
|
Packit |
f574b8 |
#define S_ISUID 0004000
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#ifndef S_ISGID
|
|
Packit |
f574b8 |
#define S_ISGID 0002000
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#ifndef S_ISVTX
|
|
Packit |
f574b8 |
#define S_ISVTX 0001000
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef S_IRWXU
|
|
Packit |
f574b8 |
#define S_IRWXU 00700
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef S_IRUSR
|
|
Packit |
f574b8 |
#define S_IRUSR 00400
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#ifndef S_IWUSR
|
|
Packit |
f574b8 |
#define S_IWUSR 00200
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#ifndef S_IXUSR
|
|
Packit |
f574b8 |
#define S_IXUSR 00100
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef S_IRWXG
|
|
Packit |
f574b8 |
#define S_IRWXG 00070
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef S_IRGRP
|
|
Packit |
f574b8 |
#define S_IRGRP 00040
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#ifndef S_IWGRP
|
|
Packit |
f574b8 |
#define S_IWGRP 00020
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#ifndef S_IXGRP
|
|
Packit |
f574b8 |
#define S_IXGRP 00010
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef S_IRWXO
|
|
Packit |
f574b8 |
#define S_IRWXO 00007
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef S_IROTH
|
|
Packit |
f574b8 |
#define S_IROTH 00004
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#ifndef S_IWOTH
|
|
Packit |
f574b8 |
#define S_IWOTH 00002
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#ifndef S_IXOTH
|
|
Packit |
f574b8 |
#define S_IXOTH 00001
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
ROUGH ESTIMATE OF MAX PATH LENGTH
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#ifndef HT_MAX_PATH
|
|
Packit |
f574b8 |
#ifdef MAXPATHLEN
|
|
Packit |
f574b8 |
#define HT_MAX_PATH MAXPATHLEN
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#ifdef PATH_MAX
|
|
Packit |
f574b8 |
#define HT_MAX_PATH PATH_MAX
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#define HT_MAX_PATH 1024 /* Any better ideas? */
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#endif /* HT_MAX_PATH */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#if HT_MAX_PATH < 256
|
|
Packit |
f574b8 |
#undef HT_MAX_PATH
|
|
Packit |
f574b8 |
#define HT_MAX_PATH 256
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
MACROS FOR MANIPULATING MASKS FOR SELECT()
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#ifdef SELECT
|
|
Packit |
f574b8 |
#ifndef FD_SET
|
|
Packit |
f574b8 |
#ifndef TYPE_FD_SET
|
|
Packit |
f574b8 |
#define TYPE_FD_SET unsigned
|
|
Packit |
f574b8 |
typedef TYPE_FD_SET fd_set;
|
|
Packit |
f574b8 |
#endif /* !TYPE_FD_SET */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define FD_SET(fd,pmask) (*(pmask)) |= (1 << (fd))
|
|
Packit |
f574b8 |
#define FD_CLR(fd,pmask) (*(pmask)) &= ~(1 << (fd))
|
|
Packit |
f574b8 |
#define FD_ZERO(pmask) (*(pmask)) = 0
|
|
Packit |
f574b8 |
#define FD_ISSET(fd,pmask) (*(pmask) & (1 << (fd)))
|
|
Packit |
f574b8 |
#endif /* !FD_SET */
|
|
Packit |
f574b8 |
#endif /* SELECT */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
* Macro for setting errno - only define this if you really can do it.
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#if defined(CAN_SET_ERRNO) || (!defined(errno) && (!defined(VMS) || defined(UCX)))
|
|
Packit |
f574b8 |
#define set_errno(value) errno = value
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#define set_errno(value) /* we do not know how */
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
/*
|
|
Packit |
f574b8 |
* IPv6 support
|
|
Packit |
f574b8 |
*/
|
|
Packit |
f574b8 |
#if defined(HAVE_GETADDRINFO) && defined(ENABLE_IPV6)
|
|
Packit |
f574b8 |
#if defined(HAVE_GAI_STRERROR)
|
|
Packit |
f574b8 |
#define INET6
|
|
Packit |
f574b8 |
#elif defined(_WINDOWS)
|
|
Packit |
f574b8 |
#define INET6
|
|
Packit |
f574b8 |
#ifndef WIN_EX
|
|
Packit |
f574b8 |
#error Define "WIN_EX" in your makefile.
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#ifndef _MSC_VER /* MSVC has this inlined in <ws2tcpip.h> */
|
|
Packit |
f574b8 |
#undef gai_strerror
|
|
Packit |
f574b8 |
#define gai_strerror(err) w32_strerror (err)
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
#endif /* HAVE_GETADDRINFO && ENABLE_IPV6 */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
typedef union {
|
|
Packit |
f574b8 |
struct sockaddr_in soc_in;
|
|
Packit |
f574b8 |
struct sockaddr soc_address;
|
|
Packit |
f574b8 |
#ifdef INET6
|
|
Packit |
f574b8 |
struct sockaddr_storage soc_storage;
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
} LY_SOCKADDR;
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef INET6
|
|
Packit |
f574b8 |
typedef struct sockaddr_storage SockA;
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define SOCKADDR_OF(param) (&((param).soc_address))
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef SA_LEN
|
|
Packit |
f574b8 |
#define SA_LEN(x) (((x)->sa_family == AF_INET6) \
|
|
Packit |
f574b8 |
? sizeof(struct sockaddr_in6) \
|
|
Packit |
f574b8 |
: (((x)->sa_family == AF_INET) \
|
|
Packit |
f574b8 |
? sizeof(struct sockaddr_in) \
|
|
Packit |
f574b8 |
: sizeof(struct sockaddr))) /* AF_UNSPEC? */
|
|
Packit |
f574b8 |
#endif
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifdef SIN6_LEN
|
|
Packit |
f574b8 |
#define SOCKADDR_LEN(param) (SOCKADDR_OF(param)->sa_len)
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
#define SOCKADDR_LEN(param) (socklen_t) SA_LEN(SOCKADDR_OF(param))
|
|
Packit |
f574b8 |
#endif /* SIN6_LEN */
|
|
Packit |
f574b8 |
#else
|
|
Packit |
f574b8 |
typedef struct sockaddr_in SockA;
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#define SOCKADDR_OF(param) ((struct sockaddr *)&(param))
|
|
Packit |
f574b8 |
#define SOCKADDR_LEN(param) sizeof(param)
|
|
Packit |
f574b8 |
#endif /* INET6 */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#ifndef MAXHOSTNAMELEN
|
|
Packit |
f574b8 |
#define MAXHOSTNAMELEN 128 /* Max label is 63. Should handle 2 of those */
|
|
Packit |
f574b8 |
#endif /* MAXHOSTNAMELEN */
|
|
Packit |
f574b8 |
|
|
Packit |
f574b8 |
#endif /* TCP_H */
|