~dannf/ubuntu/saucy/screen/lp1213278-from-debian

« back to all changes in this revision

Viewing changes to screen.h

  • Committer: Bazaar Package Importer
  • Author(s): Nathaniel McCallum
  • Date: 2004-09-03 15:15:33 UTC
  • Revision ID: james.westby@ubuntu.com-20040903151533-px02yqlrchs4fv2t
Tags: upstream-4.0.2
ImportĀ upstreamĀ versionĀ 4.0.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Copyright (c) 1993-2002
 
2
 *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
 
3
 *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
 
4
 * Copyright (c) 1987 Oliver Laumann
 
5
 *
 
6
 * This program is free software; you can redistribute it and/or modify
 
7
 * it under the terms of the GNU General Public License as published by
 
8
 * the Free Software Foundation; either version 2, or (at your option)
 
9
 * any later version.
 
10
 *
 
11
 * This program is distributed in the hope that it will be useful,
 
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
 * GNU General Public License for more details.
 
15
 *
 
16
 * You should have received a copy of the GNU General Public License
 
17
 * along with this program (see the file COPYING); if not, write to the
 
18
 * Free Software Foundation, Inc.,
 
19
 * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
 
20
 *
 
21
 ****************************************************************
 
22
 * $Id: screen.h,v 1.12 1994/05/31 12:32:54 mlschroe Exp $ FAU
 
23
 */
 
24
 
 
25
#include "os.h"
 
26
 
 
27
#if defined(__STDC__)
 
28
# ifndef __P
 
29
#  define __P(a) a
 
30
# endif
 
31
#else
 
32
# ifndef __P
 
33
#  define __P(a) ()
 
34
# endif
 
35
# define const
 
36
#endif
 
37
 
 
38
#include "osdef.h"
 
39
 
 
40
#include "ansi.h"
 
41
#include "sched.h"
 
42
#include "acls.h"
 
43
#include "comm.h"
 
44
#include "layer.h"
 
45
#include "term.h"
 
46
 
 
47
 
 
48
#ifdef DEBUG
 
49
# define STATIC         /* a function that the debugger should see */
 
50
#else
 
51
# define STATIC static
 
52
#endif
 
53
 
 
54
#ifdef DEBUG
 
55
# define DEBUGDIR "/tmp/debug"
 
56
# define debugf(a)       do {if(dfp){fprintf a;fflush(dfp);}} while (0)
 
57
# define debug(x)        debugf((dfp,x))
 
58
# define debug1(x,a)     debugf((dfp,x,a))
 
59
# define debug2(x,a,b)   debugf((dfp,x,a,b))
 
60
# define debug3(x,a,b,c) debugf((dfp,x,a,b,c))
 
61
  extern FILE *dfp;
 
62
#else
 
63
# define debugf(a)       do {} while (0)
 
64
# define debug(x)        debugf(x)
 
65
# define debug1(x,a)     debugf(x)
 
66
# define debug2(x,a,b)   debugf(x)
 
67
# define debug3(x,a,b,c) debugf(x)
 
68
#endif
 
69
 
 
70
#ifndef DEBUG
 
71
# define NOASSERT
 
72
#endif
 
73
 
 
74
#ifndef NOASSERT
 
75
# if defined(__STDC__)
 
76
#  define ASSERT(lousy_cpp) do {if (!(lousy_cpp)) {if (!dfp) opendebug(0, 1);debug2("ASSERT("#lousy_cpp") failed file %s line %d\n", __FILE__, __LINE__);abort();}} while (0)
 
77
# else
 
78
#  define ASSERT(lousy_cpp) do {if (!(lousy_cpp)) {if (!dfp) opendebug(0, 1);debug2("ASSERT(lousy_cpp) failed file %s line %d\n", __FILE__, __LINE__);abort();}} while (0)
 
79
# endif
 
80
#else
 
81
# define ASSERT(lousy_cpp) do {} while (0)
 
82
#endif
 
83
 
 
84
/* here comes my own Free: jw. */
 
85
#define Free(a) {if ((a) == 0) abort(); else free((void *)(a)); (a)=0;}
 
