ftp.nice.ch/pub/next/unix/macintosh/uw.4.2.N.bs.tar.gz#/uw/h/uw_ipc.h

This is uw_ipc.h in view mode; [Download] [Up]

/*
 *	uw IPC definitions
 *
 * Copyright 1986 by John D. Bruner.  All rights reserved.  Permission to
 * copy this program is given provided that the copy is not sold and that
 * this copyright notice is included.
 */

#ifndef UW_IPC
#define	UW_IPC

/*
 * UW accepts network connections in both the UNIX domain and the
 * Internet domain.  UNIX domain datagrams are used by processes on
 * the local machine to create new windows and to change the value
 * of window parameters (window options).  TCP (Internet stream)
 * connections are used by local and non-local processes which wish
 * to handle their own host activity (e.g. pseudo-terminal handling).
 *
 * Some of the definitions in this file duplicate definitions in the
 * UW server source code, because this file is also intended for use
 * with the UW library.
 *
 * The code which performs byte-order conversions knows the size of the
 * types defined in this file (since there is no typeof() operator).
 */

#define	UIPC_ENV	"UW_UIPC"	/* Unix-domain port environment var */
#define	INET_ENV	"UW_INET"	/* Internet-domain port environ var */

typedef long uwid_t;			/* unique window identifier */

typedef short uwcmd_t;			/* commands: */
#define	UWC_NEWW	0		/*	create new window */
#define	UWC_NEWT	1		/*	create new tty window */
#define	UWC_STATUS	2		/*	creation status message */
#define	UWC_KILLW	3		/*	kill existing window */
#define	UWC_OPTION	4		/*	act upon window option */

typedef short uwoptcmd_t;		/* option subcommands: */
#define	UWOC_SET	0		/*	set value of option */
#define	UWOC_ASK	2		/*	ask for value of option */
#define	UWOC_DO		4		/*	report changes in value */
#define	UWOC_DONT	5		/*	don't report changes */
#define	UWOC_WILL	6		/*	will report changes */
#define	UWOC_WONT	7		/*	won't report changes */

typedef short uwtype_t;			/* window type (see also uw_win.h): */
#define	UWT_ADM31	0		/*	ADM-31 */
#define	UWT_VT52	1		/*	VT-52 */
#define	UWT_ANSI	2		/*	ANSI */
#define	UWT_TEK4010	3		/*	Tektronix 4010 */
#define	UWT_FTP		4		/*	file transfer */
#define	UWT_PRINT	5		/*	output to Macintosh printer */
#define	UWT_PLOT	6		/*	plot window */

typedef short uwopt_t;			/* window option number: */
#define	UWOP_VIS	1		/*	visibility */
#define	UWOP_TYPE	2		/*	window type */
#define	UWOP_POS	3		/*	window position */
#define	UWOP_TITLE	4		/*	window title */
#define	UWOP_WSIZE	5		/*	window size (in bits) */

#define	UWOP_TSIZE	8		/*	terminal size (row,col) */
#define	UWOP_TFONTSZ	9		/*	small/large font size */
#define	UWOP_TCLIPB	10		/*	clipboard/mouse encoding */
#define	UWOP_TBELL	11		/*	audible, visual bell */
#define	UWOP_TCURS	12		/*	cursor shape */

union uwoptval {
	unsigned char	uwov_1bit;
	unsigned char	uwov_6bit;
	unsigned short	uwov_12bit;
	struct {
		unsigned short v,h;
	}		uwov_point;
	char		uwov_string[256];
};


/*
 * UWC_NEWW: create a new window
 *
 * This command is only valid when it is sent as the first message on an
 * Internet stream socket.  The remote port is the data fd for the window.
 * If a control fd is desired, its port number is contained in "uwnt_ctlport"
 */
struct uwneww {
	uwid_t		uwnw_id;	/* unique window identifier */
	uwtype_t	uwnw_type;	/* window type */
	short		uwnw_ctlport;	/* port number of control fd */
};

/*
 * UWC_NEWT: create a new tty window
 *
 * This command is only valid when it is sent as a datagram to the Unix-domain
 * socket.  It must be accompanied by an access right (file descriptor) for
 * the master side of a pty.  The server takes over all responsibilities for
 * this window.  "uwnt_pty" is variable-length.
 */
struct uwnewt {
	uwid_t		uwnt_id;	/* unique window identifier */
	uwtype_t	uwnt_type;	/* window type */
	char		uwnt_pty[1];	/* name of associated pty */
};

/*
 * UWC_STATUS: status report for UWC_NEWW
 *
 * This type of packet is sent by the server to the data fd in response
 * to a UWC_NEWW.  It specifies whether the window was successfully
 * created and what unique ID was assigned.
 */
struct uwstatus {
	uwid_t		uwst_id;	/* unique window identifier */
	short		uwst_err;	/* error status */
	short		uwst_errno;	/* UNIX error code (see <errno.h>) */
};

/*
 * UWC_KILLW: kill the window
 *
 * This command may be sent to either the Unix-domain socket or the control
 * file descriptor of an external window.  In the latter case, "uwkw_id"
 * must match the ID of the window associated with the file descriptor.
 */
struct uwkillw {
	uwid_t		uwkw_id;	/* unique window identifier */
};

/*
 * UWC_OPTION: act upon window option
 *
 * This command may be sent to either the Unix-domain socket or the control
 * file descriptor of an external window.  In the former case, only the
 * UWOC_SET command is processed.
 */
struct uwoption {
	uwid_t		uwop_id;	/* unique window identifier */
	uwopt_t		uwop_opt;	/* option number */
	uwoptcmd_t	uwop_cmd;	/* option subcommand */
	union uwoptval	uwop_val;	/* option value (for UWOC_SET) */
};

struct uwipc {
	unsigned short	uwip_len;	/* length of this message */
	uwcmd_t		uwip_cmd;	/* command (message type) */
	union {
		struct uwneww uwipu_neww;
		struct uwnewt uwipu_newt;
		struct uwstatus uwipu_status;
		struct uwkillw uwipu_killw;
		struct uwoption uwipu_option;
	}		uwip_u;
#define	uwip_neww	uwip_u.uwipu_neww
#define	uwip_newt	uwip_u.uwipu_newt
#define	uwip_status	uwip_u.uwipu_status
#define	uwip_killw	uwip_u.uwipu_killw
#define	uwip_option	uwip_u.uwipu_option
};

#endif

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.