mirror of
https://github.com/Stichting-MINIX-Research-Foundation/xsrc.git
synced 2025-09-09 20:59:43 -04:00
219 lines
5.6 KiB
C
219 lines
5.6 KiB
C
/* $XConsortium: Xstreams.h,v 1.6 91/07/19 23:22:53 gildea Exp $ */
|
|
/* Copyright (c) 1990, 1991 UNIX System Laboratories, Inc. */
|
|
/* Copyright (c) 1988 AT&T */
|
|
/* All Rights Reserved */
|
|
|
|
/*
|
|
* Permission to use, copy, modify, and distribute this software and its
|
|
* documentation for any purpose and without fee is hereby granted, provided
|
|
* that the above copyright notice appear in all copies and that both that
|
|
* copyright notice and this permission notice appear in supporting
|
|
* documentation, and that the name of AT&T or USL not be used in advertising
|
|
* or publicity pertaining to distribution of the software without specific,
|
|
* written prior permission. AT&T and USL make no representations about the
|
|
* suitability of this software for any purpose. It is provided "as is"
|
|
* without express or implied warranty.
|
|
*
|
|
* AT&T and USL DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
|
* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
|
|
* NO EVENT SHALL AT&T or USL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
|
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
|
* OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
|
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
*/
|
|
/* $XFree86: xc/lib/dps/Xstreams.h,v 1.1 2000/02/15 14:51:21 dawes Exp $ */
|
|
|
|
|
|
#ifndef _XSTREAMS_H_
|
|
#define _XSTREAMS_H_
|
|
/*
|
|
Xstreams.h (C header file)
|
|
Acc: 575304412 Tue Apr 26 09:46:52 1988
|
|
Mod: 574017273 Tue Apr 26 12:14:33 1988
|
|
Sta: 574017273 Tue Apr 26 12:14:33 1988
|
|
Owner: 2011
|
|
Group: 1985
|
|
Permissions: 644
|
|
*/
|
|
/*
|
|
START USER STAMP AREA
|
|
*/
|
|
/*
|
|
END USER STAMP AREA
|
|
*/
|
|
|
|
|
|
|
|
#define MEM_ALLIGN(ptr) ((((unsigned) (ptr + 3)) >> 2) << 2)
|
|
|
|
#define CONNECT_TIMEOUT 60
|
|
#define MAX_AUTO_BUF_LEN 256
|
|
#define MAX_DISP_DIGITS 20
|
|
#define MAX_NETS 8
|
|
|
|
typedef struct _host {
|
|
char host_name[32];
|
|
int host_len;
|
|
struct _host *next;
|
|
} HOST;
|
|
|
|
/*
|
|
* Structure for handling multiple connection requests on the same stream.
|
|
*/
|
|
|
|
struct listenCall {
|
|
struct t_call *CurrentCall;
|
|
struct listenCall *NextCall;
|
|
};
|
|
|
|
struct listenQue {
|
|
struct listenCall *QueHead;
|
|
struct listenCall *QueTail;
|
|
};
|
|
|
|
#define EMPTY(p) (p->QueHead == (struct listenCall *) NULL)
|
|
|
|
|
|
typedef struct {
|
|
int flags;
|
|
char type;
|
|
int display;
|
|
char *inputbuf;
|
|
int buflen;
|
|
int bufptr;
|
|
int msglen;
|
|
} IOBUFFER;
|
|
|
|
typedef struct {
|
|
int _nnets;
|
|
#ifdef SVR4
|
|
struct netconfig *_net[MAX_NETS];
|
|
#else
|
|
char *_net[MAX_NETS];
|
|
#endif
|
|
struct listenQue FreeList[MAX_NETS];
|
|
struct listenQue PendingQue[MAX_NETS];
|
|
int _npeers;
|
|
char **_peer;
|
|
int *_peerlen;
|
|
HOST *_validhosts;
|
|
} networkInfo;
|
|
|
|
|
|
typedef struct _Xstream {
|
|
int (*SetupTheListener)();
|
|
int (*ConnectNewClient)();
|
|
int (*CallTheListener)();
|
|
int (*ReadFromStream)();
|
|
int (*BytesCanBeRead)();
|
|
int (*WriteToStream)();
|
|
int (*CloseStream)();
|
|
int (*CreateAddress)();
|
|
union ext {
|
|
int (*NameServer)();
|
|
networkInfo *NetInfo;
|
|
} u;
|
|
} Xstream;
|
|
|
|
/* old shared libraries have the names already fixed */
|
|
#ifdef USL_COMPAT
|
|
#define _XsStream xstream
|
|
#define _XReadV _readv
|
|
#define _XWriteV _writev
|
|
#define _XSelect XSelect
|
|
#define _XsErrorCall ErrorCall
|
|
#define _XsSetupLocalStream SetupLocalStream
|
|
#define _XsConnectLocalClient ConnectLocalClient
|
|
#define _XsOpenSpServer OpenSpServer
|
|
#define _XsReadLocalStream ReadLocalStream
|
|
#define _XsConnectTliClient ConnectTliClient
|
|
#define _XsSetupTliStrean SetupTliStream
|
|
#define _XsCallTliServer CallTliServer
|
|
#define _XsCallLocalServer CallLocalServer
|
|
#define _XsTypeOfStream TypeOfStream
|
|
#ifdef SVR4
|
|
#define _XsSetupNamedStream SetupNamedStream
|
|
#define _XsSetupSpStream SetupSpStream
|
|
#endif /* SVR4 */
|
|
#endif /* USL_COMPAT */
|
|
|
|
extern Xstream _XsStream[];
|
|
|
|
#define NO_BUFFERING 0
|
|
#define BUFFERING 1
|
|
|
|
/* Network services */
|
|
|
|
#define OpenDaemonConnection 0
|
|
#define PEER_NAME 1
|
|
#define PEER_ALLOC 2
|
|
#define PEER_FREE 3
|
|
#define ConvertNetAddrToName 4
|
|
#define ConvertNameToNetAddr 5
|
|
#define ConvertNameToTliCall 6
|
|
#define ConvertTliCallToName 7
|
|
#define ConvertNameToTliBind 8
|
|
|
|
#define UNAME_LENGTH 14
|
|
|
|
#define X_LOCAL_STREAM 0
|
|
#define X_NAMED_STREAM 1
|
|
/* Enhanced Application Compatibility Support */
|
|
#define X_SP_STREAM 2
|
|
/* End Enhanced Application Compatibility Support */
|
|
|
|
#define X_TLI_STREAM 3
|
|
#define CLOSED_STREAM -1
|
|
|
|
/*
|
|
The following are defined in X.h. Any changes to FamilyUname
|
|
should take X.h into consideration.
|
|
*/
|
|
/* protocol families */
|
|
|
|
/*
|
|
|
|
#define FamilyInternet 0
|
|
#define FamilyDECnet 1
|
|
#define FamilyChaos 2
|
|
|
|
*/
|
|
|
|
#define FamilyUname 3
|
|
|
|
#define X_TCP_PORT 6000
|
|
|
|
#define NAMED_LISTENER "/dev/X/Nserver"
|
|
#define LOCAL_LISTENER "/dev/X/server"
|
|
/* Enhanced Application Compatibility Support */
|
|
/* End Enhanced Application Compatibility Support */
|
|
|
|
#define NAME_SERVER_NODE "/dev/X/nameserver"
|
|
#define XNETSPECDIR "lib/net"
|
|
#define XROOTDIR "/usr/X"
|
|
|
|
#define MAX_SIMUL_TLI_CALLS 20
|
|
|
|
#define SetupNetworkInfo() _XsStream[X_LOCAL_STREAM].u.NetInfo = &Network; \
|
|
_XsStream[X_NAMED_STREAM].u.NetInfo = &Network; \
|
|
/* Enhanced Application Compatibility Support */ \
|
|
/* End Enhanced Application Compatibility Support */ \
|
|
_XsStream[X_TLI_STREAM].u.NameServer = nameserver
|
|
|
|
#define NetworkInfo (_XsStream[X_LOCAL_STREAM].u.NetInfo)
|
|
#define GetNetworkInfo (*_XsStream[X_TLI_STREAM].u.NameServer)
|
|
#define validhosts _XsStream[X_LOCAL_STREAM].u.NetInfo->_validhosts
|
|
|
|
/*
|
|
* header of messages sent by X to the nameserver
|
|
* 1st int: the size of the entire message.
|
|
* 2nd int: the size of the header itself.
|
|
* 3rd int: the service number.
|
|
* 4th int: the display number.
|
|
* 5th int: the length of the network name.
|
|
*/
|
|
|
|
#define HEADERSIZE (5*sizeof(int))
|
|
#endif /* _XSTREAMS_H_ */
|