86
 
 
87
#define Ctrl(c) ((c)&037)
 
88
 
 
89
#define MAXSTR          256
 
90
#define MAXARGS         64
 
91
#define MSGWAIT         5
 
92
#define MSGMINWAIT      1
 
93
#define SILENCEWAIT     30
 
94
 
 
95
/*
 
96
 * if a nasty user really wants to try a history of 3000 lines on all 10
 
97
 * windows, he will allocate 8 MegaBytes of memory, which is quite enough.
 
98
 */
 
99
#define MAXHISTHEIGHT           3000
 
100
#define DEFAULTHISTHEIGHT       100
 
101
#if defined(NAME_MAX) && NAME_MAX < 16
 
102
# define DEFAULT_BUFFERFILE     "/tmp/screen-xchg"
 
103
#else
 
104
# define DEFAULT_BUFFERFILE     "/tmp/screen-exchange"
 
105
#endif
 
106
 
 
107
 
 
108
#if defined(hpux) && !(defined(VSUSP) && defined(VDSUSP) && defined(VWERASE) && defined(VLNEXT))
 
109
# define HPUX_LTCHARS_HACK
 
110
#endif
 
111
 
 
112
struct mode
 
113
{
 
114
#ifdef POSIX
 
115
  struct termios tio;
 
116
# ifdef HPUX_LTCHARS_HACK
 
117
  struct ltchars m_ltchars;
 
118
# endif /* HPUX_LTCHARS_HACK */
 
119
#else /* POSIX */
 
120
# ifdef TERMIO
 
121
  struct termio tio;
 
122
#  ifdef CYTERMIO
 
123
  int m_mapkey;
 
124
  int m_mapscreen;
 
125
  int m_backspace;
 
126
#  endif
 
127
# else /* TERMIO */
 
128
  struct sgttyb m_ttyb;
 
129
  struct tchars m_tchars;
 
130
  struct ltchars m_ltchars;
 
131
  int m_ldisc;
 
132
  int m_lmode;
 
133
# endif /* TERMIO */
 
134
#endif /* POSIX */
 
135
#if defined(KANJI) && defined(TIOCKSET)
 
136
  struct jtchars m_jtchars;
 
137
  int m_knjmode;
 
138
#endif
 
139
};
 
140
 
 
141
 
 
142
/* #include "logfile.h" */      /* (requires stat.h) struct logfile */
 
143
#include "image.h"
 
144
#include "display.h"
 
145
#include "window.h"
 
146
 
 
147
/*
 
148
 * Parameters for the Detach() routine
 
149
 */
 
150
#define D_DETACH        0
 
151
#define D_STOP          1
 
152
#define D_REMOTE        2
 
153
#define D_POWER         3
 
154
#define D_REMOTE_POWER  4
 
155
#define D_LOCK          5
 
156
#define D_HANGUP        6
 
157
 
 
158
/*
 
159
 * Here are the messages the attacher sends to the backend
 
160
 */
 
161
#define MSG_CREATE      0
 
162
#define MSG_ERROR       1
 
163
#define MSG_ATTACH      2
 
164
#define MSG_CONT        3
 
165
#define MSG_DETACH      4
 
166
#define MSG_POW_DETACH  5
 
167
#define MSG_WINCH       6
 
168
#define MSG_HANGUP      7
 
169
#define MSG_COMMAND     8
 
170
 
 
171
/*
 
172
 * versions of struct msg:
 
173
 * 0:   screen version 3.6.6 (version count introduced)
 
174
 */
 
175
#define MSG_VERSION     0       
 
176
#define MSG_REVISION    (('m'<<24) | ('s'<<16) | ('g'<<8) | MSG_VERSION)
 
177
struct msg
 
