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