File: mesg.h

package info (click to toggle)
9term 1.6.6-5
  • links: PTS
  • area: main
  • in suites: hamm, slink
  • size: 2,340 kB
  • ctags: 2,035
  • sloc: ansic: 17,308; makefile: 220; sh: 178
file content (101 lines) | stat: -rw-r--r-- 3,072 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/* Copyright (c) 1992 AT&T - All rights reserved. */
#define	VERSION	0

#define	TBLOCKSIZE 512		  /* largest piece of text sent to terminal */
#define	DATASIZE  (UTFmax*TBLOCKSIZE+30) /* ... including protocol header stuff */
#define	SNARFSIZE 16384		/* maximum length of exchanged snarf buffer */
/*
 * Messages originating at the terminal
 */
typedef enum Tmesg
{
	Tversion,	/* version */
	Tstartcmdfile,	/* terminal just opened command frame */
	Tcheck,		/* ask host to poke with Hcheck */
	Trequest,	/* request data to fill a hole */
	Torigin,	/* gimme an Horigin near here */
	Tstartfile,	/* terminal just opened a file's frame */
	Tworkfile,	/* set file to which commands apply */
	Ttype,		/* add some characters, but terminal already knows */
	Tcut,
	Tpaste,
	Tsnarf,
	Tstartnewfile,	/* terminal just opened a new frame */
	Twrite,		/* write file */
	Tclose,		/* terminal requests file close; check mod. status */
	Tlook,		/* search for literal current text */
	Tsearch,	/* search for last regular expression */
	Tsend,		/* pretend he typed stuff */
	Tdclick,	/* double click */
	Tstartsnarf,	/* initiate snarf buffer exchange */
	Tsetsnarf,	/* remember string in snarf buffer */
	Tack,		/* acknowledge Hack */
	Texit,		/* exit */
	TMAX
}Tmesg;
/*
 * Messages originating at the host
 */
typedef enum Hmesg
{
	Hversion,	/* version */
	Hbindname,	/* attach name[0] to text in terminal */
	Hcurrent,	/* make named file the typing file */
	Hnewname,	/* create "" name in menu */
	Hmovname,	/* move file name in menu */
	Hgrow,		/* insert space in rasp */
	Hcheck0,	/* see below */
	Hcheck,		/* ask terminal to check whether it needs more data */
	Hunlock,	/* command is finished; user can do things */
	Hdata,		/* store this data in previously allocated space */
	Horigin,	/* set origin of file/frame in terminal */
	Hunlockfile,	/* unlock file in terminal */
	Hsetdot,	/* set dot in terminal */
	Hgrowdata,	/* Hgrow + Hdata folded together */
	Hmoveto,	/* scrolling, context search, etc. */
	Hclean,		/* named file is now 'clean' */
	Hdirty,		/* named file is now 'dirty' */
	Hcut,		/* remove space from rasp */
	Hsetpat,	/* set remembered regular expression */
	Hdelname,	/* delete file name from menu */
	Hclose,		/* close file and remove from menu */
	Hsetsnarf,	/* remember string in snarf buffer */
	Hsnarflen,	/* report length of implicit snarf */
	Hack,		/* request acknowledgement */
	Hexit,
	HMAX
}Hmesg;
typedef struct Header{
	uchar	type;		/* one of the above */
	uchar	count0;		/* low bits of data size */
	uchar	count1;		/* high bits of data size */
	uchar	data[1];	/* variable size */
}Header;
/*
 * File transfer protocol schematic, a la Holzmann
 *	
 *	proc h
 *	{	pvar n = 0;
 *		queue h[4];
 *	
 *		do
 *		:: (n <  N)  -> n++; t!Hgrow
 *		:: (n == N)  -> n++; t!Hcheck0
 *		:: h?Trequest -> t!Hdata
 *		:: h?Tcheck  -> t!Hcheck
 *		od
 *	}
 *	proc t
 *	{	queue t[4];
 *		do
 *		:: t?Hgrow -> h!Trequest
 *		:: t?Hdata -> skip
 *		:: t?Hcheck0 -> h!Tcheck
 *		:: t?Hcheck ->
 *			if
 *			:: break
 *			:: h!Trequest; h!Tcheck
 *			fi
 *		od
 *	}
 */