xref: /freebsd/contrib/less/version.c (revision 5c52a79884070364bfc920fb8e492cfac61ec72f)
1 /*
2  * Copyright (C) 1984-2007  Mark Nudelman
3  *
4  * You may distribute under the terms of either the GNU General Public
5  * License or the Less License, as specified in the README file.
6  *
7  * For more information about less, or for information on how to
8  * contact the author, see the README file.
9  */
10 
11 
12 /*
13 ----------------------- CHANGE HISTORY --------------------------
14 
15        1/29/84	Allowed use on standard input
16        2/1/84	Added E, N, P commands
17        4/17/84	Added '=' command, 'stop' signal handling
18        4/20/84	Added line folding
19 v2     4/27/84	Fixed '=' command to use BOTTOM_PLUS_ONE,
20 		instead of TOP, added 'p' & 'v' commands
21 v3     5/3/84	Added -m and -t options, '-' command
22 v4     5/3/84	Added LESS environment variable
23 v5     5/3/84	New comments, fixed '-' command slightly
24 v6     5/15/84	Added -Q, visual bell
25 v7     5/24/84	Fixed jump_back(n) bug: n should count real
26 		lines, not folded lines.  Also allow number on G command.
27 v8     5/30/84	Re-do -q and -Q commands
28 v9     9/25/84	Added "+<cmd>" argument
29 v10    10/10/84	Fixed bug in -b<n> argument processing
30 v11    10/18/84	Made error() ring bell if \n not entered.
31 -----------------------------------------------------------------
32 v12    2/13/85	Reorganized signal handling and made portable to 4.2bsd.
33 v13    2/16/85	Reword error message for '-' command.
34 v14    2/22/85	Added -bf and -bp variants of -b.
35 v15    2/25/85	Miscellaneous changes.
36 v16    3/13/85	Added -u flag for backspace processing.
37 v17    4/13/85	Added j and k commands, changed -t default.
38 v18    4/20/85	Rewrote signal handling code.
39 v19    5/2/85	Got rid of "verbose" eq_message().
40 		Made search() scroll in some cases.
41 v20    5/21/85	Fixed screen.c ioctls for System V.
42 v21    5/23/85	Fixed some first_cmd bugs.
43 v22    5/24/85	Added support for no RECOMP nor REGCMP.
44 v23    5/25/85	Miscellanous changes and prettying up.
45 		Posted to USENET.
46 -----------------------------------------------------------------
47 v24    6/3/85	Added ti,te terminal init & de-init.
48 		(Thanks to Mike Kersenbrock)
49 v25    6/8/85	Added -U flag, standout mode underlining.
50 v26    6/9/85	Added -M flag.
51 		Use underline termcap (us) if it exists.
52 v27    6/15/85	Renamed some variables to make unique in
53 		6 chars.  Minor fix to -m.
54 v28    6/28/85	Fixed right margin bug.
55 v29    6/28/85	Incorporated M.Rose's changes to signal.c
56 v30    6/29/85	Fixed stupid bug in argument processing.
57 v31    7/15/85	Added -p flag, changed repaint algorithm.
58 		Added kludge for magic cookie terminals.
59 v32    7/16/85	Added cat_file if output not a tty.
60 v33    7/23/85	Added -e flag and EDITOR.
61 v34    7/26/85	Added -s flag.
62 v35    7/27/85	Rewrote option handling; added option.c.
63 v36    7/29/85	Fixed -e flag to work if not last file.
64 v37    8/10/85	Added -x flag.
65 v38    8/19/85	Changed prompting; created prompt.c.
66 v39    8/24/85	(Not -p) does not initially clear screen.
67 v40    8/26/85	Added "skipping" indicator in forw().
68 		Posted to USENET.
69 -----------------------------------------------------------------
70 v41    9/17/85	ONLY_RETURN, control char commands,
71 		faster search, other minor fixes.
72 v42    9/25/85	Added ++ command line syntax;
73 		ch_fsize for pipes.
74 v43    10/15/85	Added -h flag, changed prim.c algorithms.
75 v44    10/16/85	Made END print in all cases of eof;
76 		ignore SIGTTOU after receiv ing SIGTSTP.
77 v45    10/16/85	Never print backspaces unless -u.
78 v46    10/24/85	Backwards scroll in jump_loc.
79 v47    10/30/85	Fixed bug in edit(): *first_cmd==0
80 v48    11/16/85	Use TIOCSETN instead of TIOCSETP.
81 		Added marks (m and ' commands).
82 		Posted to USENET.
83 -----------------------------------------------------------------
84 v49    1/9/86	Fixed bug: signal didn't clear mcc.
85 v50    1/15/86	Added ' (quote) to gomark.
86 v51    1/16/86	Added + cmd, fixed problem if first_cmd
87 		fails, made g cmd sort of "work" on pipes
88 		ev en if bof is no longer buffered.
89 v52    1/17/86	Made short files work better.
90 v53    1/20/86	Added -P option.
91 v54    1/20/86	Changed help to use HELPFILE.
92 v55    1/23/86	Messages work better if not tty output.
93 v56    1/24/86	Added -l option.
94 v57    1/31/86	Fixed -l to get confirmation before
95 		ov erwriting an existing file.
96 v58    8/28/86	Added filename globbing.
97 v59    9/15/86	Fixed some bugs with very long filenames.
98 v60    9/26/86	Incorporated changes from Leith (Casey)
99 		Leedom for boldface and -z option.
100 v61    9/26/86	Got rid of annoying repaints after ! cmd.
101 		Posted to USENET.
102 -----------------------------------------------------------------
103 v62    12/23/86	Added is_directory(); change -z default to
104 		-1 instead of 24; cat-and-exit if -e and
105 		file is less than a screenful.
106 v63    1/8/87	Fixed bug in cat-and-exit if > 1 file.
107 v64    1/12/87	Changed puts/putstr, putc/putchr,
108 		getc/getchr to av oid name conflict with
109 		stdio functions.
110 v65    1/26/87	Allowed '-' command to change NUMBER
111 		v alued options (thanks to Gary Puckering)
112 v66    2/13/87	Fixed bug: prepaint should use force=1.
113 v67    2/24/87	Added !! and % expansion to ! command.
114 v68    2/25/87	Added SIGWINCH and TIOCGWINSZ support;
115 		changed is_directory to bad_file.
116 		(thanks to J. Robert Ward)
117 v69    2/25/87	Added SIGWIND and WIOCGETD (for Unix PC).
118 v70    3/13/87	Changed help cmd from 'h' to 'H'; better
119 		error msgs in bad_file, errno_message.
120 v71    5/11/87	Changed -p to -c, made triple -c/-C
121 		for clear-eol like more's -c.
122 v72    6/26/87	Added -E, -L, use $SHELL in lsystem().
123 		(thanks to Stev e Spearman)
124 v73    6/26/87	Allow Examine "#" for previous file.
125 		Posted to USENET 8/25/87.
126 -----------------------------------------------------------------
127 v74    9/18/87	Fix conflict in EOF symbol with stdio.h,
128 		Make os.c more portable to BSD.
129 v75    9/23/87	Fix problems in get_term (thanks to
130 		Paul Eggert); new backwards scrolling in
131 		jump_loc (thanks to Marion Hakanson).
132 v76    9/23/87	Added -i flag; allow single "!" to
133 		inv oke a shell (thanks to Franco Barber).
134 v77    9/24/87	Added -n flag and line number support.
135 v78    9/25/87	Fixed problem with prompts longer than
136 		the screen width.
137 v79    9/29/87	Added the _ command.
138 v80    10/6/87	Allow signal to break out of linenum scan.
139 v81    10/6/87	Allow -b to be changed from within less.
140 v82    10/7/87	Add cmd_decode to use a table for key
141 		binding (thanks to Dav id Nason).
142 v83    10/9/87	Allow .less file for user-defined keys.
143 v84    10/11/87	Fix -e/-E problems (thanks to Felix Lee).
144 v85    10/15/87	Search now keeps track of line numbers.
145 v86    10/20/87	Added -B option and autobuf; fixed
146 		"pipe error" bug.
147 v87    3/1/88	Fix bug re BSD signals while reading file.
148 v88    3/12/88	Use new format for -P option (thanks to
149 		der Mouse), allow "+-c" without message,
150 		fix bug re BSD hangup.
151 v89    3/18/88	Turn off line numbers if linenum scan
152 		is interrupted.
153 v90    3/30/88	Allow -P from within less.
154 v91    3/30/88	Added tags file support (new -t option)
155 		(thanks to Brian Campbell).
156 v92    4/4/88	Added -+option syntax.
157 v93    4/11/88	Add support for slow input (thanks to
158 		Joe Orost & apologies for taking almost
159 		3 years to get this in!)
160 v94    4/11/88	Redo reading/signal stuff.
161 v95    4/20/88	Repaint screen better after signal.
162 v96    4/21/88	Add /! and ?! commands.
163 v97    5/17/88	Allow -l/-L from within less.
164 		Eliminate some static arrays (use calloc).
165 		Posted to USENET.
166 -----------------------------------------------------------------
167 v98    10/14/88	Fix incorrect calloc call; uninitialized
168 		var in exec_mca; core dump on unknown TERM.
169 		Make v cmd work if past last line of file.
170 		Fix some signal bugs.
171 v99    10/29/88	Allow space between -X and string,
172 		when X is a string-valued option.
173 v100   1/5/89	Fix globbing bug when $SHELL not set;
174 		allow spaces after -t command.
175 v101   1/6/89	Fix problem with long (truncated) lines
176 		in tags file (thanks to Neil Dixon).
177 v102   1/6/89	Fix bug with E# when no prev file;
178 		allow spaces after -l command.
179 v103   3/14/89	Add -N, -f and -? options.  Add z and w
180 		commands.  Add %L for prompt strings.
181 v104   3/16/89	Added EDITPROTO.
182 v105   3/20/89	Fix bug in find_linenum which cached
183 		incorrectly on long lines.
184 v106   3/31/89	Added -k option and multiple lesskey
185 		files.
186 v107   4/27/89	Add 8-bit char support and -g option.
187 		Split option code into 3 files.
188 v108   5/5/89	Allocate position table dynamically
189 		(thanks to Paul Eggert); change % command
190 		from "percent" to vi-style brace finder.
191 v109   5/10/89	Added ESC-% command, split prim.c.
192 v110   5/24/89	Fixed bug in + option; fixed repaint bug
193 		under Sun windows (thanks to Paul Eggert).
194 v111   5/25/89	Generalized # and % expansion; use
195 		calloc for some error messages.
196 v112   5/30/89	Get rid of ESC-%, add {}()[] commands.
197 v113   5/31/89	Optimize lseeks (thanks to Paul Eggert).
198 v114   7/25/89	Added ESC-/ and ESC-/! commands.
199 v115   7/26/89	Added ESC-n command.
200 v116   7/31/89	Added find_pos to optimize g command.
201 v117   8/1/89	Change -f option to -r.
202 v118   8/2/89	Save positions for all previous files,
203 		not just the immediately previous one.
204 v119   8/7/89	Save marks across file boundaries.
205 		Add file handle stuff.
206 v120   8/11/89	Add :ta command.
207 v121   8/16/89	Add -f option.
208 v122   8/30/89	Fix performance with many buffers.
209 v123   8/31/89	Verbose prompts for string options.
210 		Posted beta to USENET.
211 -----------------------------------------------------------------
212 v124   9/18/89	Reorganize search commands,
213 		N = rev, ESC-n = span, add ESC-N.
214 v125   9/18/89	Fix tab bug (thanks to Alex Liu).
215 		Fix EOF bug when both -w and -c.
216 v126   10/25/89	Add -j option.
217 v127   10/27/89	Fix problems with blank lines before BOF.
218 v128   10/27/89	Add %bj, etc. to prompt strings.
219 v129   11/3/89	Add -+,-- commands; add set-option and
220 		unset-option to lesskey.
221 v130   11/6/89	Generalize A_EXTRA to string, remove
222 		set-option, unset-option from lesskey.
223 v131   11/7/89	Changed name of EDITPROTO to LESSEDIT.
224 v132   11/8/89	Allow editing of command prefix.
225 v133   11/16/89	Add -y option (thanks to Jeff Sullivan).
226 v134   12/1/89	Glob filenames in the -l command.
227 v135   12/5/89	Combined {}()[] commands into one, and
228 		added ESC-^F and ESC-^B commands.
229 v136   1/20/90	Added -S, -R flags.  Added | command.
230 		Added warning for binary files. (thanks
231 		to Richard Brittain and J. Sullivan).
232 v137   1/21/90	Rewrote horrible pappend code.
233 		Added * notation for hi-bit chars.
234 v138   1/24/90	Fix magic cookie terminal handling.
235 		Get rid of "cleanup" loop in ch_get.
236 v139   1/27/90	Added MSDOS support.  (many thanks
237 		to Richard Brittain).
238 v140   2/7/90	Editing a new file adds it to the
239 		command line list.
240 v141   2/8/90	Add edit_list for editing >1 file.
241 v142   2/10/90	Add :x command.
242 v143   2/11/90	Add * and @ modifies to search cmds.
243 		Change ESC-/ cmd from /@* to / *.
244 v144   3/1/90	Messed around with ch_zero;
245 		no real change.
246 v145   3/2/90	Added -R and -v/-V for MSDOS;
247 		renamed FILENAME to avoid conflict.
248 v146   3/5/90	Pull cmdbuf functions out of command.c
249 v147   3/7/90	Implement ?@; fix multi-file edit bugs.
250 v148   3/29/90	Fixed bug in :e<file> then :e#.
251 v149   4/3/90	Change error,ierror,query to use PARG.
252 v150   4/6/90	Add LESS_CHARSET, LESS_CHARDEF.
253 v151   4/13/90	Remove -g option; clean up ispipe.
254 v152   4/14/90	lsystem() closes input file, for
255 		editors which require exclusive open.
256 v153   4/18/90	Fix bug if SHELL unset;
257 		fix bug in overstrike control char.
258 v154   4/25/90	Output to fd 2 via buffer.
259 v155   4/30/90	Ignore -i if uppercase in pattern
260 		(thanks to Michael Rendell.)
261 v156   5/3/90	Remove scroll limits in forw() & back();
262 		causes problems with -c.
263 v157   5/4/90	Forward search starts at next real line
264 		(not screen line) after jump target.
265 v158   6/14/90	Added F command.
266 v159   7/29/90	Fix bug in exiting: output not flushed.
267 v160   7/29/90	Clear screen before initial output w/ -c.
268 v161   7/29/90	Add -T flag.
269 v162   8/14/90	Fix bug with +F on command line.
270 v163   8/21/90	Added LESSBINFMT variable.
271 v164   9/5/90	Added -p, LINES, COLUMNS and
272 		unset mark ' == BOF, for 1003.2 D5.
273 v165   9/6/90	At EOF with -c set, don't display empty
274 		screen when try to page forward.
275 v166   9/6/90	Fix G when final line in file wraps.
276 v167   9/11/90	Translate CR/LF -> LF for 1003.2.
277 v168   9/13/90	Return to curr file if "tag not found".
278 v169   12/12/90	G goes to EOF even if file has grown.
279 v170   1/17/91	Add optimization for BSD _setjmp;
280 		fix #include ioctl.h TERMIO problem.
281 		(thanks to Paul Eggert)
282 		Posted to USENET.
283 -----------------------------------------------------------------
284 v171   3/6/91	Fix -? bug in get_filename.
285 v172   3/15/91	Fix G bug in empty file.
286 		Fix bug with ?\n and -i and uppercase
287 		pattern at EOF!
288 		(thanks to Paul Eggert)
289 v173   3/17/91	Change N cmd to not permanently change
290 		direction. (thanks to Brian Matthews)
291 v174   3/18/91	Fix bug with namelogfile not getting
292 		cleared when change files.
293 v175   3/18/91	Fix bug with ++cmd on command line.
294 		(thanks to Jim Meyering)
295 v176   4/2/91	Change | to not force current screen,
296 		include marked line, start/end from
297 		top of screen.  Improve search speed.
298 		(thanks to Don Mears)
299 v177   4/2/91	Add LESSHELP variable.
300 		Fix bug with F command with -e.
301 		Try /dev/tty for input before using fd 2.
302 		Patches posted to USENET  4/2/91.
303 -----------------------------------------------------------------
304 v178   4/8/91	Fixed bug in globbing logfile name.
305 		(thanks to Jim Meyering)
306 v179   4/9/91	Allow negative -z for screen-relative.
307 v180   4/9/91	Clear to eos rather than eol if "db";
308 		don't use "sr" if "da".
309 		(thanks to Tor Lillqvist)
310 v181   4/18/91	Fixed bug with "negative" chars 80 - FF.
311 		(thanks to Benny Sander Hofmann)
312 v182   5/16/91	Fixed bug with attribute at EOL.
313 		(thanks to Brian Matthews)
314 v183   6/1/91	Rewrite linstall to do smart config.
315 v184   7/11/91	Process \b in searches based on -u
316 		rather than -i.
317 v185   7/11/91	-Pxxx sets short prompt; assume SIGWINCH
318 		after a SIGSTOP. (thanks to Ken Laprade)
319 -----------------------------------------------------------------
320 v186   4/20/92	Port to MS-DOS (Microsoft C).
321 v187   4/23/92	Added -D option & TAB_COMPLETE_FILENAME.
322 v188   4/28/92	Added command line editing features.
323 v189   12/8/92	Fix mem overrun in anscreen.c:init;
324 		fix edit_list to recover from bin file.
325 v190   2/13/93	Make TAB enter one filename at a time;
326 		create ^L with old TAB functionality.
327 v191   3/10/93	Defer creating "flash" page for MS-DOS.
328 v192   9/6/93	Add BACK-TAB.
329 v193   9/17/93	Simplify binary_file handling.
330 v194   1/4/94	Add rudiments of alt_filename handling.
331 v195   1/11/94	Port back to Unix; support keypad.
332 -----------------------------------------------------------------
333 v196   6/7/94	Fix bug with bad filename; fix IFILE
334 		type problem. (thanks to David MacKenzie)
335 v197   6/7/94	Fix bug with .less tables inserted wrong.
336 v198   6/23/94	Use autoconf installation technology.
337 		(thanks to David MacKenzie)
338 v199   6/29/94	Fix MS-DOS build (thanks to Tim Wiegman).
339 v200   7/25/94	Clean up copyright, minor fixes.
340 	Posted to prep.ai.mit.edu
341 -----------------------------------------------------------------
342 v201   7/27/94	Check for no memcpy; add casts to calloc;
343 		look for regcmp in libgen.a.
344 		(thanks to Kaveh Ghazi).
345 v202   7/28/94	Fix bug in edit_next/edit_prev with
346 		non-existant files.
347 v203   8/2/94	Fix a variety of configuration bugs on
348 		various systems. (thanks to Sakai
349 		Kiyotaka, Harald Koenig, Bjorn Brox,
350 		Teemu Rantanen, and Thorsten Lockert)
351 v204   8/3/94	Use strerror if available.
352 		(thanks to J.T. Conklin)
353 v205   8/5/94	Fix bug in finding "me" termcap entry.
354 		(thanks to Andreas Stolcke)
355 8/10/94 	v205+: Change BUFSIZ to LBUFSIZE to avoid name
356 		conflict with stdio.h.
357 		Posted to prep.ai.mit.edu
358 -----------------------------------------------------------------
359 v206   8/10/94	Use initial_scrpos for -t to avoid
360 		displaying first page before init().
361 		(thanks to Dominique Petitpierre)
362 v207   8/12/94	Fix bug if stdout is not tty.
363 v208   8/16/94	Fix bug in close_altfile if goto err1
364 		in edit_ifile. (Thanks to M.J. Hewitt)
365 v209   8/16/94	Change scroll to wscroll to avoid
366 		conflict with library function.
367 v210   8/16/94	Fix bug with bold on 8 bit chars.
368 		(thanks to Vitor Duarte)
369 v211   8/16/94	Don't quit on EOI in jump_loc / forw.
370 v212   8/18/94	Use time_t if available.
371 v213   8/20/94	Allow ospeed to be defined in termcap.h.
372 v214   8/20/94	Added HILITE_SEARCH, -F, ESC-u cmd.
373 		(thanks to Paul Lew and Bob Byrnes)
374 v215   8/23/94	Fix -i toggle behavior.
375 v216   8/23/94	Process BS in all searches, not only -u.
376 v217   8/24/94	Added -X flag.
377 v218   8/24/94	Reimplement undo_search.
378 v219   8/24/94	Find tags marked with line number
379 		instead of pattern.
380 v220   8/24/94	Stay at same position after SIG_WINCH.
381 v221   8/24/94	Fix bug in file percentage in big file.
382 v222   8/25/94	Do better if can't reopen current file.
383 v223   8/27/94	Support setlocale.
384 		(thanks to Robert Joop)
385 v224   8/29/94	Revert v216: process BS in search
386 		only if -u.
387 v225   9/6/94	Rewrite undo_search again: toggle.
388 v226   9/15/94	Configuration fixes.
389 		(thanks to David MacKenzie)
390 v227   9/19/94	Fixed strerror config problem.
391 		Posted to prep.ai.mit.edu
392 -----------------------------------------------------------------
393 v228   9/21/94	Fix bug in signals: repeated calls to
394 		get_editkeys overflowed st_edittable.
395 v229   9/21/94	Fix "Nothing to search" error if -a
396 		and SRCH_PAST_EOF.
397 v230   9/21/94	Don't print extra error msg in search
398 		after regerror().
399 v231   9/22/94	Fix hilite bug if search matches 0 chars.
400 		(thanks to John Polstra)
401 v232   9/23/94	Deal with weird systems that have
402 		termios.h but not tcgetattr().
403 		Posted to prep.ai.mit.edu
404 -----------------------------------------------------------------
405 v233   9/26/94	Use get_term() instead of pos_init() in
406 		psignals to re-get lower_left termcap.
407 		(Thanks to John Malecki)
408 v234   9/26/94	Make MIDDLE closer to middle of screen.
409 v235   9/27/94	Use local strchr if system doesn't have.
410 v236   9/28/94	Don't use libucb; use libterm if
411 		libtermcap & libcurses doesn't work.
412 		(Fix for Solaris; thanks to Frank Kaefer)
413 v237   9/30/94	Use system isupper() etc if provided.
414 		Posted to prep.ai.mit.edu
415 -----------------------------------------------------------------
416 v238   10/6/94	Make binary non-blinking if LESSBINFMT
417 		is set to a string without a *.
418 v239   10/7/94	Don't let delimit_word run back past
419 		beginning of cmdbuf.
420 v240   10/10/94	Don't write into termcap buffer.
421 		(Thanks to Benoit Speckel)
422 v241   10/13/94	New lesskey file format.
423 		Don't expand filenames in search command.
424 v242   10/14/94	Allow lesskey specification of "literal".
425 v243   10/14/94	Add #stop command to lesskey.
426 v244   10/16/94	Add -f flag to lesskey.
427 v245   10/25/94	Allow TAB_COMPLETE_FILENAME to be undefd.
428 v246   10/27/94	Move help file to /usr/local/share.
429 v247   10/27/94	Add -V option.
430 v248   11/5/94	Add -V option to lesskey.
431 v249   11/5/94	Remove -f flag from lesskey; default
432 		input file is ~/.lesskey.in, not stdin.
433 v250   11/7/94	Lesskey input file "-" means stdin.
434 v251   11/9/94	Convert cfgetospeed result to ospeed.
435 		(Thanks to Andrew Chernov)
436 v252   11/16/94	Change default lesskey input file from
437 		.lesskey.in to .lesskey.
438 		Posted to prep.ai.mit.edu
439 -----------------------------------------------------------------
440 v253   11/21/94	Fix bug when tags file has a backslash.
441 v254   12/6/94	Fix -k option.
442 v255   12/8/94	Add #define EXAMINE to disable :e etc.
443 v256   12/10/94	Change highlighting: only highlite search
444 		results (but now it is reliable).
445 v257   12/10/94	Add goto_line and repaint_highlight
446 		to optimize highlight repaints.
447 v258   12/12/94	Fixup in hilite_line if BS_SPECIAL.
448 v259   12/12/94	Convert to autoconf 2.0.
449 v260   12/13/94	Add SECURE define.
450 v261   12/14/94	Use system WERASE char as EC_W_BACKSPACE.
451 v262   12/16/94	Add -g/-G flag and screen_hilite.
452 v263   12/20/94	Reimplement/optimize -G flag behavior.
453 v264   12/23/94	Allow EXTRA string after line-edit cmd
454 		in lesskey file.
455 v265   12/24/94	Add LESSOPEN=|cmd syntax.
456 v266   12/26/94	Add -I flag.
457 v267   12/28/94	Formalize the four-byte header emitted
458 		by a LESSOPEN pipe.
459 v268   12/28/94	Get rid of four-byte header.
460 v269   1/2/95	Close alt file before open new one.
461 		Avoids multiple popen().
462 v270   1/3/95	Use VISUAL; use S_ISDIR/S_ISREG; fix
463 		config problem with Solaris POSIX regcomp.
464 v271   1/4/95	Don't quit on read error.
465 v272   1/5/95	Get rid of -L.
466 v273   1/6/95	Fix ch_ungetchar bug; don't call
467 		LESSOPEN on a pipe.
468 v274   1/6/95	Ported to OS/2 (thanks to Kai Uwe Rommel)
469 v275   1/18/95	Fix bug if toggle -G at EOF.
470 v276   1/30/95	Fix OS/2 version.
471 v277   1/31/95	Add "next" charset; don't display ^X
472 		for X > 128.
473 v278   2/14/95	Change default for -G.
474 		Posted to prep.ai.mit.edu
475 -----------------------------------------------------------------
476 v279   2/22/95	Add GNU options --help, --version.
477 		Minor config fixes.
478 v280   2/24/95	Clean up calls to glob(); don't set #
479 		if we can't open the new file.
480 v281   2/24/95	Repeat search should turn on hilites.
481 v282   3/2/95	Minor fixes.
482 v283   3/2/95	Fix homefile; make OS2 look in $HOME.
483 v284   3/2/95	Error if "v" on LESSOPENed file;
484 		"%" figures out file size on pipe.
485 v285   3/7/95	Don't set # in lsystem;
486 		lesskey try $HOME first.
487 v286   3/7/95	Reformat change history (too much free time?).
488 v287   3/8/95	Fix hilite bug if overstrike multiple chars.
489 v288   3/8/95	Allow lesskey to override get_editkey keys.
490 v289   3/9/95	Fix adj_hilite bug when line gets processed by
491 		hilite_line more than once.
492 v290   3/9/95	Make configure automatically.  Fix Sequent problem
493 		with incompatible sigsetmask().
494 		Posted to prep.ai.mit.edu
495 -----------------------------------------------------------------
496 v291   3/21/95	Add #env to lesskey.  Fix MS-DOS build.
497 		Posted to simtel.
498 -----------------------------------------------------------------
499 v292   4/24/95	Add MS-DOS support for Borland C.
500 		Fix arrow keys in MS-DOS versions.
501 v293   4/28/95	Add auto-versioning stuff to make dist.
502 v294   5/12/95	Fix Borland build.
503 v295   1/20/96	Fix search on squished file; add /@@.
504 v296   1/23/96	Allow cmdbuf larger than screen width.
505 v297   1/24/96	Don't call termcap if tgetent fails;
506 		add #defines for buffers.
507 v298   1/24/96	Change @@ to ^K.
508 		Add alternate search modifiers ^N, ^F, ^E.
509 v299   1/25/96	Fix percent overflow in jump_percent (thanks to Brent Wiese);
510 		don't send "ti" after shell command till RETURN pressed.
511 v300   1/25/96	Change -U to print tabs as ^I.
512 v301   1/30/96	Make hilites work in cmd F output.
513 v302   1/31/96	Fix cmd F to notice window-change signals.
514 v303   1/31/96	Add ESC-SPACE command.
515 v304   2/1/96	Add ^R search modifier; add LESSSECURE.
516 v305   2/2/96	Workaround Linux /proc kernel bug; add LESSKEY.
517 v306   3/16/96	Minor fixes.
518 v307   3/25/96	Allow cmd line arg "--"; fix DOS & OS/2 defines.h.
519 v308   4/4/96	Port to OS-9 (thanks to Boisy Pitre); fix -d.
520 v309   4/9/96	Fix OS-9 version; fix tags bug with "$".
521 v310   4/10/96	Get rid of HELPFILE.
522 v311   4/22/96	Add Windows32 support; merge doscreen.c into screen.c.
523 v312   4/24/96	Don't quit after "cannot reopen" error.
524 v313   4/25/96	Added horizontal scrolling.
525 v314   4/26/96	Modified -e to quit on reaching end of a squished file.
526 v315   4/26/96	Fix "!;TAB" bug.
527 v316   5/2/96	Make "|a" when (a < curr screen) go to end of curr screen.
528 v317   5/14/96	Various fixes for the MS-DOS and OS/2 builds.
529 		Added ## and %% handling for filenames
530 v318   5/29/96	Port to OS-9 Microware compiler; minor fixes
531 		(thanks to Martin Gregorie).
532 v319   7/8/96	Fix Windows port (thanks to Jeff Paquette).
533 v320   7/11/96	Final fixes for Windows port.
534 v321   7/18/96	Minor fixes.
535 		Posted to Web page.
536 -----------------------------------------------------------------
537 v322   8/13/96	Fix bug in shell escape from help file; add support for
538 		Microsoft Visual C under Windows; numerous small fixes.
539 v323   8/19/96	Fixes for Windows version (thanks to Simon Munton);
540 		fix for Linux library weirdness (thanks to Jim Diamond);
541 		port to DJGPP (thanks to Eli Zaretskii).
542 v324   8/21/96	Add support for spaces in filenames (thanks to Simon Munton).
543 v325   8/21/96	Add lessecho, for spaces in filenames under Unix.
544 v326   8/27/96	Fix DJGPP version.
545 v327   9/1/96	Reorganize lglob, make spaces in filenames work better in Unix.
546 v328   10/7/96	Append / to directory name in filename completion.
547 		Fix MS-DOS and OS-9 versions.
548 v329   10/11/96	Fix more MS-DOS bugs; add LESSSEPARATOR; add -" option.
549 		Add LESSMETACHARS, LESSMETAESCAPE.
550 v330   10/21/96	Minor fixes.
551 		Posted to Web page.
552 -----------------------------------------------------------------
553 v331   4/22/97	Various Windows fixes (thanks to Gurusamy Sarathy).
554 v332   4/22/97	Enter filenames from cmd line into edit history.
555 		Posted to Web page.
556 -----------------------------------------------------------------
557 v333    3/4/99	Changed -w to highlite new line after forward movement.
558 v334    3/9/99	Avoid overflowing prompt buffer; add %d and %D.
559 v335   3/20/99	Add EBCDIC support (thanks to Thomas Dorner).
560               	Use HOMEDRIVE/HOMEPATH on Windows (thanks to Preston Bannister).
561 		Posted to Web page.
562 -----------------------------------------------------------------
563 v336    4/8/99	Fix installation bugs.
564 v337    4/9/99	Fix another installation bug.
565 		Posted to Web page.
566 -----------------------------------------------------------------
567 v338   4/13/99	Add support for long option names.
568 v339   4/18/99	Add \k, long option names to lesskey.  Add -^P.  Add :d.
569 v340   4/21/99	Add regexec2.  Fix Windows build.
570 		Posted to Web page.
571 -----------------------------------------------------------------
572 v341    5/6/99  Add -F option; %c & ?c prompt escapes.
573 		(Thanks to Michele Maltoni)
574 v342   7/22/99  Add system-wide lesskey file; allow GPL or Less License.
575 v343   9/23/99	Support UTF-8 (Thanks to Robert Brady).
576 		Add %P and ?P in prompts.
577 v344  10/27/99	-w highlights target line of g and p commands.
578 v345  10/29/99	Make -R pass thru ESC but not other control chars.
579 		Posted to Web page.
580 -----------------------------------------------------------------
581 v346   11/4/99  Fix bugs in long option processing; R cmd should clear hilites.
582 		Posted to Web page.
583 -----------------------------------------------------------------
584 v347  12/13/99	Fixes for DJGPP version (thanks to Eli Zaretskii).
585 v348  12/28/99	Fix deleting file with marks (thanks to Dimitar Jekov).
586 		Fix color problem in DJGPP version (thanks to Eli Zaretskii).
587 v349   1/24/00	Fix minor DJGPP bugs; check environment vars for UTF-8;
588 		add --with-editor (thanks to Eli, Markus Kuhn, Thomas Schoepf).
589 v350   3/1/00	Fix clear-while-standout bug.
590 v351   3/5/00	Change -M and = prompts to show top & bottom line number.
591 		Posted to Web page.
592 -----------------------------------------------------------------
593 v352   3/8/00	Fix scan_option NULL dereference.
594 -----------------------------------------------------------------
595 v353   3/20/00	Fix SECURE compile bug, allow space after numeric option.
596 v354   3/23/00	Add support for PCRE; add --with-regex configure option.
597 -----------------------------------------------------------------
598 v355   6/28/00	Add -# option (thanks to Andy Levinson).
599 v356   7/5/00	Add -J option.
600 v357   7/6/00	Support sigprocmask.
601 -----------------------------------------------------------------
602 v358   7/8/00	Fix problems with #stop in lesskey file.
603 		Posted to Web page.
604 -----------------------------------------------------------------
605 v359  9/10/00	Fixes for Win32 display problems (thanks to Maurizio Vairani).
606 v360  1/17/01	Move sysless to etc.
607 v361  12/4/01	Add IBM-1047 charset & EBCDIC fixes (thanks to Thomas Dorner).
608 		Fix 32 bit dependencies (thanks to Paul Eggert).
609 		Fix UTF-8 overstriking (thanks to Robert Brady).
610 v362  12/4/01	Make status column show search targets.
611 v363  12/6/01	Add --no-keypad option.
612 		Add variable width tabstops (thanks to Peter Samuelson).
613 v364 12/10/01	Better handling of very long lines in input;
614 		Fix horizontal shifting of colored text.
615 v365 12/11/01	Fix overstriking of tabs;
616 		Add support for global(1) and multiple tag matches
617 		(thanks to Shigio Yamaguchi and Tim Vanderhoek).
618 v366 12/11/01	Fixes for OS/2 (thanks to Kyosuke Tokoro).
619 v367 12/13/01	Allow -D and -x options to terminate without dollar sign;
620 		Right/left arrow when entering N are shift cmds, not line edit.
621 v368 12/18/01	Update lesskey commands.
622 v370 12/23/01	Fix tags error messages.
623 		Posted to Web page.
624 -----------------------------------------------------------------
625 v371 12/26/01	Fix new_file bug; use popen in Windows version;
626 		fix some compiler warnings.
627 v372 12/29/01	Make -b be in units of 1K.
628 v373  1/14/02	Improve handling of filenames containing shell metachars.
629 v374   2/7/02	Fix memory leak; fix bug in -x argument parsing.
630 v375   4/7/02	Fix searching for SGR sequences; fix SECURE build;
631 		add SGR support to DJGPP version (thanks to Eli Zaretskii).
632 v376  6/10/02	Fix bug in overstriking mulitbyte UTF-8 characters
633 		(thanks to Jungshik Shin).
634 		Posted to Web page.
635 -----------------------------------------------------------------
636 v377  9/10/02	Fix bug in Windows version when file contains CR;
637 		fix bug in search highlights with -R;
638 		make initial buffer limit really be 64K not unlimited.
639 v378  9/30/02	Misc bug fixes and compiler warning cleanup.
640 		Posted to Web page.
641 -----------------------------------------------------------------
642 v379 11/23/02	Add -L option; fix bug with ctrl-K in lesskey files;
643 		improve UTF-8 overstriking and underscore overstriking;
644 		fix minor man page problems; change to autoconf 2.54.
645 v380 11/24/02	Make LINENUM same as POSITION.
646 v381 11/28/02	Make -N use 7 columns for line number if possible.
647 -----------------------------------------------------------------
648 v382   2/3/04	Remove copyrighted code.
649 -----------------------------------------------------------------
650 v383  2/16/04	Add history file; add -K option; improve UTF-8 handling;
651 		fix some signed char bugs (thanks to Christian Biere);
652 		fix some upper/lower case bugs (thanks to Bjoern Jacke);
653 		add erase2 char (thanks to David Lawrence);
654 		add windows charset (thanks to Dimitar Zhekov).
655 v384  2/20/04	Improvements in UTF-8 handling.
656 v385  2/23/04	Fix UTF-8 output bug.
657 -----------------------------------------------------------------
658 v386  9/13/05	Improvements to UTF-8 shift & color (thanks to Charles Levert);
659 		protect against invalid LESSOPEN and LESSCLOSE values.
660 v387  9/14/05	Update Charles Levert's UTF-8 patch.
661 v388  9/14/05	Change history behavior; change most sprintf calls to snprintf.
662 v389  9/14/05	Fix copy & paste with long lines; improve performance of
663 		expand_linebuf; fix crash in init_mlist;
664 v390  9/15/05	Show search matches in status column even if -G is set.
665 -----------------------------------------------------------------
666 v391  9/17/05	Fix bugs.
667 v392  10/14/05	Fix line wrapping bug.
668 v393  10/19/05	Allow multiple attributes per char; fix bold+underline bug
669 		(thanks again to Charles Levert).
670 v394  11/8/05	Fix prompt bug; fix compile problem in Windows build.
671 -----------------------------------------------------------------
672 v395  1/12/07	Update Unicode tables (thanks to Charles Levert);
673 		don't chmod if LESSHISTFILE = /dev/null;
674 		make -f work for directories; support DESTDIR in Makefile;
675 		fix sigset_t detection in configure;
676 		make "t" cmd traverse tags in correct order
677 v396  1/13/07	Add compatibility with POSIX more.
678 v397  3/21/07	Allow decimal point in number for % command;
679 		Allow decimal point in number for -j option;
680 		Allow n command to fetch last search pattern from history
681 		(thanks to arno).
682 v398  3/22/07	Don't rewrite history file if not necessary;
683 		fix bug when filenames contain "$".
684 v399  3/22/07	Don't move to bottom of screen at startup;
685 		don't output extraneous newlines.
686 v400  3/23/07	Allow search to find pattern after null byte (PCRE and no-regex)
687 		(thanks to Michael Constant).
688 -----------------------------------------------------------------
689 v401  3/24/07	Minor documentation fixes.
690 v402  3/30/07	Fix autoconf bug when memcpy etc are inline;
691 		fix bug in terminating number following -j option.
692 v403  5/25/07	Fix Windows build.
693 v404  6/5/07	Fix display bug with F command and long lines.
694 v405  6/17/07	Fix display bug when using -w option.
695 v406  6/17/07	Fix secure build.
696 v407  8/16/07	Fix bugs; support CSI chars.
697 v408  10/1/07	Fix bug in -i with non-ASCII chars.
698 v409  10/12/07	Fix crash when viewing text with invalid UTF-8 sequences.
699 v411  11/6/07	Fix case-insensitive searching with non-ASCII text.
700 v412  11/6/07	Use symbolic SEEK constants.
701 v413  11/6/07	Fix search highlight bug with non-ASCII text.
702 v414  11/6/07	Fix display bug with no-wrap terminals.
703 v415  11/14/07	Add --follow-name option.
704 v416  11/22/07	Fix crash when searching text with invalid UTF-8 sequences.
705 */
706 
707 char version[] = "416";
708