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: patchlevel.h,v 1.17 1994/05/31 12:32:35 mlschroe Exp $ FAU
23 */
24
25/****************************************************************
26 *
27 * patchlevel.h: Our life story.
28 *
29 * 08.07.91 -- 3.00.01 -wipe and a 'setenv TERM dumb' bugfix.
30 * 17.07.91 -- 3.00.02 another patchlevel by Wayne Davison
31 * 31.07.91 -- 3.00.03 E0, S0, C0 for flexible semi-graphics, nonblocking
32 *                     window title input and 'C-a :' command input.
33 * 10.08.91 -- 3.00.04 scrollback, markkeys and some bugfixes.
34 * 13.08.91 -- 3.00.05 mark routine improved, ansi prototypes added.
35 * 20.08.91 -- 3.00.06 screen -h, faster GotoPos in overlay, termcap %.
36 *                     instead of %c
37 * 28.08.91 -- 3.00.07 environment variable support. security. terminfo.
38 *                     pyramid and ultrix support.
39 * 07.09.91 -- 3.00.99 secopen(), MIPS support, SVR4 support.
40 * 09.09.91 -- 3.01.00 backspace bug fixed.
41 * 03.10.91 -- 3.01.01 ansi.c: null-ptr fixed, CLS now saves to scrollback.
42 *                     Using setresuid on hpux. Memory leak fixed.
43 *                     Better GotoPos(). Support for IC. Another resize bug.
44 *                     Detach() w/o fore crashed. -T and -A(dapt) option.
45 *                     GNU copyleft.
46 * 19.12.91 -- 3.01.02 flow now really automatic (autoflow killed).
47 *                     7 bit restriction removed from WriteString().
48 * 09.01.92 -- 3.01.03 flow reattach bug fixed. VDISCARD bug fixed.
49 * 13.01.92 -- 3.01.04 new flow concept: ^Af toggles now three states
50 * 21.01.92 -- 3.01.05 '^A:screen 11' bug fixed. aflag in DoScreen().
51 *                     Some code cleanup. attach_tty and display_tty[]
52 *                     added.
53 * 26.01.92 -- 3.01.06 apollo support, "hardcopy_append on", "bufferfile",
54 *                     SECURITY PROBLEM cleared..
55 * 28.01.92 -- 3.01.07 screen after su allowed. Pid became part of
56 *                     SockName. sysvish 14 character restriction considered.
57 * 31.01.92 -- 3.02.00 Ultrix port, Irix 3.3 SGI port, shadow pw support,
58 *                     data loss on stdin overflow fixed. "refresh off".
59 * 12.02.92 -- 3.02.02 stripdev() moved, -S introduced, bufferfile improved,
60 *                     ShellProg coredump cleared. SVR4 bugfixes.
61 *                     I/O code speedup added.
62 * 24.04.92 -- 3.02.03 perfectly stackable overlays. One scrollback per window,
63 *                     not per display.
64 * 05.05.92 -- 3.02.04 very nasty initialisation bug fixed.
65 * 09.05.92 -- 3.02.05 parsing for $:cl: termcap strings and \012 octal notation
66 *                     in screenrc file. More structuring. Detached startup
67 *                     with 'screen -d -m -S...' bugfixed.
68 * 11.05.92 -- 3.02.06 setreuid() bugs cleared, C-a : setenv added.
69 *                     "xn" capability in TERMCAP needed since "am" is there.
70 * 25.06.92 -- 3.02.07 The multi display test version. Have merci.
71 * 15.07.92 -- 3.02.08 :B8: supports automatic charset switching for 8-bit
72 * 26.09.92 -- 3.02.09 Ported to linux. Ignoring bad files in $SCREENDIR
73 * 22.10.92 -- 3.02.10 screen.c/ansi.c splitted in several pieces.
74 *                     Better ISearch. Cleanup of loadav.c
75 * 29.10.92 -- 3.02.11 Key mechanism rewritten. New command names.
76 *                     New iscreenrc syntax.
77 * 02.11.92 -- 3.02.12 'bind g copy_reg' and 'bind x ins_reg' as suggested by
78 *                     stillson@tsfsrv.mitre.org (Ken Stillson).
79 * 03.11.92 -- 3.02.13 Ported to SunOs 4.1.2. Gulp. Some NULL ptrs fixed and
80 *                     misc. braindamage fixed.
81 * 03.11.92 -- 3.02.14 Argument number checking, AKA fixed.
82 * 05.11.92 -- 3.02.15 Memory leaks in Detach() and KillWindow() fixed.
83 *                     Lockprg powerdetaches on SIGHUP.
84 * 12.11.92 -- 3.02.16 Introduced two new termcaps: "CS" and "CE".
85 *                     (Switch cursorkeys in application mode)
86 *                     Tim's async output patch.
87 *                     Fixed an ugly bug in WriteString().
88 *                     New command: 'process'
89 * 16.11.92 -- 3.02.17 Nuking unsent tty output is now optional, (toxic
90 *                     ESC radiation).
91 * 30.11.92 -- 3.02.18 Lots of multi display bugs fixed. New layer
92 *                     function 'Restore'. MULTIUSER code cleanup.
93 *                     Rudimental acls added for multiuser.
94 *                     No more error output, when output gives write errors.
95 * 02.12.92 -- 3.02.19 BROKEN_PIPE and SOCK_NOT_IN_FS defines added for
96 *                     braindead systems. Bug in recover socket code fixed.
97 *                     Can create windows again from shell.
98 * 22.12.92 -- 3.02.20 Made a superb configure script. STY and break fixed.
99 * 01.02.93 -- 3.02.21 Coredump bug fixed: 8-bit output in background windows.
100 *                     Console grabbing somewhat more useable.
101 * 23.02.93 -- 3.02.22 Added ^:exec command, but not tested at all.
102 * 23.02.93 -- 3.02.23 Added 'hardcopydir' and 'logdir' commands.
103 * 11.03.93 -- 3.02.24 Prefixed display and window structure elements.
104 *                     Screen now handles autowrapped lines correctly
105 *                     in the redisplay and mark function.
106 * 19.03.93 -- 3.03.00 Patched for BSD386. pseudos work.
107 * 31.03.93 -- 3.03.01 Don't allocate so much empty attr and font lines.
108 * 04.04.93 -- 3.03.02 fixed :exec !..| less and :|less, patched BELL_DONE &
109 *                     ^B/^F. Fixed auto_nuke attribute resetting. Better linux
110 *                     configure. ^AW shows '&' when window has other attacher.
111 *                     MAXWIN > 10 patch. KEEP_UNDEF in config.h.in, shellaka
112 *                     bug fixed. dec alpha port. Solaris port.
113 * 02.05.93 -- 3.03.03 Configure tweaked for sgi. Update environment with
114 *                     setenv command. Silence on|off, silencewait <sec>,
115 *                     defautonuke commands added. Manual page updated.
116 * 13.05.93 -- 3.03.04 exit in newsyntax script, finished _CX_UX port.
117 *                     Texinfo page added by Jason Merrill. Much longish debug
118 *                     output removed. Select window by title (or number).
119 * 16.06.93 -- 3.04.00 Replaced ^A- by ^A^H to be complementary to ^A SPACE.
120 *                     Moved into CVS. Yacc.
121 * 28.06.93 -- 3.04.01 Fixed selecting windows with numeric title. Silence
122 *                     now works without nethackoption set.
123 * 01.07.93 -- 3.04.02 Implementing real acls.
124 * 22.07.93 -- 3.05.00 Fixed SVR4, some multiuser bugs, -- DISTRIBUTED
125 * 05.08.93 -- 3.05.01 ${srcdir} feature added. Shellprog bug fixed.
126 *                     Motorola reattach bug fixed. Writelock bug fixed.
127 *                     Copybuffer moved into struct acluser. Configure.in
128 *                     uglified for Autoconf1.5. Paste may now have an
129 *                     argument. Interactive setenv. Right margin bug
130 *                     fixed. IRIX 5 patches. -- DISTRIBUTED
131 * 13.08.93 -- 3.05.02 ultrix support added. expand_vars removed from
132 *                     register function. Paste bug fixed.
133 *                     sysmacros.h now included in pty.c on sgis
134 *                     Strange hpux hack added for TTYCMP.
135 *                     Zombie feature improved.
136 * 08.09.93 -- 3.05.03 Makefile and OSF1 fine tuning. Eased attach to
137 *                     multi sessions. Writelock now obeys acl write
138 *                     permissions. UserDel() now preserves defaults.
139 *                     acladd/aclchg syntax improved. Updated
140 *                     documentation. Bug in at command fixed.
141 *                     MakeWindow() now obeys perm defaults.
142 * 03.10.93 -- 3.05.90 Multiple displays can now share the same window.
143 *                     Layers now belong to Windows. "Select -" yields a blank
144 *                     page. Debug output can be switched on/off at runtime.
145 *                     Number command changes window number and utmp-slot.
146 * 14.10.93 -- 3.05.91 Mechanism to find the "best" window added. Much
147 *                     debugging done and still needed. Slowpaste setting now
148 *                     per window. Preserving fore AND other window when
149 *                     detached. Per user settings for `monitor' and `silence'.
150 *                     New command `su'. BlankWindow performs now ColonInput.
151 *                     History command fixed, it depended on paste code that
152 *                     was previously changed to allow concatenation of buffers.
153 *                     Fixing umask problem with WriteFile() reported by Jamie
154 *                     Mason.
155 * 30.11.93 -- 3.05.04 Kanji support added. New keymap feature:
156 *                     bindkey and various map commands. GR and C1
157 *                     flags now define the character processing.
158 * 30.11.93 -- 3.05.92 Kanji support added. New keymap feature:
159 *                     bindkey and various map commands. GR and C1
160 *                     flags now define the character processing.
161 * 17.12.93 -- 3.05.93 Tcon authentification mechanism. AddChar macro broken up
162 *                     into 2 functions. Acl.c, network.c, misc.c, termcap.c
163 *                     and tty.c are now display free!
164 * 27.12.93 -- 3.05.94 Telnet login works, can export one window per mux.
165 *                     Acl-groups added. Export rights is an acl.
166 *                     connect works, can create shadow window thus import
167 *                     command channel and switch windows. Can detach sessions
168 *                     from each other. Can renumber imported and exported
169 *                     windows. DL_LOOP prevents now SEGV, sessions have names
170 *                     and can be connected to very flexible.
171 * 03.01.94 -- 3.05.95 Import and export of any number of channels works,
172 *                     except a small bug with margin handling when exporting.
173 *                     Window titles are forwarded, break is forwarded and
174 *                     tcon learned the mux protocoll. A few more bugs in
175 *                     network.c fixed. Tcon has Mux arrays, Protocoll is '\0'
176 *                     free.
177 * 08.01.94 -- 3.05.96 More tcon work. Solaris debugging.
178 *
179 * 14.01.94 -- 3.05.05 New FindSocket() code. Nicer socket handling.
180 * 20.01.94 -- 3.05.06 New attribute handling code. NeXT fixes.
181 * 04.02.94 -- 3.05.07 Ugly bug in ScrollH fixed. Keymap defaults.
182 * 10.03.94 -- 3.05.97 'defsilence' by Lloyd Zusman. Zombie resurrekt key.
183 *                     -b, -p options. Fixed Compilekeys(), gulp. config.h
184 *                     allows choice of VMIN/VTIME/NDELAY for ttys.
185 * 13.04.94 -- 3.05.08 Kanji bug fixed. POSIX sigaction support.
186 *                     os.h cleanup. UTNOKEEP splitted into
187 *                     UT_CLOSE and UT_UNSORTED. linux no longer
188 *                     implies UT_CLOSE. "struct display" name
189 *                     convention change: _d_ to d_ and d_ to D_.
190 * 20.04.94 -- 3.05.09 configure.in ptyrange bug fixed. Upgraded
191 *                     to autoconf-1.8
192 * 27.04.94 -- 3.05.10 97801 obscure code support. Linux long
193 *                     password workaround.
194 * 09.05.94 -- 3.05.11 seteuid() support added. Security fixes.
195 *                     _IBMR2 kludge makes call to sleep obsolete.
196 *                     Small fixes in uname() code. djm suggests replace of
197 *                     BSDI by __bsdi__.
198 * 27.07.94 -- 3.05.12 seteuid attacher bug fixed. ks/ke changed
199 *                     in termcap/info and termcap.c
200 * 01.09.94 -- 3.05.58 (There are a few more patches to come, subtracted 40)
201 *                     breaktype command to select how we cause breaks.
202 *                     Testing logfile.c. Manual and texinfo documentation
203 *                     updated to explain all new commands except keymapping.
204 *                     Added modem lines to info of plain ttys. Using
205 *                     cfset{i,o}speed() for POSIX is better, much better.
206 * 07.09.94 -- 3.05.59 Flushing logfiles every 5 seconds. Testing new
207 *                     resize linewrap code. Resize with care.
208 *                     Resurrect now displays its command string.
209 * 11.09.94 -- 3.05.60 Lines are now correctly wrapped, when window size
210 *                     changes; this prevents loss of text.
211 * 15.09.94 -- 3.05.61 umask renamed to aclumask, bell renamed to bell_msg.
212 *                     *_msg commands show message when called w/o parameter.
213 *                     Many changes in the manual, thanks to Sven Guckes.
214 *                     -O removed.
215 * 27.09.94 -- 3.05.13 defwlock stupidity fixed. MakeTermcap ks/ke
216 *                     ':' removed. Termcap entry improved.
217 *                     copy_reg and ins_reg obsoleted by better paste command:
218 *                     paste        =>  paste .
219 *                     copy_reg r   =>  paste . r
220 *                     ins_reg r    =>  paste r
221 *                     ins_reg      =>  paste
222 * 18.10.94 -- 3.05.62 breaktype changed. -L option added to enable logging
223 *                     from both command line and screenrc. SIGXFSZ ignored.
224 * 28.11.94 -- 3.05.63 ACL's sharpened. No user has any rights, unless
225 *                     explicitly given. Only two exceptions: 1) "acladd user"
226 *                     without further parameters. 2) Evry user has a default
227 *                     umask that gives himself all permissions on the windows
228 *                     he creates. Bug with colon input on shared windows fixed.
229 *                     The commad is now executed by the user typing the final
230 *                     Enter-Key rather by a random user.
231 * 30.11.94 -- 3.05.64 On demand grabbing of pending auto writelocks.
232 *                     Solaris troubles us with kill(pid, 0) ... not fixed...
233 *                     defbreaktype added. (breaktype is also global, still...)
234 *                     SIGARGHACK cleared, to pamper poor little Ultrix4.4 cfe.
235 *                     defescape added.
236 *                     w_status changed to w_hstatus, it's a #define in
237 *                     Domain/OS reported by ejackson@iastate.edu.
238 * 05.12.94 -- 3.05.17 SVR4 pty bug fixed, don't update window status
239 *                     line if not changed, onyx support. Manual
240 *                     pages updated.
241 * 14.12.94 -- 3.05.18 w_status changed to w_hstatus, it's a #define in
242 *                     Domain/OS reported by ejackson@iastate.edu.
243 *                     Screen manpage patches by larry.
244 *                     Ugly seteuid bug in ForkWindow() fixed.
245 * 20.12.94 -- 3.06.00 Solaris has broken seteuid().
246 *                     osf loadav patches.  -- DISTRIBUTED
247 * 08.01.95 -- 3.05.65 Bug with LOGOUTOK and -ln fixed. redundant secfopen()
248 *                     avoided, when logfflush() looks at delayed nfs updates.
249 *                     Option parser now allowes condensed options. -A fixed.
250 *                     New commands 'preselect' and 'defpreselect'. New option
251 *                     -WdmS starts a detached screen session with watchdog.
252 * 16.01.95 -- 3.06.01 KANJI patch. doc/Makefile.in fixed.
253 *                     Install now calls doc/Makefile install.
254 *                     Don't use 'ds' too often, breaks MSkermit.
255 *                     undef'd LOGOUTOK logs in now.
256 *                     Ultrix is broken, too (seteuid).
257 *                     Use \r (not \n) to join lines in pastebuf.
258 *                     bindkey can now remove sequences.
259 *                     InitTTY fixed for PLAIN. -- DISTRIBUTED
260 * 06.02.95 -- 3.05.66 DisplayLine() does now clipping to reduce coredump-
261 *                     frequency. Window size is adapted to the display that
262 *                     types input, to reduce multi-user confusion. Scrollback
263 *                     mode still may get the wrong size.
264 * 07.02.95 -- 3.05.67 WinRewrite() also needs to clip. Users without unix
265 *                     account, but with screen password allowed. Chacl
266 *                     allows password change, su prompts for user name too.
267 * 01.03.95 -- 3.05.68 Leaving a window may now cause a resize to match a
268 *                     remaining display. Simple ESC-CR fix in the vt100
269 *                     state machine.
270 * 26.03.95 -- 3.05.69 Markroutine() needs to resize the window to avoid
271 *                     coredumps, just like WinProcess() already does.
272 *                     More NEED_ flags added in comm.c to avoid coredumps.
273 * 04.04.95 -- 3.06.02 Simple ESC-CR fix in the vt100 state machine.
274 *                     Now compiles again with all extras disabled.
275 *                     Zombie resurrect added. defc1, defgr, defkanji
276 *                     added. Screen now replies to a secondary DA
277 *                     query. Some missing NEED_XXX added in comm.c.
278 *                     Better default tty permissions/group test.
279 *                     More AUX support, now compiles with POSIX.
280 *                     Function keycodes xtermified (F11, F12).
281 *                     Paste bug fixed (only worked with KANJI).
282 *                     Check bcopy before memcpy/memmove.
283 *                     FindSocket code much fixed & improved.
284 * 10.04.95 -- 3.05.70 Display_displays() now shows the users permissions on
285 *                     the currently displayed window, this is easier than a
286 *                     full featured lsacl, but also helps. chacl can now copy
287 *                     users, but we need to copy windows.
288 * 26.04.95 -- 3.05.71 Multi digit screen numbers in utmp. MakeWindow() now
289 *                     echoes what it does, just like RemakeWindow() when
290 *                     'verbose on' (default off).
291 *                     `screen -ls myname/' will find own(!) non-multi sessions.
292 *                     Command line option -q improved and documented.
293 *                     'debug off' also shuts attacher debugging off now.
294 * 03.05.95 -- 3.05.72 'connect' command bugfixed. colon prompt improved.
295 *                     open(O_NONBLOCK) does not work on 4.1.3, using O_NDELAY.
296 *                     There are writes to exp_wid2chan[-1], XXX I just added
297 *                     fillers to the mux structure, please debug this ASAP!
298 *                     WindowByName() prefers exact matches now. Esc forwarding
299 *                     from Frontend to Backend suppressed unless specified.
300 * 26.06.95 -- 3.05.73 Improving the combination of dflag and rflag: If both
301 *                     are set, a screen session is reattached, regardless
302 *                     if it was previously detached or attached elseewhere.
303 *                     "screen -D -RR" is thus most powerful: Give me my screen
304 *                     session here and now. No matter, if this means creating
305 *                     a new session (due to the second R without warning
306 *                     message), detching the session first (and due to the
307 *                     capitalised D logging out), or simply attaching to it.
308 * 13.07.95 -- 3.05.74 Markroutine learned new join mode: comma seperated.
309 *                     Can disable the detach feature from config.h.
310 *                     Configure.in now calls etc/toolcheck. Password is no
311 *                     longer a static array.
312 * 30.07.95 -- 3.05.75 Karl Heuer wants to install with a relative symlink.
313 *                     Command line option -k removed (try -t).
314 * 31.08.95 -- 3.06.03 Color support, digraph command, code
315 *                     cleanup (struct mchar/mline added).
316 * 03.09.95 -- 3.06.04 SetRendition display check. Solaris unblock
317 *                     SIGHUP. w_curchar->w_rend, lintified.
318 *                     Shadow-password code moved and rewritten
319 *                     (includes sun C2).
320 * 06.09.95 -- 3.05.76 Added support for braille displays (by Hadi Bargi Rangin
321 *                     and Bill Barry, {bargy,barryb}@dots.physics.orst.edu
322 *                     Added baud, cs8, istrip, ixon, ixoff  options for plain
323 *                     tty windows. Untested.
324 * 09.09.95 -- 3.07.99 Merged 3.7.76 back into the main distribution but
325 *                     without network, blankwindow and dlist support.
326 *                     Global variable Password removed.
327 *                     Resize code completely rewritten.
328 *                     New commands: sorendition, (def)charset.
329 *                     strftime-like message generation.
330 * 26.09.95 -- 3.06.05 resize code completely rewritten.
331 *                     Very visible cursor added. vbell sequence
332 *                     \Eb added. _delay for terminfo libs added
333 *                     to make the padding work for the first time.
334 *                     New ProcessInput() makes "command command"
335 *                     work. '[def]escape ""' clears escape chars.
336 *                     Changed logdir command to logfile. It now uses
337 *                     MakeWinMsg() to create the filename.
338 *                     Updated the manuals.
339 * 03.10.95 -- 3.08.00 Merged 3.07.99 back into my 3.06.05.
340 *                     pause removed. NONROOT now in config.h.
341 *                     sysV68 configure test. Socket protocol got
342 *                     revision number. New command termcapinfo.
343 *                     Screenrcs, docs & configure.in updated
344 * 18.10.95 -- 3.08.01 Info shows parser state.
345 *                     Very visible cursor added. vbell sequence
346 *                     \Eb added. _delay for terminfo libs added
347 *                     to make the padding work for the first time.
348 *                     Braille code almost completely reworked.
349 *                     New ProcessInput() makes "command command"
350 *                     work. '[def]escape ""' clears escape chars.
351 *                     Command logdir -> logfile and uses MakeWinMsg.
352 *                     Updated the manuals. New mark command 'x'.
353 *                     stuff has new "-k" parameter.
354 * 28.10.95 -- 3.06.06 Added new 'XC' capability to provide
355 *                     a method for character translation.
356 * 17.11.95 -- 3.07.00 Added CheckEscape() function.
357 *                     acl -> acls because of hpux10 nameclash
358 *                     /stand/vmunix added to kernel list (hpux10)
359 *                     stripdev changed to translate
360 *                     /dev/pts<n> to /dev/pts/<n> (unixware)
361 *                     -lgen added to GETUTENT configure test.
362 * 20.11.95 -- 3.07.01 corrected vbell null ptr reference.
363 *                     -- DISTRIBUTED
364 * 27.11.95 -- 3.08.02 Added CheckEscape() function.
365 *                     acl -> acls because of hpux10 nameclash
366 *                     /stand/vmunix added to kernel list (hpux10)
367 *                     stripdev changed to translate
368 *                     /dev/pts<n> to /dev/pts/<n> (unixware)
369 *                     -lgen added to GETUTENT configure test.
370 *                     corrected vbell null ptr reference
371 *          -- 3.08.03 etc/toolcheck is now shouting louder.
372 *                     Solaris 2.5 has /kernel/genunix.
373 *                     Touching socket when detach/attach.
374 *                     FindWindow corrected. AIX4 patch
375 *                     from robert@mayday.cix.co.uk.
376 *  1.09.96 -- 3.07.02 added #ifdef MAPKEYS for CheckEscape.
377 *                     etc/toolcheck is now shouting louder.
378 *                     Touching socket when detach/attach.
379 *                     Linux tcflush hack. Linux md5 password suport.
380 *                     USE_SGR support for dumb (wyse) terminals.
381 *                     "at" and "reset" commands improved.
382 *                     Now sensitive to broken AIX4 TIOCPKT.
383 *                     tek patch unapplied.
384 *                     linux utmp patch: set slot to DEAD_PROCESS.
385 *                     include signal.h for killpg if hpux10.10.
386 *                     linux: elf, but no SVR4, check for utmpx.
387 *                     hpux10.10 libcurses breaks select()!
388 *                     -- DISTRIBUTED
389 * 27.09.96 -- 3.07.03 ncurses tgetflag returns -1 if cap not valid.
390 *                     autonuke fix: reset application mode. An init
391 *                     string may have cleared it.
392 *                     Small UTMPOK patch from Douglas B. Jones.
393 * 23.06.97 -- 3.07.04 Some bugfixes. Kanji fixed.
394 *                     Code update from 3.8.6: Colon line editing added.
395 *                     Digraph made line-editing resistant.
396 *                     DEC ALPHA ut_user[0] = 0;
397 *                     Added error messages to exit_with_usage.
398 *                     FindSocket code improved (the MULTIUSER part).
399 *                     Use utimes() if available. Power-detached start.
400 *                     vsnprintf() support. exit -> _exit in window.c.
401 *                     AddXChars now tolerates NULL string.
402 *                     -- DISTRIBUTED
403 * 10.11.98 -- 3.07.05 Wayne's resize.c patch to keep the cursor
404 *                     onscreen. FindWindow corrected. AIX4 patch
405 *                     from robert@mayday.cix.co.uk.
406 *                     Fixed kanji am & markcursor bugs.
407 *                     SCO support (Gert Doering).
408 *                     Wayne's statusline extra space. New flag nospc
409 *                     for MakeWinMsg. New TF capability: add missing
410 *                     termcap/info caps. screen-exchange security
411 *                     fix. Use kstat for Solaris' loadavg.
412 *                     Check for mode 775 if screen runs setgid.
413 *                     Fixed typo in silence command.
414 *                     Allow detach with no tty. HPUX10.20 ltchars
415 *                     hack. Use @1/@7 as replacement for kh/kH.
416 *                     Use seteuid before calling tgetent.
417 *                     Check for displays in Msg().
418 *                     Linux ncurses hack: redefine _nc_timed_wait.
419 *                     Configure check for ncurses (sigh).
420 *                     ITOH Yasufumi: kanji fixes, osf support,
421 *                     bug fixes. More secure Rewrite().
422 *                     Increased line buffer size to 2048 bytes.
423 *                     SCO-5 Fixes (Brian L. Gentry).
424 * 25.11.98 -- 3.07.06 resize code now handles tabs correctly.
425 *                     -- DISTRIBUTED
426 *          -- 3.09.00 loads'o'bugs fixed, 3.8 merged with 3.7.
427 *                     new region clip code.
428 *                     Many new features (see NEWS file).
429 *  3.08.99 -- 3.09.02 -- DISTRIBUTED
430 * 11.08.99 -- 3.09.04 small utmp fix, BSD chflags fix, tty mode fix
431 *                     -- DISTRIBUTED
432 *  1.09.99 -- 3.09.05 linux SVR4_PTYS fixes, better ShowWindos(),
433 *                     Panic() displays bug fixed, strerror fixed,
434 *                     missing $srcdir & bad prefix in Makefiles.
435 *                     console grabbing with SRIOCSREDIR.
436 *                     linux utmp workaround added. Some KANJI bugs
437 *                     fixed. Stupid StuffKey() bug fixed.
438 *                     -- DISTRIBUTED
439 * 24.07.00 -- 3.09.06 kanji fixes. lock escape char fix.
440 *                     removed delayed message hack.
441 *                     resize command & focus subcomands by joze.
442 *                     fix for solaris' utmp_helper bug.
443 *                     linux tty handling fix.
444 *                     mousetracking, rxvt osc sequences.
445 *                     background color erase support.
446 *                     don't log user in after hangup.
447 *                     hstatus escape update bug fixed.
448 *  1.09.00 -- 3.09.08 -- DISTRIBUTED
449 * 25.05.01 -- 3.09.09 use $DESTDIR in Makefiles.
450 *                     renamed struct user to acluser to fix hpux
451 *                     problem for good. utf8 support. 16 color
452 *                     support. New -X option and escape sequence
453 *                     to send screen commands.
454 *                     New commands: attrcolor, defutf8, dinfo, utf8.
455 *                     Extended commands: width, height, readbuf,
456 *                     writebuf. Better nlist64 detection.
457 *                     New config.h option SOCKDIR_IS_LOCAL_TO_HOST.
458 *                     Don't call tputs with an empty string.
459 *                     New string escape %{ for attr/color changes.
460 *                     LRefreshAll bug fixed (0 instead of -1 as bce).
461 *                     New quote handling in Parse(). Workaround for
462 *                     some bad termcap/info entries added. Set BE
463 *                     for all xtermish emulators. Added '0x' and
464 *                     'U+' prefix in digraph command. LOADAV_TYPE
465 *                     detection fixed.
466 *                     -- DISTRIBUTED
467 *  4.09.01 -- 3.09.10 '-R' security fix. Fixed array in MScrollV().
468 *                     -- DISTRIBUTED
469 *                     Reset charset after 'me'.
470 * 14.02.02 -- 3.09.11 Support for other encodings. Double width
471 *                     utf-8 chars. 'L' modifier for %D, %M, %w
472 *                     and %W. New %= (hfill), %H (hostname),
473 *                     %f (flags), %F (focus) escapes. New commands
474 *                     source, windowlist, deflog. Command key classes.
475 *                     New login state: always. Time format
476 *                     changeable. 256 color support.
477 *                     Updated digraph table. Ignorecase.
478 *                     Windowlist resizeable on blank window.
479 *                     Added encoding to paste buffers.
480 *                     Hpux loadtype detection fixed.
481 *                     Disabled im/ic warning. Fixed a bug that
482 *                     could cause window lockups in rare
483 *                     circumstances. Made hangup signal to the
484 *                     backend process detach all displays.
485 *                     New escapes %< %>, + and - flag for %w.
486 *                     Added eval command, added -h option to detach.
487 *                     Also set flayer when processing -X commands.
488 *                     use getpt() on linux systems. doc patches from
489 *                     Adam Lazur. tty flow/intr cleanup.
490 *                     -- DISTRIBUTED
491 * 29.08.2002  3.09.12 Port to POSIX 1003.1-2001 hosts (Paul Eggert).
492 *                     Fixed encoding for reattach password test.
493 *                     Fixed NUL characters when encodings are active.
494 *                     Fixed silly encodings bugs. Fixed bogus
495 *                     oldflayer when a window gets freed.
496 *                     Altscreen support by Gurusamy Sarathy.
497 *                     Reuse old password in builtin_screenlock.
498 *                     -- DISTRIBUTED
499 * 05.09.2002  3.09.13 added missing break statement that broke
500 *                     the eval command.
501 *                     -- DISTRIBUTED
502 * 13.03.2003  3.09.15 Console workaround for linux. Scrolling-region
503 *                     reset fix. GBK encoding added.
504 *                     support for unicode combining characters added.
505 *                     openpty() support added (thomas@xs4all.nl).
506 *                     preselect of blank window ('-') or window
507 *                     list ('=') added. Added %` string escape
508 *                     and backtick command.
509 *                     -- DISTRIBUTED
510 * 08.09.2003  4.00.00 rewrote nonblock command, added defnonblock.
511 *                     added zmodem support (catch & passthrough).
512 *                     added screenblanker.
513 *                     fixed a couple of GBK bugs.
514 *                     rewrote command parsing.
515 *                     added -m option to windowlist (Felix Rosencrantz)
516 *                     -- DISTRIBUTED
517 * 18.09.2003  4.00.01 fixed two small bugs in the new parser.
518 *                     -- DISTRIBUTED
519 * 05.12.2003  4.00.02 fixed a bug in the ansi parser. fixed execs
520 *                     on ttys. fixed hardstatus line on blanked screen.
521 *                     -- DISTRIBUTED
522 * 23.10.2006  4.00.03 fixed two bug in combining characters handling
523 *                     (cstone & Rich Felker).
524 *                     -- DISTRIBUTED
525 */
526
527#define ORIGIN "FAU"
528#define REV 4
529#define VERS 0
530#define PATCHLEVEL 3
531#define DATE "23-Oct-06"
532#define STATE ""
533