178
{
 
179
  int protocol_revision;        /* reduce harm done by incompatible messages */
 
180
  int type;
 
181
  char m_tty[MAXPATHLEN];       /* ttyname */
 
182
  union
 
183
    {
 
184
      struct
 
185
        {
 
186
          int lflag;
 
187
          int aflag;
 
188
          int flowflag;
 
189
          int hheight;          /* size of scrollback buffer */
 
190
          int nargs;
 
191
          char line[MAXPATHLEN];
 
192
          char dir[MAXPATHLEN];
 
193
          char screenterm[20];  /* is screen really "screen" ? */
 
194
        }
 
195
      create;
 
196
      struct
 
197
        {
 
198
          char auser[20 + 1];   /* username */
 
199
          int apid;             /* pid of frontend */
 
200
          int adaptflag;        /* adapt window size? */
 
201
          int lines, columns;   /* display size */
 
202
          char preselect[20];
 
203
          int esc;              /* his new escape character unless -1 */
 
204
          int meta_esc;         /* his new meta esc character unless -1 */
 
205
          char envterm[20 + 1]; /* terminal type */
 
206
          int encoding;         /* encoding of display */
 
207
        }
 
208
      attach;
 
209
      struct 
 
210
        {
 
211
          char duser[20 + 1];   /* username */
 
212
          int dpid;             /* pid of frontend */
 
213
        }
 
214
      detach;
 
215
      struct 
 
216
        {
 
217
          char auser[20 + 1];   /* username */
 
218
          int nargs;
 
219
          char cmd[MAXPATHLEN]; /* command */
 
220
          int apid;             /* pid of frontend */
 
221
          char preselect[20];
 
222
        }
 
223
      command;
 
224
      char message[MAXPATHLEN * 2];
 
225
    } m;
 
226
};
 
227
 
 
228
/*
 
229
 * And the signals the attacher receives from the backend
 
230
 */
 
231
#define SIG_BYE         SIGHUP
 
232
#define SIG_POWER_BYE   SIGUSR1
 
233
#define SIG_LOCK        SIGUSR2
 
234
#define SIG_STOP        SIGTSTP
 
235
#ifdef SIGIO
 
236
#define SIG_NODEBUG     SIGIO           /* triggerd by command 'debug off' */
 
237
#endif
 
238
 
 
239
 
 
240
#define BELL            (Ctrl('g'))
 
241
#define VBELLWAIT       1 /* No. of seconds a vbell will be displayed */
 
242
 
 
243
#define BELL_ON         0 /* No bell has occurred in the window */
 
244
#define BELL_FOUND      1 /* A bell has occurred, but user not yet notified */
 
245
#define BELL_DONE       2 /* A bell has occured, user has been notified */
 
246
 
 
247
#define BELL_VISUAL     3 /* A bell has occured in fore win, notify him visually */
 
248
 
 
249
#define MON_OFF         0 /* Monitoring is off in the window */
 
250
#define MON_ON          1 /* No activity has occurred in the window */
 
251
#define MON_FOUND       2 /* Activity has occured, but user not yet notified */
 
252
#define MON_DONE        3 /* Activity has occured, user has been notified */
 
253
 
 
254
#define DUMP_TERMCAP    0 /* WriteFile() options */
 
255
#define DUMP_HARDCOPY   1
 
256
#define DUMP_EXCHANGE   2
 
257
#define DUMP_SCROLLBACK 3
 
258
 
 
259
#define SILENCE_OFF     0
 
260
#define SILENCE_ON      1
 
261
 
 
262
extern char strnomem[];
 
263
 
 
264
/*
 
265
 * line modes used by Input()
 
266
 */
 
267
#define INP_COOKED      0
 
268
#define INP_NOECHO      1
 
269
#define INP_RAW         2
 
270
#define INP_EVERY       4
 
271
 
 
272
 
 
273
#ifdef MULTIUSER
 
274
struct acl
 
275
{
 
276
  struct acl *next;
 
277
  char *name;
 
278
};
 
279
#endif
 
280
 
 
281
/* register list */
 
282
#define MAX_PLOP_DEFS 256
 
283
 
 
284
struct baud_values
 
285
{
 
286
  int idx;      /* the index in the bsd-is padding lookup table */
 
287
  int bps;      /* bits per seconds */
 
288
  int sym;      /* symbol defined in ttydev.h */
 
289
};
 
290
 
 
291
/*
 
292
 * windowlist orders
 
293
 */
 
294
#define WLIST_NUM 0
 
295
#define WLIST_MRU 1