Importing external/bsd/less
Change-Id: I7999b23fbef86a9a5d8d6fe4e80b9bd23d5b9d87
This commit is contained in:
parent
c7d758c7f2
commit
f7cf297602
100 changed files with 18009 additions and 3827 deletions
|
@ -13,7 +13,7 @@ SUBDIR= add_route arp ash at backup btrace \
|
||||||
gcov-pull grep host \
|
gcov-pull grep host \
|
||||||
hostaddr ifconfig ifdef \
|
hostaddr ifconfig ifdef \
|
||||||
intr ipcrm ipcs irdpd isoread \
|
intr ipcrm ipcs irdpd isoread \
|
||||||
less loadkeys loadramdisk logger look lp \
|
loadkeys loadramdisk logger look lp \
|
||||||
lpd lspci mail MAKEDEV \
|
lpd lspci mail MAKEDEV \
|
||||||
mined \
|
mined \
|
||||||
mount mt netconf \
|
mount mt netconf \
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
# $NetBSD: Makefile,v 1.2 1999/03/24 09:15:20 mrg Exp $
|
|
||||||
|
|
||||||
SUBDIR=less lesskey lessecho
|
|
||||||
|
|
||||||
.include <bsd.subdir.mk>
|
|
|
@ -1,7 +0,0 @@
|
||||||
# $NetBSD: Makefile.inc,v 1.3 2001/07/26 14:20:47 mrg Exp $
|
|
||||||
|
|
||||||
.if exists(${.CURDIR}/../../Makefile.inc)
|
|
||||||
.include "${.CURDIR}/../../Makefile.inc"
|
|
||||||
.endif
|
|
||||||
|
|
||||||
CWARNFLAGS+= -Wno-strict-prototypes -Wno-missing-prototypes
|
|
|
@ -1,22 +0,0 @@
|
||||||
# $NetBSD: Makefile,v 1.11 2006/11/20 22:06:26 dsl Exp $
|
|
||||||
# from: @(#)Makefile 5.6 (Berkeley) 3/12/91
|
|
||||||
|
|
||||||
.ifdef SMALLPROG
|
|
||||||
CPPFLAGS+=-DSMALL
|
|
||||||
.endif
|
|
||||||
|
|
||||||
PROG= less
|
|
||||||
CPPFLAGS+=-I${.CURDIR} -I${.CURDIR}/../lesskey -DSYSDIR=\"/etc\"
|
|
||||||
SRCS= brac.c ch.c charset.c cmdbuf.c command.c decode.c edit.c \
|
|
||||||
filename.c forwback.c help.c ifile.c input.c jump.c line.c \
|
|
||||||
linenum.c lsystem.c main.c mark.c optfunc.c option.c opttbl.c \
|
|
||||||
os.c output.c position.c prompt.c screen.c search.c signal.c \
|
|
||||||
tags.c ttyin.c version.c
|
|
||||||
|
|
||||||
LDADD+= -ltermcap
|
|
||||||
DPADD+= ${LIBTERM}
|
|
||||||
|
|
||||||
MLINKS= less.1 more.1 less.1 page.1
|
|
||||||
LINKS= ${BINDIR}/less ${BINDIR}/more ${BINDIR}/less ${BINDIR}/page
|
|
||||||
|
|
||||||
.include <bsd.prog.mk>
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,675 +0,0 @@
|
||||||
/* $NetBSD: version.c,v 1.6 2006/10/26 01:33:08 mrg Exp $ */
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
|
||||||
*
|
|
||||||
* You may distribute under the terms of either the GNU General Public
|
|
||||||
* License or the Less License, as specified in the README file.
|
|
||||||
*
|
|
||||||
* For more information about less, or for information on how to
|
|
||||||
* contact the author, see the README file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
----------------------- CHANGE HISTORY --------------------------
|
|
||||||
|
|
||||||
1/29/84 Allowed use on standard input
|
|
||||||
2/1/84 Added E, N, P commands
|
|
||||||
4/17/84 Added '=' command, 'stop' signal handling
|
|
||||||
4/20/84 Added line folding
|
|
||||||
v2 4/27/84 Fixed '=' command to use BOTTOM_PLUS_ONE,
|
|
||||||
instead of TOP, added 'p' & 'v' commands
|
|
||||||
v3 5/3/84 Added -m and -t options, '-' command
|
|
||||||
v4 5/3/84 Added LESS environment variable
|
|
||||||
v5 5/3/84 New comments, fixed '-' command slightly
|
|
||||||
v6 5/15/84 Added -Q, visual bell
|
|
||||||
v7 5/24/84 Fixed jump_back(n) bug: n should count real
|
|
||||||
lines, not folded lines. Also allow number on G command.
|
|
||||||
v8 5/30/84 Re-do -q and -Q commands
|
|
||||||
v9 9/25/84 Added "+<cmd>" argument
|
|
||||||
v10 10/10/84 Fixed bug in -b<n> argument processing
|
|
||||||
v11 10/18/84 Made error() ring bell if \n not entered.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v12 2/13/85 Reorganized signal handling and made portable to 4.2bsd.
|
|
||||||
v13 2/16/85 Reword error message for '-' command.
|
|
||||||
v14 2/22/85 Added -bf and -bp variants of -b.
|
|
||||||
v15 2/25/85 Miscellaneous changes.
|
|
||||||
v16 3/13/85 Added -u flag for backspace processing.
|
|
||||||
v17 4/13/85 Added j and k commands, changed -t default.
|
|
||||||
v18 4/20/85 Rewrote signal handling code.
|
|
||||||
v19 5/2/85 Got rid of "verbose" eq_message().
|
|
||||||
Made search() scroll in some cases.
|
|
||||||
v20 5/21/85 Fixed screen.c ioctls for System V.
|
|
||||||
v21 5/23/85 Fixed some first_cmd bugs.
|
|
||||||
v22 5/24/85 Added support for no RECOMP nor REGCMP.
|
|
||||||
v23 5/25/85 Miscellanous changes and prettying up.
|
|
||||||
Posted to USENET.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v24 6/3/85 Added ti,te terminal init & de-init.
|
|
||||||
(Thanks to Mike Kersenbrock)
|
|
||||||
v25 6/8/85 Added -U flag, standout mode underlining.
|
|
||||||
v26 6/9/85 Added -M flag.
|
|
||||||
Use underline termcap (us) if it exists.
|
|
||||||
v27 6/15/85 Renamed some variables to make unique in
|
|
||||||
6 chars. Minor fix to -m.
|
|
||||||
v28 6/28/85 Fixed right margin bug.
|
|
||||||
v29 6/28/85 Incorporated M.Rose's changes to signal.c
|
|
||||||
v30 6/29/85 Fixed stupid bug in argument processing.
|
|
||||||
v31 7/15/85 Added -p flag, changed repaint algorithm.
|
|
||||||
Added kludge for magic cookie terminals.
|
|
||||||
v32 7/16/85 Added cat_file if output not a tty.
|
|
||||||
v33 7/23/85 Added -e flag and EDITOR.
|
|
||||||
v34 7/26/85 Added -s flag.
|
|
||||||
v35 7/27/85 Rewrote option handling; added option.c.
|
|
||||||
v36 7/29/85 Fixed -e flag to work if not last file.
|
|
||||||
v37 8/10/85 Added -x flag.
|
|
||||||
v38 8/19/85 Changed prompting; created prompt.c.
|
|
||||||
v39 8/24/85 (Not -p) does not initially clear screen.
|
|
||||||
v40 8/26/85 Added "skipping" indicator in forw().
|
|
||||||
Posted to USENET.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v41 9/17/85 ONLY_RETURN, control char commands,
|
|
||||||
faster search, other minor fixes.
|
|
||||||
v42 9/25/85 Added ++ command line syntax;
|
|
||||||
ch_fsize for pipes.
|
|
||||||
v43 10/15/85 Added -h flag, changed prim.c algorithms.
|
|
||||||
v44 10/16/85 Made END print in all cases of eof;
|
|
||||||
ignore SIGTTOU after receiv ing SIGTSTP.
|
|
||||||
v45 10/16/85 Never print backspaces unless -u.
|
|
||||||
v46 10/24/85 Backwards scroll in jump_loc.
|
|
||||||
v47 10/30/85 Fixed bug in edit(): *first_cmd==0
|
|
||||||
v48 11/16/85 Use TIOCSETN instead of TIOCSETP.
|
|
||||||
Added marks (m and ' commands).
|
|
||||||
Posted to USENET.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v49 1/9/86 Fixed bug: signal didn't clear mcc.
|
|
||||||
v50 1/15/86 Added ' (quote) to gomark.
|
|
||||||
v51 1/16/86 Added + cmd, fixed problem if first_cmd
|
|
||||||
fails, made g cmd sort of "work" on pipes
|
|
||||||
ev en if bof is no longer buffered.
|
|
||||||
v52 1/17/86 Made short files work better.
|
|
||||||
v53 1/20/86 Added -P option.
|
|
||||||
v54 1/20/86 Changed help to use HELPFILE.
|
|
||||||
v55 1/23/86 Messages work better if not tty output.
|
|
||||||
v56 1/24/86 Added -l option.
|
|
||||||
v57 1/31/86 Fixed -l to get confirmation before
|
|
||||||
ov erwriting an existing file.
|
|
||||||
v58 8/28/86 Added filename globbing.
|
|
||||||
v59 9/15/86 Fixed some bugs with very long filenames.
|
|
||||||
v60 9/26/86 Incorporated changes from Leith (Casey)
|
|
||||||
Leedom for boldface and -z option.
|
|
||||||
v61 9/26/86 Got rid of annoying repaints after ! cmd.
|
|
||||||
Posted to USENET.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v62 12/23/86 Added is_directory(); change -z default to
|
|
||||||
-1 instead of 24; cat-and-exit if -e and
|
|
||||||
file is less than a screenful.
|
|
||||||
v63 1/8/87 Fixed bug in cat-and-exit if > 1 file.
|
|
||||||
v64 1/12/87 Changed puts/putstr, putc/putchr,
|
|
||||||
getc/getchr to av oid name conflict with
|
|
||||||
stdio functions.
|
|
||||||
v65 1/26/87 Allowed '-' command to change NUMBER
|
|
||||||
v alued options (thanks to Gary Puckering)
|
|
||||||
v66 2/13/87 Fixed bug: prepaint should use force=1.
|
|
||||||
v67 2/24/87 Added !! and % expansion to ! command.
|
|
||||||
v68 2/25/87 Added SIGWINCH and TIOCGWINSZ support;
|
|
||||||
changed is_directory to bad_file.
|
|
||||||
(thanks to J. Robert Ward)
|
|
||||||
v69 2/25/87 Added SIGWIND and WIOCGETD (for Unix PC).
|
|
||||||
v70 3/13/87 Changed help cmd from 'h' to 'H'; better
|
|
||||||
error msgs in bad_file, errno_message.
|
|
||||||
v71 5/11/87 Changed -p to -c, made triple -c/-C
|
|
||||||
for clear-eol like more's -c.
|
|
||||||
v72 6/26/87 Added -E, -L, use $SHELL in lsystem().
|
|
||||||
(thanks to Stev e Spearman)
|
|
||||||
v73 6/26/87 Allow Examine "#" for previous file.
|
|
||||||
Posted to USENET 8/25/87.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v74 9/18/87 Fix conflict in EOF symbol with stdio.h,
|
|
||||||
Make os.c more portable to BSD.
|
|
||||||
v75 9/23/87 Fix problems in get_term (thanks to
|
|
||||||
Paul Eggert); new backwards scrolling in
|
|
||||||
jump_loc (thanks to Marion Hakanson).
|
|
||||||
v76 9/23/87 Added -i flag; allow single "!" to
|
|
||||||
inv oke a shell (thanks to Franco Barber).
|
|
||||||
v77 9/24/87 Added -n flag and line number support.
|
|
||||||
v78 9/25/87 Fixed problem with prompts longer than
|
|
||||||
the screen width.
|
|
||||||
v79 9/29/87 Added the _ command.
|
|
||||||
v80 10/6/87 Allow signal to break out of linenum scan.
|
|
||||||
v81 10/6/87 Allow -b to be changed from within less.
|
|
||||||
v82 10/7/87 Add cmd_decode to use a table for key
|
|
||||||
binding (thanks to Dav id Nason).
|
|
||||||
v83 10/9/87 Allow .less file for user-defined keys.
|
|
||||||
v84 10/11/87 Fix -e/-E problems (thanks to Felix Lee).
|
|
||||||
v85 10/15/87 Search now keeps track of line numbers.
|
|
||||||
v86 10/20/87 Added -B option and autobuf; fixed
|
|
||||||
"pipe error" bug.
|
|
||||||
v87 3/1/88 Fix bug re BSD signals while reading file.
|
|
||||||
v88 3/12/88 Use new format for -P option (thanks to
|
|
||||||
der Mouse), allow "+-c" without message,
|
|
||||||
fix bug re BSD hangup.
|
|
||||||
v89 3/18/88 Turn off line numbers if linenum scan
|
|
||||||
is interrupted.
|
|
||||||
v90 3/30/88 Allow -P from within less.
|
|
||||||
v91 3/30/88 Added tags file support (new -t option)
|
|
||||||
(thanks to Brian Campbell).
|
|
||||||
v92 4/4/88 Added -+option syntax.
|
|
||||||
v93 4/11/88 Add support for slow input (thanks to
|
|
||||||
Joe Orost & apologies for taking almost
|
|
||||||
3 years to get this in!)
|
|
||||||
v94 4/11/88 Redo reading/signal stuff.
|
|
||||||
v95 4/20/88 Repaint screen better after signal.
|
|
||||||
v96 4/21/88 Add /! and ?! commands.
|
|
||||||
v97 5/17/88 Allow -l/-L from within less.
|
|
||||||
Eliminate some static arrays (use calloc).
|
|
||||||
Posted to USENET.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v98 10/14/88 Fix incorrect calloc call; uninitialized
|
|
||||||
var in exec_mca; core dump on unknown TERM.
|
|
||||||
Make v cmd work if past last line of file.
|
|
||||||
Fix some signal bugs.
|
|
||||||
v99 10/29/88 Allow space between -X and string,
|
|
||||||
when X is a string-valued option.
|
|
||||||
v100 1/5/89 Fix globbing bug when $SHELL not set;
|
|
||||||
allow spaces after -t command.
|
|
||||||
v101 1/6/89 Fix problem with long (truncated) lines
|
|
||||||
in tags file (thanks to Neil Dixon).
|
|
||||||
v102 1/6/89 Fix bug with E# when no prev file;
|
|
||||||
allow spaces after -l command.
|
|
||||||
v103 3/14/89 Add -N, -f and -? options. Add z and w
|
|
||||||
commands. Add %L for prompt strings.
|
|
||||||
v104 3/16/89 Added EDITPROTO.
|
|
||||||
v105 3/20/89 Fix bug in find_linenum which cached
|
|
||||||
incorrectly on long lines.
|
|
||||||
v106 3/31/89 Added -k option and multiple lesskey
|
|
||||||
files.
|
|
||||||
v107 4/27/89 Add 8-bit char support and -g option.
|
|
||||||
Split option code into 3 files.
|
|
||||||
v108 5/5/89 Allocate position table dynamically
|
|
||||||
(thanks to Paul Eggert); change % command
|
|
||||||
from "percent" to vi-style brace finder.
|
|
||||||
v109 5/10/89 Added ESC-% command, split prim.c.
|
|
||||||
v110 5/24/89 Fixed bug in + option; fixed repaint bug
|
|
||||||
under Sun windows (thanks to Paul Eggert).
|
|
||||||
v111 5/25/89 Generalized # and % expansion; use
|
|
||||||
calloc for some error messages.
|
|
||||||
v112 5/30/89 Get rid of ESC-%, add {}()[] commands.
|
|
||||||
v113 5/31/89 Optimize lseeks (thanks to Paul Eggert).
|
|
||||||
v114 7/25/89 Added ESC-/ and ESC-/! commands.
|
|
||||||
v115 7/26/89 Added ESC-n command.
|
|
||||||
v116 7/31/89 Added find_pos to optimize g command.
|
|
||||||
v117 8/1/89 Change -f option to -r.
|
|
||||||
v118 8/2/89 Save positions for all previous files,
|
|
||||||
not just the immediately previous one.
|
|
||||||
v119 8/7/89 Save marks across file boundaries.
|
|
||||||
Add file handle stuff.
|
|
||||||
v120 8/11/89 Add :ta command.
|
|
||||||
v121 8/16/89 Add -f option.
|
|
||||||
v122 8/30/89 Fix performance with many buffers.
|
|
||||||
v123 8/31/89 Verbose prompts for string options.
|
|
||||||
Posted beta to USENET.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v124 9/18/89 Reorganize search commands,
|
|
||||||
N = rev, ESC-n = span, add ESC-N.
|
|
||||||
v125 9/18/89 Fix tab bug (thanks to Alex Liu).
|
|
||||||
Fix EOF bug when both -w and -c.
|
|
||||||
v126 10/25/89 Add -j option.
|
|
||||||
v127 10/27/89 Fix problems with blank lines before BOF.
|
|
||||||
v128 10/27/89 Add %bj, etc. to prompt strings.
|
|
||||||
v129 11/3/89 Add -+,-- commands; add set-option and
|
|
||||||
unset-option to lesskey.
|
|
||||||
v130 11/6/89 Generalize A_EXTRA to string, remove
|
|
||||||
set-option, unset-option from lesskey.
|
|
||||||
v131 11/7/89 Changed name of EDITPROTO to LESSEDIT.
|
|
||||||
v132 11/8/89 Allow editing of command prefix.
|
|
||||||
v133 11/16/89 Add -y option (thanks to Jeff Sullivan).
|
|
||||||
v134 12/1/89 Glob filenames in the -l command.
|
|
||||||
v135 12/5/89 Combined {}()[] commands into one, and
|
|
||||||
added ESC-^F and ESC-^B commands.
|
|
||||||
v136 1/20/90 Added -S, -R flags. Added | command.
|
|
||||||
Added warning for binary files. (thanks
|
|
||||||
to Richard Brittain and J. Sullivan).
|
|
||||||
v137 1/21/90 Rewrote horrible pappend code.
|
|
||||||
Added * notation for hi-bit chars.
|
|
||||||
v138 1/24/90 Fix magic cookie terminal handling.
|
|
||||||
Get rid of "cleanup" loop in ch_get.
|
|
||||||
v139 1/27/90 Added MSDOS support. (many thanks
|
|
||||||
to Richard Brittain).
|
|
||||||
v140 2/7/90 Editing a new file adds it to the
|
|
||||||
command line list.
|
|
||||||
v141 2/8/90 Add edit_list for editing >1 file.
|
|
||||||
v142 2/10/90 Add :x command.
|
|
||||||
v143 2/11/90 Add * and @ modifies to search cmds.
|
|
||||||
Change ESC-/ cmd from /@* to / *.
|
|
||||||
v144 3/1/90 Messed around with ch_zero;
|
|
||||||
no real change.
|
|
||||||
v145 3/2/90 Added -R and -v/-V for MSDOS;
|
|
||||||
renamed FILENAME to avoid conflict.
|
|
||||||
v146 3/5/90 Pull cmdbuf functions out of command.c
|
|
||||||
v147 3/7/90 Implement ?@; fix multi-file edit bugs.
|
|
||||||
v148 3/29/90 Fixed bug in :e<file> then :e#.
|
|
||||||
v149 4/3/90 Change error,ierror,query to use PARG.
|
|
||||||
v150 4/6/90 Add LESS_CHARSET, LESS_CHARDEF.
|
|
||||||
v151 4/13/90 Remove -g option; clean up ispipe.
|
|
||||||
v152 4/14/90 lsystem() closes input file, for
|
|
||||||
editors which require exclusive open.
|
|
||||||
v153 4/18/90 Fix bug if SHELL unset;
|
|
||||||
fix bug in overstrike control char.
|
|
||||||
v154 4/25/90 Output to fd 2 via buffer.
|
|
||||||
v155 4/30/90 Ignore -i if uppercase in pattern
|
|
||||||
(thanks to Michael Rendell.)
|
|
||||||
v156 5/3/90 Remove scroll limits in forw() & back();
|
|
||||||
causes problems with -c.
|
|
||||||
v157 5/4/90 Forward search starts at next real line
|
|
||||||
(not screen line) after jump target.
|
|
||||||
v158 6/14/90 Added F command.
|
|
||||||
v159 7/29/90 Fix bug in exiting: output not flushed.
|
|
||||||
v160 7/29/90 Clear screen before initial output w/ -c.
|
|
||||||
v161 7/29/90 Add -T flag.
|
|
||||||
v162 8/14/90 Fix bug with +F on command line.
|
|
||||||
v163 8/21/90 Added LESSBINFMT variable.
|
|
||||||
v164 9/5/90 Added -p, LINES, COLUMNS and
|
|
||||||
unset mark ' == BOF, for 1003.2 D5.
|
|
||||||
v165 9/6/90 At EOF with -c set, don't display empty
|
|
||||||
screen when try to page forward.
|
|
||||||
v166 9/6/90 Fix G when final line in file wraps.
|
|
||||||
v167 9/11/90 Translate CR/LF -> LF for 1003.2.
|
|
||||||
v168 9/13/90 Return to curr file if "tag not found".
|
|
||||||
v169 12/12/90 G goes to EOF even if file has grown.
|
|
||||||
v170 1/17/91 Add optimization for BSD _setjmp;
|
|
||||||
fix #include ioctl.h TERMIO problem.
|
|
||||||
(thanks to Paul Eggert)
|
|
||||||
Posted to USENET.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v171 3/6/91 Fix -? bug in get_filename.
|
|
||||||
v172 3/15/91 Fix G bug in empty file.
|
|
||||||
Fix bug with ?\n and -i and uppercase
|
|
||||||
pattern at EOF!
|
|
||||||
(thanks to Paul Eggert)
|
|
||||||
v173 3/17/91 Change N cmd to not permanently change
|
|
||||||
direction. (thanks to Brian Matthews)
|
|
||||||
v174 3/18/91 Fix bug with namelogfile not getting
|
|
||||||
cleared when change files.
|
|
||||||
v175 3/18/91 Fix bug with ++cmd on command line.
|
|
||||||
(thanks to Jim Meyering)
|
|
||||||
v176 4/2/91 Change | to not force current screen,
|
|
||||||
include marked line, start/end from
|
|
||||||
top of screen. Improve search speed.
|
|
||||||
(thanks to Don Mears)
|
|
||||||
v177 4/2/91 Add LESSHELP variable.
|
|
||||||
Fix bug with F command with -e.
|
|
||||||
Try /dev/tty for input before using fd 2.
|
|
||||||
Patches posted to USENET 4/2/91.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v178 4/8/91 Fixed bug in globbing logfile name.
|
|
||||||
(thanks to Jim Meyering)
|
|
||||||
v179 4/9/91 Allow negative -z for screen-relative.
|
|
||||||
v180 4/9/91 Clear to eos rather than eol if "db";
|
|
||||||
don't use "sr" if "da".
|
|
||||||
(thanks to Tor Lillqvist)
|
|
||||||
v181 4/18/91 Fixed bug with "negative" chars 80 - FF.
|
|
||||||
(thanks to Benny Sander Hofmann)
|
|
||||||
v182 5/16/91 Fixed bug with attribute at EOL.
|
|
||||||
(thanks to Brian Matthews)
|
|
||||||
v183 6/1/91 Rewrite linstall to do smart config.
|
|
||||||
v184 7/11/91 Process \b in searches based on -u
|
|
||||||
rather than -i.
|
|
||||||
v185 7/11/91 -Pxxx sets short prompt; assume SIGWINCH
|
|
||||||
after a SIGSTOP. (thanks to Ken Laprade)
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v186 4/20/92 Port to MS-DOS (Microsoft C).
|
|
||||||
v187 4/23/92 Added -D option & TAB_COMPLETE_FILENAME.
|
|
||||||
v188 4/28/92 Added command line editing features.
|
|
||||||
v189 12/8/92 Fix mem overrun in anscreen.c:init;
|
|
||||||
fix edit_list to recover from bin file.
|
|
||||||
v190 2/13/93 Make TAB enter one filename at a time;
|
|
||||||
create ^L with old TAB functionality.
|
|
||||||
v191 3/10/93 Defer creating "flash" page for MS-DOS.
|
|
||||||
v192 9/6/93 Add BACK-TAB.
|
|
||||||
v193 9/17/93 Simplify binary_file handling.
|
|
||||||
v194 1/4/94 Add rudiments of alt_filename handling.
|
|
||||||
v195 1/11/94 Port back to Unix; support keypad.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v196 6/7/94 Fix bug with bad filename; fix IFILE
|
|
||||||
type problem. (thanks to David MacKenzie)
|
|
||||||
v197 6/7/94 Fix bug with .less tables inserted wrong.
|
|
||||||
v198 6/23/94 Use autoconf installation technology.
|
|
||||||
(thanks to David MacKenzie)
|
|
||||||
v199 6/29/94 Fix MS-DOS build (thanks to Tim Wiegman).
|
|
||||||
v200 7/25/94 Clean up copyright, minor fixes.
|
|
||||||
Posted to prep.ai.mit.edu
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v201 7/27/94 Check for no memcpy; add casts to calloc;
|
|
||||||
look for regcmp in libgen.a.
|
|
||||||
(thanks to Kaveh Ghazi).
|
|
||||||
v202 7/28/94 Fix bug in edit_next/edit_prev with
|
|
||||||
non-existent files.
|
|
||||||
v203 8/2/94 Fix a variety of configuration bugs on
|
|
||||||
various systems. (thanks to Sakai
|
|
||||||
Kiyotaka, Harald Koenig, Bjorn Brox,
|
|
||||||
Teemu Rantanen, and Thorsten Lockert)
|
|
||||||
v204 8/3/94 Use strerror if available.
|
|
||||||
(thanks to J.T. Conklin)
|
|
||||||
v205 8/5/94 Fix bug in finding "me" termcap entry.
|
|
||||||
(thanks to Andreas Stolcke)
|
|
||||||
8/10/94 v205+: Change BUFSIZ to LBUFSIZE to avoid name
|
|
||||||
conflict with stdio.h.
|
|
||||||
Posted to prep.ai.mit.edu
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v206 8/10/94 Use initial_scrpos for -t to avoid
|
|
||||||
displaying first page before init().
|
|
||||||
(thanks to Dominique Petitpierre)
|
|
||||||
v207 8/12/94 Fix bug if stdout is not tty.
|
|
||||||
v208 8/16/94 Fix bug in close_altfile if goto err1
|
|
||||||
in edit_ifile. (Thanks to M.J. Hewitt)
|
|
||||||
v209 8/16/94 Change scroll to wscroll to avoid
|
|
||||||
conflict with library function.
|
|
||||||
v210 8/16/94 Fix bug with bold on 8 bit chars.
|
|
||||||
(thanks to Vitor Duarte)
|
|
||||||
v211 8/16/94 Don't quit on EOI in jump_loc / forw.
|
|
||||||
v212 8/18/94 Use time_t if available.
|
|
||||||
v213 8/20/94 Allow ospeed to be defined in termcap.h.
|
|
||||||
v214 8/20/94 Added HILITE_SEARCH, -F, ESC-u cmd.
|
|
||||||
(thanks to Paul Lew and Bob Byrnes)
|
|
||||||
v215 8/23/94 Fix -i toggle behavior.
|
|
||||||
v216 8/23/94 Process BS in all searches, not only -u.
|
|
||||||
v217 8/24/94 Added -X flag.
|
|
||||||
v218 8/24/94 Reimplement undo_search.
|
|
||||||
v219 8/24/94 Find tags marked with line number
|
|
||||||
instead of pattern.
|
|
||||||
v220 8/24/94 Stay at same position after SIG_WINCH.
|
|
||||||
v221 8/24/94 Fix bug in file percentage in big file.
|
|
||||||
v222 8/25/94 Do better if can't reopen current file.
|
|
||||||
v223 8/27/94 Support setlocale.
|
|
||||||
(thanks to Robert Joop)
|
|
||||||
v224 8/29/94 Revert v216: process BS in search
|
|
||||||
only if -u.
|
|
||||||
v225 9/6/94 Rewrite undo_search again: toggle.
|
|
||||||
v226 9/15/94 Configuration fixes.
|
|
||||||
(thanks to David MacKenzie)
|
|
||||||
v227 9/19/94 Fixed strerror config problem.
|
|
||||||
Posted to prep.ai.mit.edu
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v228 9/21/94 Fix bug in signals: repeated calls to
|
|
||||||
get_editkeys overflowed st_edittable.
|
|
||||||
v229 9/21/94 Fix "Nothing to search" error if -a
|
|
||||||
and SRCH_PAST_EOF.
|
|
||||||
v230 9/21/94 Don't print extra error msg in search
|
|
||||||
after regerror().
|
|
||||||
v231 9/22/94 Fix hilite bug if search matches 0 chars.
|
|
||||||
(thanks to John Polstra)
|
|
||||||
v232 9/23/94 Deal with weird systems that have
|
|
||||||
termios.h but not tcgetattr().
|
|
||||||
Posted to prep.ai.mit.edu
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v233 9/26/94 Use get_term() instead of pos_init() in
|
|
||||||
psignals to re-get lower_left termcap.
|
|
||||||
(Thanks to John Malecki)
|
|
||||||
v234 9/26/94 Make MIDDLE closer to middle of screen.
|
|
||||||
v235 9/27/94 Use local strchr if system doesn't have.
|
|
||||||
v236 9/28/94 Don't use libucb; use libterm if
|
|
||||||
libtermcap & libcurses doesn't work.
|
|
||||||
(Fix for Solaris; thanks to Frank Kaefer)
|
|
||||||
v237 9/30/94 Use system isupper() etc if provided.
|
|
||||||
Posted to prep.ai.mit.edu
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v238 10/6/94 Make binary non-blinking if LESSBINFMT
|
|
||||||
is set to a string without a *.
|
|
||||||
v239 10/7/94 Don't let delimit_word run back past
|
|
||||||
beginning of cmdbuf.
|
|
||||||
v240 10/10/94 Don't write into termcap buffer.
|
|
||||||
(Thanks to Benoit Speckel)
|
|
||||||
v241 10/13/94 New lesskey file format.
|
|
||||||
Don't expand filenames in search command.
|
|
||||||
v242 10/14/94 Allow lesskey specification of "literal".
|
|
||||||
v243 10/14/94 Add #stop command to lesskey.
|
|
||||||
v244 10/16/94 Add -f flag to lesskey.
|
|
||||||
v245 10/25/94 Allow TAB_COMPLETE_FILENAME to be undefd.
|
|
||||||
v246 10/27/94 Move help file to /usr/local/share.
|
|
||||||
v247 10/27/94 Add -V option.
|
|
||||||
v248 11/5/94 Add -V option to lesskey.
|
|
||||||
v249 11/5/94 Remove -f flag from lesskey; default
|
|
||||||
input file is ~/.lesskey.in, not stdin.
|
|
||||||
v250 11/7/94 Lesskey input file "-" means stdin.
|
|
||||||
v251 11/9/94 Convert cfgetospeed result to ospeed.
|
|
||||||
(Thanks to Andrew Chernov)
|
|
||||||
v252 11/16/94 Change default lesskey input file from
|
|
||||||
.lesskey.in to .lesskey.
|
|
||||||
Posted to prep.ai.mit.edu
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v253 11/21/94 Fix bug when tags file has a backslash.
|
|
||||||
v254 12/6/94 Fix -k option.
|
|
||||||
v255 12/8/94 Add #define EXAMINE to disable :e etc.
|
|
||||||
v256 12/10/94 Change highlighting: only highlite search
|
|
||||||
results (but now it is reliable).
|
|
||||||
v257 12/10/94 Add goto_line and repaint_highlight
|
|
||||||
to optimize highlight repaints.
|
|
||||||
v258 12/12/94 Fixup in hilite_line if BS_SPECIAL.
|
|
||||||
v259 12/12/94 Convert to autoconf 2.0.
|
|
||||||
v260 12/13/94 Add SECURE define.
|
|
||||||
v261 12/14/94 Use system WERASE char as EC_W_BACKSPACE.
|
|
||||||
v262 12/16/94 Add -g/-G flag and screen_hilite.
|
|
||||||
v263 12/20/94 Reimplement/optimize -G flag behavior.
|
|
||||||
v264 12/23/94 Allow EXTRA string after line-edit cmd
|
|
||||||
in lesskey file.
|
|
||||||
v265 12/24/94 Add LESSOPEN=|cmd syntax.
|
|
||||||
v266 12/26/94 Add -I flag.
|
|
||||||
v267 12/28/94 Formalize the four-byte header emitted
|
|
||||||
by a LESSOPEN pipe.
|
|
||||||
v268 12/28/94 Get rid of four-byte header.
|
|
||||||
v269 1/2/95 Close alt file before open new one.
|
|
||||||
Avoids multiple popen().
|
|
||||||
v270 1/3/95 Use VISUAL; use S_ISDIR/S_ISREG; fix
|
|
||||||
config problem with Solaris POSIX regcomp.
|
|
||||||
v271 1/4/95 Don't quit on read error.
|
|
||||||
v272 1/5/95 Get rid of -L.
|
|
||||||
v273 1/6/95 Fix ch_ungetchar bug; don't call
|
|
||||||
LESSOPEN on a pipe.
|
|
||||||
v274 1/6/95 Ported to OS/2 (thanks to Kai Uwe Rommel)
|
|
||||||
v275 1/18/95 Fix bug if toggle -G at EOF.
|
|
||||||
v276 1/30/95 Fix OS/2 version.
|
|
||||||
v277 1/31/95 Add "next" charset; don't display ^X
|
|
||||||
for X > 128.
|
|
||||||
v278 2/14/95 Change default for -G.
|
|
||||||
Posted to prep.ai.mit.edu
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v279 2/22/95 Add GNU options --help, --version.
|
|
||||||
Minor config fixes.
|
|
||||||
v280 2/24/95 Clean up calls to glob(); don't set #
|
|
||||||
if we can't open the new file.
|
|
||||||
v281 2/24/95 Repeat search should turn on hilites.
|
|
||||||
v282 3/2/95 Minor fixes.
|
|
||||||
v283 3/2/95 Fix homefile; make OS2 look in $HOME.
|
|
||||||
v284 3/2/95 Error if "v" on LESSOPENed file;
|
|
||||||
"%" figures out file size on pipe.
|
|
||||||
v285 3/7/95 Don't set # in lsystem;
|
|
||||||
lesskey try $HOME first.
|
|
||||||
v286 3/7/95 Reformat change history (too much free time?).
|
|
||||||
v287 3/8/95 Fix hilite bug if overstrike multiple chars.
|
|
||||||
v288 3/8/95 Allow lesskey to override get_editkey keys.
|
|
||||||
v289 3/9/95 Fix adj_hilite bug when line gets processed by
|
|
||||||
hilite_line more than once.
|
|
||||||
v290 3/9/95 Make configure automatically. Fix Sequent problem
|
|
||||||
with incompatible sigsetmask().
|
|
||||||
Posted to prep.ai.mit.edu
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v291 3/21/95 Add #env to lesskey. Fix MS-DOS build.
|
|
||||||
Posted to simtel.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v292 4/24/95 Add MS-DOS support for Borland C.
|
|
||||||
Fix arrow keys in MS-DOS versions.
|
|
||||||
v293 4/28/95 Add auto-versioning stuff to make dist.
|
|
||||||
v294 5/12/95 Fix Borland build.
|
|
||||||
v295 1/20/96 Fix search on squished file; add /@@.
|
|
||||||
v296 1/23/96 Allow cmdbuf larger than screen width.
|
|
||||||
v297 1/24/96 Don't call termcap if tgetent fails;
|
|
||||||
add #defines for buffers.
|
|
||||||
v298 1/24/96 Change @@ to ^K.
|
|
||||||
Add alternate search modifiers ^N, ^F, ^E.
|
|
||||||
v299 1/25/96 Fix percent overflow in jump_percent (thanks to Brent Wiese);
|
|
||||||
don't send "ti" after shell command till RETURN pressed.
|
|
||||||
v300 1/25/96 Change -U to print tabs as ^I.
|
|
||||||
v301 1/30/96 Make hilites work in cmd F output.
|
|
||||||
v302 1/31/96 Fix cmd F to notice window-change signals.
|
|
||||||
v303 1/31/96 Add ESC-SPACE command.
|
|
||||||
v304 2/1/96 Add ^R search modifier; add LESSSECURE.
|
|
||||||
v305 2/2/96 Workaround Linux /proc kernel bug; add LESSKEY.
|
|
||||||
v306 3/16/96 Minor fixes.
|
|
||||||
v307 3/25/96 Allow cmd line arg "--"; fix DOS & OS/2 defines.h.
|
|
||||||
v308 4/4/96 Port to OS-9 (thanks to Boisy Pitre); fix -d.
|
|
||||||
v309 4/9/96 Fix OS-9 version; fix tags bug with "$".
|
|
||||||
v310 4/10/96 Get rid of HELPFILE.
|
|
||||||
v311 4/22/96 Add Windows32 support; merge doscreen.c into screen.c.
|
|
||||||
v312 4/24/96 Don't quit after "cannot reopen" error.
|
|
||||||
v313 4/25/96 Added horizontal scrolling.
|
|
||||||
v314 4/26/96 Modified -e to quit on reaching end of a squished file.
|
|
||||||
v315 4/26/96 Fix "!;TAB" bug.
|
|
||||||
v316 5/2/96 Make "|a" when (a < curr screen) go to end of curr screen.
|
|
||||||
v317 5/14/96 Various fixes for the MS-DOS and OS/2 builds.
|
|
||||||
Added ## and %% handling for filenames
|
|
||||||
v318 5/29/96 Port to OS-9 Microware compiler; minor fixes
|
|
||||||
(thanks to Martin Gregorie).
|
|
||||||
v319 7/8/96 Fix Windows port (thanks to Jeff Paquette).
|
|
||||||
v320 7/11/96 Final fixes for Windows port.
|
|
||||||
v321 7/18/96 Minor fixes.
|
|
||||||
Posted to Web page.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v322 8/13/96 Fix bug in shell escape from help file; add support for
|
|
||||||
Microsoft Visual C under Windows; numerous small fixes.
|
|
||||||
v323 8/19/96 Fixes for Windows version (thanks to Simon Munton);
|
|
||||||
fix for Linux library weirdness (thanks to Jim Diamond);
|
|
||||||
port to DJGPP (thanks to Eli Zaretskii).
|
|
||||||
v324 8/21/96 Add support for spaces in filenames (thanks to Simon Munton).
|
|
||||||
v325 8/21/96 Add lessecho, for spaces in filenames under Unix.
|
|
||||||
v326 8/27/96 Fix DJGPP version.
|
|
||||||
v327 9/1/96 Reorganize lglob, make spaces in filenames work better in Unix.
|
|
||||||
v328 10/7/96 Append / to directory name in filename completion.
|
|
||||||
Fix MS-DOS and OS-9 versions.
|
|
||||||
v329 10/11/96 Fix more MS-DOS bugs; add LESSSEPARATOR; add -" option.
|
|
||||||
Add LESSMETACHARS, LESSMETAESCAPE.
|
|
||||||
v330 10/21/96 Minor fixes.
|
|
||||||
Posted to Web page.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v331 4/22/97 Various Windows fixes (thanks to Gurusamy Sarathy).
|
|
||||||
v332 4/22/97 Enter filenames from cmd line into edit history.
|
|
||||||
Posted to Web page.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v333 3/4/99 Changed -w to highlite new line after forward movement.
|
|
||||||
v334 3/9/99 Avoid overflowing prompt buffer; add %d and %D.
|
|
||||||
v335 3/20/99 Add EBCDIC support (thanks to Thomas Dorner).
|
|
||||||
Use HOMEDRIVE/HOMEPATH on Windows (thanks to Preston Bannister).
|
|
||||||
Posted to Web page.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v336 4/8/99 Fix installation bugs.
|
|
||||||
v337 4/9/99 Fix another installation bug.
|
|
||||||
Posted to Web page.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v338 4/13/99 Add support for long option names.
|
|
||||||
v339 4/18/99 Add \k, long option names to lesskey. Add -^P. Add :d.
|
|
||||||
v340 4/21/99 Add regexec2. Fix Windows build.
|
|
||||||
Posted to Web page.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v341 5/6/99 Add -F option; %c & ?c prompt escapes.
|
|
||||||
(Thanks to Michele Maltoni)
|
|
||||||
v342 7/22/99 Add system-wide lesskey file; allow GPL or Less License.
|
|
||||||
v343 9/23/99 Support UTF-8 (Thanks to Robert Brady).
|
|
||||||
Add %P and ?P in prompts.
|
|
||||||
v344 10/27/99 -w highlights target line of g and p commands.
|
|
||||||
v345 10/29/99 Make -R pass thru ESC but not other control chars.
|
|
||||||
Posted to Web page.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v346 11/4/99 Fix bugs in long option processing; R cmd should clear hilites.
|
|
||||||
Posted to Web page.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v347 12/13/99 Fixes for DJGPP version (thanks to Eli Zaretskii).
|
|
||||||
v348 12/28/99 Fix deleting file with marks (thanks to Dimitar Jekov).
|
|
||||||
Fix color problem in DJGPP version (thanks to Eli Zaretskii).
|
|
||||||
v349 1/24/00 Fix minor DJGPP bugs; check environment vars for UTF-8;
|
|
||||||
add --with-editor (thanks to Eli, Markus Kuhn, Thomas Schoepf).
|
|
||||||
v350 3/1/00 Fix clear-while-standout bug.
|
|
||||||
v351 3/5/00 Change -M and = prompts to show top & bottom line number.
|
|
||||||
Posted to Web page.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v352 3/8/00 Fix scan_option NULL dereference.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v353 3/20/00 Fix SECURE compile bug, allow space after numeric option.
|
|
||||||
v354 3/23/00 Add support for PCRE; add --with-regex configure option.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v355 6/28/00 Add -# option (thanks to Andy Levinson).
|
|
||||||
v356 7/5/00 Add -J option.
|
|
||||||
v357 7/6/00 Support sigprocmask.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v358 7/8/00 Fix problems with #stop in lesskey file.
|
|
||||||
Posted to Web page.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v359 9/10/00 Fixes for Win32 display problems (thanks to Maurizio Vairani).
|
|
||||||
v360 1/17/01 Move sysless to etc.
|
|
||||||
v361 12/4/01 Add IBM-1047 charset & EBCDIC fixes (thanks to Thomas Dorner).
|
|
||||||
Fix 32 bit dependencies (thanks to Paul Eggert).
|
|
||||||
Fix UTF-8 overstriking (thanks to Robert Brady).
|
|
||||||
v362 12/4/01 Make status column show search targets.
|
|
||||||
v363 12/6/01 Add --no-keypad option.
|
|
||||||
Add variable width tabstops (thanks to Peter Samuelson).
|
|
||||||
v364 12/10/01 Better handling of very long lines in input;
|
|
||||||
Fix horizontal shifting of colored text.
|
|
||||||
v365 12/11/01 Fix overstriking of tabs;
|
|
||||||
Add support for global(1) and multiple tag matches
|
|
||||||
(thanks to Shigio Yamaguchi and Tim Vanderhoek).
|
|
||||||
v366 12/11/01 Fixes for OS/2 (thanks to Kyosuke Tokoro).
|
|
||||||
v367 12/13/01 Allow -D and -x options to terminate without dollar sign;
|
|
||||||
Right/left arrow when entering N are shift cmds, not line edit.
|
|
||||||
v368 12/18/01 Update lesskey commands.
|
|
||||||
v370 12/23/01 Fix tags error messages.
|
|
||||||
Posted to Web page.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v371 12/26/01 Fix new_file bug; use popen in Windows version;
|
|
||||||
fix some compiler warnings.
|
|
||||||
v372 12/29/01 Make -b be in units of 1K.
|
|
||||||
v373 1/14/02 Improve handling of filenames containing shell metachars.
|
|
||||||
v374 2/7/02 Fix memory leak; fix bug in -x argument parsing.
|
|
||||||
v375 4/7/02 Fix searching for SGR sequences; fix SECURE build;
|
|
||||||
add SGR support to DJGPP version (thanks to Eli Zaretskii).
|
|
||||||
v376 6/10/02 Fix bug in overstriking mulitbyte UTF-8 characters
|
|
||||||
(thanks to Jungshik Shin).
|
|
||||||
Posted to Web page.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v377 9/10/02 Fix bug in Windows version when file contains CR;
|
|
||||||
fix bug in search highlights with -R;
|
|
||||||
make initial buffer limit really be 64K not unlimited.
|
|
||||||
v378 9/30/02 Misc bug fixes and compiler warning cleanup.
|
|
||||||
Posted to Web page.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v379 11/23/02 Add -L option; fix bug with ctrl-K in lesskey files;
|
|
||||||
improve UTF-8 overstriking and underscore overstriking;
|
|
||||||
fix minor man page problems; change to autoconf 2.54.
|
|
||||||
v380 11/24/02 Make LINENUM same as POSITION.
|
|
||||||
v381 11/28/02 Make -N use 7 columns for line number if possible.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v382 2/3/04 Remove copyrighted code.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v383 2/16/04 Add history file; add -K option; improve UTF-8 handling;
|
|
||||||
fix some signed char bugs (thanks to Christian Biere);
|
|
||||||
fix some upper/lower case bugs (thanks to Bjoern Jacke);
|
|
||||||
add erase2 char (thanks to David Lawrence);
|
|
||||||
add windows charset (thanks to Dimitar Zhekov).
|
|
||||||
v384 2/20/04 Improvements in UTF-8 handling.
|
|
||||||
v385 2/23/04 Fix UTF-8 output bug.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v386 9/13/05 Improvements to UTF-8 shift & color (thanks to Charles Levert);
|
|
||||||
protect against invalid LESSOPEN and LESSCLOSE values.
|
|
||||||
v387 9/14/05 Update Charles Levert's UTF-8 patch.
|
|
||||||
v388 9/14/05 Change history behavior; change most sprintf calls to snprintf.
|
|
||||||
v389 9/14/05 Fix copy & paste with long lines; improve performance of
|
|
||||||
expand_linebuf; fix crash in init_mlist;
|
|
||||||
v390 9/15/05 Show search matches in status column even if -G is set.
|
|
||||||
-----------------------------------------------------------------
|
|
||||||
v391 9/17/05 Fix bugs.
|
|
||||||
v392 10/14/05 Fix line wrapping bug.
|
|
||||||
v393 10/19/05 Allow multiple attributes per char; fix bold+underline bug
|
|
||||||
(thanks again to Charles Levert).
|
|
||||||
v394 11/8/05 Fix prompt bug; fix compile problem in Windows build.
|
|
||||||
*/
|
|
||||||
|
|
||||||
char version[] = "394";
|
|
|
@ -1,100 +0,0 @@
|
||||||
#! /bin/sh
|
|
||||||
#
|
|
||||||
# $NetBSD: less2netbsd,v 1.8 2008/05/29 14:51:27 mrg Exp $
|
|
||||||
#
|
|
||||||
# Copyright (c) 1996, 2003 Matthew R. Green
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# Redistribution and use in source and binary forms, with or without
|
|
||||||
# modification, are permitted provided that the following conditions
|
|
||||||
# are met:
|
|
||||||
# 1. Redistributions of source code must retain the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer.
|
|
||||||
# 2. Redistributions in binary form must reproduce the above copyright
|
|
||||||
# notice, this list of conditions and the following disclaimer in the
|
|
||||||
# documentation and/or other materials provided with the distribution.
|
|
||||||
#
|
|
||||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
||||||
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
||||||
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
||||||
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
||||||
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
|
||||||
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
|
||||||
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
||||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
||||||
# SUCH DAMAGE.
|
|
||||||
|
|
||||||
# less2netbsd: convert a less source tree into a netbsd less source
|
|
||||||
# tree, under src/usr.bin/less ready for importing. note that you need
|
|
||||||
# to run ./configure to generate defines.h (a bug in less 381's configure
|
|
||||||
# wrongly does not find sigset_t on NetBSD; correct this in defines.h.)
|
|
||||||
|
|
||||||
if [ $# -ne 2 ]; then echo "less2netbsd src dest"; exit 1; fi
|
|
||||||
|
|
||||||
r=$1
|
|
||||||
d=$2/less
|
|
||||||
|
|
||||||
case "$d" in
|
|
||||||
/*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
d=`/bin/pwd`/$d
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
case "$r" in
|
|
||||||
/*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
r=`/bin/pwd`/$r
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
echo preparing directory $d
|
|
||||||
rm -rf $d
|
|
||||||
mkdir -p $d; cd $d
|
|
||||||
mkdir -p src/usr.bin/less/less src/usr.bin/less/lesskey src/usr.bin/less/lessecho
|
|
||||||
|
|
||||||
### start less ###############################
|
|
||||||
cd $r
|
|
||||||
echo less:
|
|
||||||
src="main.c screen.c brac.c ch.c charset.c cmdbuf.c command.c decode.c edit.c filename.c forwback.c help.c ifile.c input.c jump.c line.c linenum.c lsystem.c mark.c optfunc.c option.c opttbl.c os.c output.c position.c prompt.c search.c signal.c tags.c ttyin.c version.c"
|
|
||||||
src="$src charset.h cmd.h defines.h funcs.h less.h lesskey.h lglob.h option.h pckeys.h position.h regexp.h"
|
|
||||||
src="$src INSTALL LICENSE NEWS README less.nro"
|
|
||||||
|
|
||||||
pax -rvw $src $d/src/usr.bin/less/less
|
|
||||||
|
|
||||||
cd $d/src/usr.bin/less/less
|
|
||||||
mv less.nro less.1
|
|
||||||
|
|
||||||
### end less ###############################
|
|
||||||
|
|
||||||
### start lesskey ###############################
|
|
||||||
cd $r
|
|
||||||
echo lesskey:
|
|
||||||
src='lesskey.c lesskey.h lesskey.nro'
|
|
||||||
|
|
||||||
pax -rvw $src $d/src/usr.bin/less/lesskey
|
|
||||||
|
|
||||||
cd $d/src/usr.bin/less/lesskey
|
|
||||||
mv lesskey.nro lesskey.1
|
|
||||||
|
|
||||||
### end lesskey ###############################
|
|
||||||
|
|
||||||
### start lessecho ###############################
|
|
||||||
cd $r
|
|
||||||
echo lessecho:
|
|
||||||
src='lessecho.c'
|
|
||||||
|
|
||||||
pax -rvw $src $d/src/usr.bin/less/lessecho
|
|
||||||
|
|
||||||
### end lesskey ###############################
|
|
||||||
|
|
||||||
find $d -name '*.[ch]' -print | while read c; do
|
|
||||||
chmod u+w $c
|
|
||||||
done
|
|
||||||
|
|
||||||
echo done
|
|
||||||
exit 0
|
|
|
@ -1,10 +0,0 @@
|
||||||
# $NetBSD: Makefile,v 1.3 2002/09/18 14:00:38 lukem Exp $
|
|
||||||
|
|
||||||
NOMAN= # defined
|
|
||||||
|
|
||||||
PROG= lessecho
|
|
||||||
SRCS= lessecho.c version.c
|
|
||||||
CPPFLAGS+=-I${.CURDIR}/../less
|
|
||||||
.PATH: ${.CURDIR}/../less
|
|
||||||
|
|
||||||
.include <bsd.prog.mk>
|
|
|
@ -1,9 +0,0 @@
|
||||||
# $NetBSD: Makefile,v 1.5 1997/10/24 09:00:39 lukem Exp $
|
|
||||||
|
|
||||||
PROG= lesskey
|
|
||||||
SRCS= lesskey.c version.c
|
|
||||||
CPPFLAGS+=-I${.CURDIR}/../less
|
|
||||||
|
|
||||||
.PATH: ${.CURDIR}/../less
|
|
||||||
|
|
||||||
.include <bsd.prog.mk>
|
|
|
@ -1,40 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
|
||||||
*
|
|
||||||
* You may distribute under the terms of either the GNU General Public
|
|
||||||
* License or the Less License, as specified in the README file.
|
|
||||||
*
|
|
||||||
* For more information about less, or for information on how to
|
|
||||||
* contact the author, see the README file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Format of a lesskey file:
|
|
||||||
*
|
|
||||||
* LESSKEY_MAGIC (4 bytes)
|
|
||||||
* sections...
|
|
||||||
* END_LESSKEY_MAGIC (4 bytes)
|
|
||||||
*
|
|
||||||
* Each section is:
|
|
||||||
*
|
|
||||||
* section_MAGIC (1 byte)
|
|
||||||
* section_length (2 bytes)
|
|
||||||
* key table (section_length bytes)
|
|
||||||
*/
|
|
||||||
#define C0_LESSKEY_MAGIC '\0'
|
|
||||||
#define C1_LESSKEY_MAGIC 'M'
|
|
||||||
#define C2_LESSKEY_MAGIC '+'
|
|
||||||
#define C3_LESSKEY_MAGIC 'G'
|
|
||||||
|
|
||||||
#define CMD_SECTION 'c'
|
|
||||||
#define EDIT_SECTION 'e'
|
|
||||||
#define VAR_SECTION 'v'
|
|
||||||
#define END_SECTION 'x'
|
|
||||||
|
|
||||||
#define C0_END_LESSKEY_MAGIC 'E'
|
|
||||||
#define C1_END_LESSKEY_MAGIC 'n'
|
|
||||||
#define C2_END_LESSKEY_MAGIC 'd'
|
|
||||||
|
|
||||||
/* */
|
|
||||||
#define KRADIX 64
|
|
|
@ -2130,6 +2130,7 @@
|
||||||
./usr/man/man1/ld.elf_so.1 minix-sys
|
./usr/man/man1/ld.elf_so.1 minix-sys
|
||||||
./usr/man/man1/leave.1 minix-sys
|
./usr/man/man1/leave.1 minix-sys
|
||||||
./usr/man/man1/less.1 minix-sys
|
./usr/man/man1/less.1 minix-sys
|
||||||
|
./usr/man/man1/lessecho.1 minix-sys
|
||||||
./usr/man/man1/lesskey.1 minix-sys
|
./usr/man/man1/lesskey.1 minix-sys
|
||||||
./usr/man/man1/lex.1 minix-sys
|
./usr/man/man1/lex.1 minix-sys
|
||||||
./usr/man/man1/linkfarm.1 minix-sys
|
./usr/man/man1/linkfarm.1 minix-sys
|
||||||
|
|
6
external/bsd/Makefile
vendored
6
external/bsd/Makefile
vendored
|
@ -2,8 +2,10 @@
|
||||||
|
|
||||||
.include <bsd.own.mk>
|
.include <bsd.own.mk>
|
||||||
|
|
||||||
SUBDIR= byacc file flex mdocml \
|
SUBDIR= byacc file flex less \
|
||||||
libarchive
|
libarchive mdocml \
|
||||||
|
|
||||||
|
|
||||||
.if (${MKATF} != "no")
|
.if (${MKATF} != "no")
|
||||||
SUBDIR+= atf
|
SUBDIR+= atf
|
||||||
.endif
|
.endif
|
||||||
|
|
7
external/bsd/less/Makefile
vendored
Normal file
7
external/bsd/less/Makefile
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# $NetBSD: Makefile,v 1.1 2011/07/03 18:02:00 tron Exp $
|
||||||
|
|
||||||
|
.include <bsd.own.mk>
|
||||||
|
|
||||||
|
SUBDIR= bin
|
||||||
|
|
||||||
|
.include <bsd.subdir.mk>
|
4
external/bsd/less/Makefile.inc
vendored
Normal file
4
external/bsd/less/Makefile.inc
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
# $NetBSD: Makefile.inc,v 1.1 2011/07/03 18:02:00 tron Exp $
|
||||||
|
|
||||||
|
LESS_DISTDIR= ${NETBSDSRCDIR}/external/bsd/less/dist
|
||||||
|
.PATH: ${LESS_DISTDIR}
|
7
external/bsd/less/bin/Makefile
vendored
Normal file
7
external/bsd/less/bin/Makefile
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# $NetBSD: Makefile,v 1.1 2011/07/03 18:02:01 tron Exp $
|
||||||
|
|
||||||
|
.include <bsd.own.mk>
|
||||||
|
|
||||||
|
SUBDIR= less lessecho lesskey
|
||||||
|
|
||||||
|
.include <bsd.subdir.mk>
|
7
external/bsd/less/bin/Makefile.inc
vendored
Normal file
7
external/bsd/less/bin/Makefile.inc
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
# $NetBSD: Makefile.inc,v 1.1 2011/07/03 18:02:01 tron Exp $
|
||||||
|
|
||||||
|
.include "../Makefile.inc"
|
||||||
|
|
||||||
|
BINDIR= /usr/bin
|
||||||
|
|
||||||
|
CPPFLAGS+= -I${LESS_DISTDIR} -DBINDIR=\"${BINDIR}\" -DSYSDIR=\"/etc\"
|
20
external/bsd/less/bin/less/Makefile
vendored
Normal file
20
external/bsd/less/bin/less/Makefile
vendored
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# $NetBSD: Makefile,v 1.2 2011/07/03 18:15:18 tron Exp $
|
||||||
|
|
||||||
|
.include <bsd.own.mk>
|
||||||
|
|
||||||
|
PROG= less
|
||||||
|
|
||||||
|
SRCS= main.c screen.c brac.c ch.c charset.c cmdbuf.c \
|
||||||
|
command.c cvt.c decode.c edit.c filename.c forwback.c \
|
||||||
|
help.c ifile.c input.c jump.c line.c linenum.c \
|
||||||
|
lsystem.c mark.c optfunc.c option.c opttbl.c os.c \
|
||||||
|
output.c pattern.c position.c prompt.c search.c signal.c \
|
||||||
|
tags.c ttyin.c version.c
|
||||||
|
|
||||||
|
LDADD+= -lcurses -ltermcap
|
||||||
|
DPADD+= ${LIBCURSES}
|
||||||
|
|
||||||
|
MLINKS= less.1 more.1 less.1 page.1
|
||||||
|
LINKS= ${BINDIR}/less ${BINDIR}/more ${BINDIR}/less ${BINDIR}/page
|
||||||
|
|
||||||
|
.include "bsd.prog.mk"
|
9
external/bsd/less/bin/lessecho/Makefile
vendored
Normal file
9
external/bsd/less/bin/lessecho/Makefile
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
# $NetBSD: Makefile,v 1.1 2011/07/03 18:02:01 tron Exp $
|
||||||
|
|
||||||
|
.include <bsd.own.mk>
|
||||||
|
|
||||||
|
PROG= lessecho
|
||||||
|
|
||||||
|
SRCS= lessecho version.c
|
||||||
|
|
||||||
|
.include "bsd.prog.mk"
|
12
external/bsd/less/bin/lesskey/Makefile
vendored
Normal file
12
external/bsd/less/bin/lesskey/Makefile
vendored
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# $NetBSD: Makefile,v 1.1 2011/07/03 18:02:01 tron Exp $
|
||||||
|
|
||||||
|
.include <bsd.own.mk>
|
||||||
|
|
||||||
|
PROG= lesskey
|
||||||
|
|
||||||
|
SRCS= lesskey version.c
|
||||||
|
|
||||||
|
LDADD+= -ltermcap
|
||||||
|
DPADD+= ${LIBTERM}
|
||||||
|
|
||||||
|
.include "bsd.prog.mk"
|
674
external/bsd/less/dist/COPYING
vendored
Normal file
674
external/bsd/less/dist/COPYING
vendored
Normal file
|
@ -0,0 +1,674 @@
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
|
@ -2,7 +2,7 @@
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Less
|
Less
|
||||||
Copyright (C) 1984-2005 Mark Nudelman
|
Copyright (C) 1984-2011 Mark Nudelman
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions
|
modification, are permitted provided that the following conditions
|
133
external/bsd/less/dist/Makefile.aut
vendored
Normal file
133
external/bsd/less/dist/Makefile.aut
vendored
Normal file
|
@ -0,0 +1,133 @@
|
||||||
|
# Makefile for authoring less.
|
||||||
|
|
||||||
|
EMAIL = markn@greenwoodsoftware.com
|
||||||
|
HOMEPAGE = http://www.greenwoodsoftware.com/less
|
||||||
|
SHELL = /bin/sh
|
||||||
|
RCS = rcs
|
||||||
|
NROFF = nroff -man
|
||||||
|
|
||||||
|
srcdir = .
|
||||||
|
|
||||||
|
SRC = \
|
||||||
|
main.c screen.c brac.c ch.c charset.c cmdbuf.c \
|
||||||
|
command.c cvt.c decode.c edit.c filename.c forwback.c \
|
||||||
|
help.c ifile.c input.c jump.c line.c linenum.c \
|
||||||
|
lsystem.c mark.c optfunc.c option.c opttbl.c os.c \
|
||||||
|
output.c pattern.c position.c prompt.c search.c signal.c \
|
||||||
|
tags.c ttyin.c version.c
|
||||||
|
DISTFILES_W = \
|
||||||
|
defines.ds Makefile.dsb Makefile.dsg Makefile.dsu \
|
||||||
|
defines.o2 Makefile.o2e \
|
||||||
|
defines.o9 Makefile.o9c Makefile.o9u \
|
||||||
|
defines.wn Makefile.wnm Makefile.wnb
|
||||||
|
DISTFILES = \
|
||||||
|
${SRC} regexp.c regexp.h \
|
||||||
|
COPYING INSTALL LICENSE Makefile.in Makefile.aut NEWS README \
|
||||||
|
configure configure.ac lesskey.c lessecho.c scrsize.c \
|
||||||
|
charset.h cmd.h funcs.h lglob.h less.h lesskey.h option.h \
|
||||||
|
pckeys.h pattern.h position.h \
|
||||||
|
install.sh defines.h.in mkinstalldirs \
|
||||||
|
less.nro less.man lesskey.nro lesskey.man lessecho.nro lessecho.man \
|
||||||
|
less.hlp \
|
||||||
|
mkfuncs.awk mkhelp.c \
|
||||||
|
${DISTFILES_W}
|
||||||
|
|
||||||
|
all: help.c funcs.h ${srcdir}/configure
|
||||||
|
|
||||||
|
release: .FORCE
|
||||||
|
${MAKE} -f Makefile.aut tagall
|
||||||
|
${MAKE} -f Makefile.aut all
|
||||||
|
${MAKE} -f Makefile.aut clean
|
||||||
|
${MAKE} -f Makefile.aut dist
|
||||||
|
|
||||||
|
.FORCE:
|
||||||
|
|
||||||
|
help.c: less.hlp mkhelp
|
||||||
|
-mv -f ${srcdir}/help.c ${srcdir}/help.c.old
|
||||||
|
rm -rf help.c
|
||||||
|
./mkhelp < less.hlp > help.c
|
||||||
|
if cmp -s help.c help.c.old; then mv help.c.old help.c; fi
|
||||||
|
|
||||||
|
mkhelp: mkhelp.c
|
||||||
|
${CC} -o mkhelp mkhelp.c
|
||||||
|
|
||||||
|
${srcdir}/configure: ${srcdir}/configure.ac \
|
||||||
|
${srcdir}/Makefile.in
|
||||||
|
cd ${srcdir}; autoheader; autoconf
|
||||||
|
|
||||||
|
funcs.h: ${SRC:%=${srcdir}/%}
|
||||||
|
-mv -f ${srcdir}/funcs.h ${srcdir}/funcs.h.old
|
||||||
|
awk -f ${srcdir}/mkfuncs.awk ${SRC:%=${srcdir}/%} >${srcdir}/funcs.h
|
||||||
|
if cmp -s funcs.h funcs.h.old; then mv funcs.h.old funcs.h; fi
|
||||||
|
|
||||||
|
lint:
|
||||||
|
lint -I. ${CPPFLAGS} ${SRC}
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f Makefile config.status config.log config.cache defines.h stamp-h \
|
||||||
|
README NEWS \
|
||||||
|
less.nro less.man lesskey.nro lesskey.man lessecho.nro lessecho.man
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
realclean: clean
|
||||||
|
|
||||||
|
REPLACE_VERSION = \
|
||||||
|
@REL=`sed -e '/char version/!d' -e 's/[^0-9.]*\([0-9.]*\).*/\1/' -e q ${srcdir}/version.c`; \
|
||||||
|
DT=`date '+%d %h %Y'`; \
|
||||||
|
echo "Stuffing version number $$REL into $@"; \
|
||||||
|
sed \
|
||||||
|
-e "s;@@VERSION@@;$$REL;" \
|
||||||
|
-e "s;@@DATE@@;$$DT;" \
|
||||||
|
-e "s;@@EMAIL@@;${EMAIL};" \
|
||||||
|
-e "s;@@HOMEPAGE@@;${HOMEPAGE};" >$@
|
||||||
|
|
||||||
|
${srcdir}/README: ${srcdir}/README.VER ${srcdir}/version.c
|
||||||
|
${REPLACE_VERSION} ${srcdir}/README.VER
|
||||||
|
${srcdir}/NEWS: ${srcdir}/NEWS.VER ${srcdir}/version.c
|
||||||
|
${REPLACE_VERSION} ${srcdir}/NEWS.VER
|
||||||
|
${srcdir}/less.nro: ${srcdir}/less.nro.VER ${srcdir}/version.c
|
||||||
|
${REPLACE_VERSION} ${srcdir}/less.nro.VER
|
||||||
|
${srcdir}/lesskey.nro: ${srcdir}/lesskey.nro.VER ${srcdir}/version.c
|
||||||
|
${REPLACE_VERSION} ${srcdir}/lesskey.nro.VER
|
||||||
|
${srcdir}/lessecho.nro: ${srcdir}/lessecho.nro.VER ${srcdir}/version.c
|
||||||
|
${REPLACE_VERSION} ${srcdir}/lessecho.nro.VER
|
||||||
|
${srcdir}/less.hlp: ${srcdir}/less.hlp.VER ${srcdir}/version.c
|
||||||
|
${REPLACE_VERSION} ${srcdir}/less.hlp.VER
|
||||||
|
|
||||||
|
${srcdir}/less.man: ${srcdir}/less.nro
|
||||||
|
${NROFF} ${srcdir}/less.nro >${srcdir}/less.man
|
||||||
|
${srcdir}/lesskey.man: ${srcdir}/lesskey.nro
|
||||||
|
${NROFF} ${srcdir}/lesskey.nro >${srcdir}/lesskey.man
|
||||||
|
${srcdir}/lessecho.man: ${srcdir}/lessecho.nro
|
||||||
|
${NROFF} ${srcdir}/lessecho.nro >${srcdir}/lessecho.man
|
||||||
|
|
||||||
|
|
||||||
|
distfiles: ${DISTFILES}
|
||||||
|
|
||||||
|
dist: ${DISTFILES}
|
||||||
|
if [ ! -d ${srcdir}/release ]; then mkdir ${srcdir}/release; fi
|
||||||
|
@cd ${srcdir}; \
|
||||||
|
REL=`sed -e '/char version/!d' -e 's/[^0-9.]*\([0-9.]*\).*/less-\1/' -e q version.c`; \
|
||||||
|
rm -rf release/$$REL; mkdir release/$$REL; \
|
||||||
|
echo "Preparing $$REL"; \
|
||||||
|
rm -rf $$REL; mkdir $$REL; \
|
||||||
|
for file in ${DISTFILES}; do \
|
||||||
|
cp -p $$file $$REL; \
|
||||||
|
chmod -w $$REL/$$file; \
|
||||||
|
done; \
|
||||||
|
cd $$REL; chmod +w ${DISTFILES_W}; cd ..; \
|
||||||
|
echo "Creating release/$$REL/$$REL.tar.gz"; \
|
||||||
|
tar -cf - $$REL | gzip -c >release/$$REL/$$REL.tar.gz; \
|
||||||
|
echo "Signing release/$$REL/$$REL.tar.gz"; \
|
||||||
|
gpg --detach-sign release/$$REL/$$REL.tar.gz; \
|
||||||
|
echo "Creating release/$$REL/$$REL.zip"; \
|
||||||
|
zip -rq release/$$REL/$$REL.zip $$REL; \
|
||||||
|
rm -rf $$REL
|
||||||
|
|
||||||
|
tagall:
|
||||||
|
@REL=`sed -e '/char version/!d' -e 's/[^0-9.]*\([0-9.]*\).*/v\1/' -e q ${srcdir}/version.c`; \
|
||||||
|
echo "tagging $$REL"; \
|
||||||
|
for f in ${srcdir}/RCS/*,v; do \
|
||||||
|
REV=`co -p $$f 2>&1 | sed -e '1d' -e '3,$$d' -e 's/revision //'`; \
|
||||||
|
${RCS} -N$$REL:$$REV $$f; \
|
||||||
|
done
|
51
external/bsd/less/dist/Makefile.dsb
vendored
Normal file
51
external/bsd/less/dist/Makefile.dsb
vendored
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
# Makefile for less.
|
||||||
|
# MS-DOS version (Borland C/C++ 4.02)
|
||||||
|
|
||||||
|
#### Start of system configuration section. ####
|
||||||
|
|
||||||
|
CC = bcc
|
||||||
|
LIBDIR = \bc\lib
|
||||||
|
|
||||||
|
CFLAGS = -A- -mm -O2 -w- -1- -2- -a -d -Z
|
||||||
|
LDFLAGS = -mm
|
||||||
|
LIBS =
|
||||||
|
EXT = .EXE
|
||||||
|
|
||||||
|
#### End of system configuration section. ####
|
||||||
|
|
||||||
|
# This rule allows us to supply the necessary -D options
|
||||||
|
# in addition to whatever the user asks for.
|
||||||
|
.c.obj:
|
||||||
|
$(CC) -c -I. $(CPPFLAGS) $(CFLAGS) $<
|
||||||
|
|
||||||
|
OBJ = \
|
||||||
|
main.obj screen.obj brac.obj ch.obj charset.obj cmdbuf.obj \
|
||||||
|
command.obj cvt.obj decode.obj edit.obj filename.obj forwback.obj \
|
||||||
|
help.obj ifile.obj input.obj jump.obj line.obj linenum.obj \
|
||||||
|
lsystem.obj mark.obj optfunc.obj option.obj opttbl.obj os.obj \
|
||||||
|
output.obj pattern.obj position.obj prompt.obj search.obj signal.obj \
|
||||||
|
tags.obj ttyin.obj version.obj
|
||||||
|
|
||||||
|
all: less$(EXT) lesskey$(EXT)
|
||||||
|
|
||||||
|
# This is really horrible, but the command line is too long for
|
||||||
|
# MS-DOS if we try to link $(OBJ).
|
||||||
|
less$(EXT): $(OBJ)
|
||||||
|
ren lesskey.obj lesskey.obo
|
||||||
|
$(CC) $(LDFLAGS) -e$@ *.obj $(LIBS)
|
||||||
|
ren lesskey.obo lesskey.obj
|
||||||
|
|
||||||
|
lesskey$(EXT): lesskey.obj version.obj
|
||||||
|
$(CC) $(LDFLAGS) -e$@ lesskey.obj version.obj $(LIBS)
|
||||||
|
|
||||||
|
defines.h: defines.ds
|
||||||
|
-del defines.h
|
||||||
|
-copy defines.ds defines.h
|
||||||
|
|
||||||
|
$(OBJ): less.h defines.h
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-del *.obj
|
||||||
|
-del less.exe
|
||||||
|
-del lesskey.exe
|
||||||
|
|
92
external/bsd/less/dist/Makefile.dsg
vendored
Normal file
92
external/bsd/less/dist/Makefile.dsg
vendored
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
# Makefile for less under DJGPP v2.0 or later.
|
||||||
|
|
||||||
|
#### Start of system configuration section. ####
|
||||||
|
|
||||||
|
srcdir = .
|
||||||
|
VPATH = .
|
||||||
|
|
||||||
|
CC = gcc
|
||||||
|
INSTALL = ginstall -c
|
||||||
|
INSTALL_PROGRAM = ginstall
|
||||||
|
INSTALL_DATA = ginstall -m 644
|
||||||
|
AWK = gawk
|
||||||
|
|
||||||
|
CFLAGS = -O2 -g
|
||||||
|
CFLAGS_COMPILE_ONLY = -c
|
||||||
|
#LDFLAGS = -s
|
||||||
|
LDFLAGS = -g
|
||||||
|
O=o
|
||||||
|
|
||||||
|
LIBS =
|
||||||
|
prefix = /dev/env/DJDIR
|
||||||
|
exec_prefix = ${prefix}
|
||||||
|
|
||||||
|
bindir = ${exec_prefix}/bin
|
||||||
|
sysconfdir = ${prefix}/etc
|
||||||
|
mandir = ${prefix}/man
|
||||||
|
manext = 1
|
||||||
|
|
||||||
|
#### End of system configuration section. ####
|
||||||
|
|
||||||
|
# This rule allows us to supply the necessary -D options
|
||||||
|
# in addition to whatever the user asks for.
|
||||||
|
.c.o:
|
||||||
|
${CC} -I. ${CFLAGS_COMPILE_ONLY} -DBINDIR=\"${bindir}\" -DSYSDIR=\"${sysconfdir}\" ${CPPFLAGS} ${CFLAGS} $<
|
||||||
|
|
||||||
|
OBJ = \
|
||||||
|
main.${O} screen.${O} brac.${O} ch.${O} charset.${O} cmdbuf.${O} \
|
||||||
|
command.${O} cvt.${O} decode.${O} edit.${O} filename.${O} forwback.${O} \
|
||||||
|
help.${O} ifile.${O} input.${O} jump.${O} line.${O} linenum.${O} \
|
||||||
|
lsystem.${O} mark.${O} optfunc.${O} option.${O} opttbl.${O} os.${O} \
|
||||||
|
output.${O} pattern.${O} position.${O} prompt.${O} search.${O} signal.${O} \
|
||||||
|
tags.${O} ttyin.${O} version.${O}
|
||||||
|
|
||||||
|
all: less lesskey lessecho
|
||||||
|
|
||||||
|
less: ${OBJ}
|
||||||
|
${CC} ${LDFLAGS} -o $@ ${OBJ} ${LIBS}
|
||||||
|
|
||||||
|
lesskey: lesskey.${O} version.${O}
|
||||||
|
${CC} ${LDFLAGS} -o $@ lesskey.${O} version.${O}
|
||||||
|
|
||||||
|
lessecho: lessecho.${O} version.${O}
|
||||||
|
${CC} ${LDFLAGS} -o $@ lessecho.${O} version.${O}
|
||||||
|
|
||||||
|
defines.h: defines.ds
|
||||||
|
command.com /c copy $< $@
|
||||||
|
|
||||||
|
${OBJ}: ${srcdir}/less.h defines.h ${srcdir}/funcs.h
|
||||||
|
|
||||||
|
install: all ${srcdir}/less.man ${srcdir}/lesskey.man
|
||||||
|
${INSTALL_PROGRAM} less.exe ${bindir}/less.exe
|
||||||
|
${INSTALL_PROGRAM} lesskey.exe ${bindir}/lesskey.exe
|
||||||
|
${INSTALL_PROGRAM} lessecho.exe ${bindir}/lessecho.exe
|
||||||
|
${INSTALL_DATA} ${srcdir}/less.man ${mandir}/man${manext}/less.${manext}
|
||||||
|
${INSTALL_DATA} ${srcdir}/lesskey.man ${mandir}/man${manext}/lesskey.${manext}
|
||||||
|
|
||||||
|
info:
|
||||||
|
install-info:
|
||||||
|
dvi:
|
||||||
|
check:
|
||||||
|
installcheck:
|
||||||
|
|
||||||
|
TAGS:
|
||||||
|
etags *.c *.h
|
||||||
|
|
||||||
|
newfuncs:
|
||||||
|
command.com /c if exist funcs.h del funcs.h
|
||||||
|
${AWK} -f mkfuncs.awk ${OBJ:.${O}=.c} > funcs.h
|
||||||
|
|
||||||
|
clean:
|
||||||
|
command.com /c for %f in (*.${O} less lesskey lessecho *.exe) do if exist %f del %f
|
||||||
|
|
||||||
|
mostlyclean: clean
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
command.com /c if not exist Makefile.dsg ren Makefile Makefile.dsg
|
||||||
|
command.com /c if not exist defines.ds ren defines.h defines.ds
|
||||||
|
command.com /c for %f in (Makefile defines.h) do if exist %f del %f
|
||||||
|
|
||||||
|
realclean: distclean
|
||||||
|
command.com /c if exist TAGS del TAGS
|
||||||
|
|
59
external/bsd/less/dist/Makefile.dsu
vendored
Normal file
59
external/bsd/less/dist/Makefile.dsu
vendored
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
# Makefile for less.
|
||||||
|
# MS-DOS version
|
||||||
|
|
||||||
|
#### Start of system configuration section. ####
|
||||||
|
|
||||||
|
CC = cl
|
||||||
|
# Change the following directories to match your installation.
|
||||||
|
LIBDIR = c:\msvc\lib
|
||||||
|
INCDIR = c:\msvc\include
|
||||||
|
|
||||||
|
# CFLAGS are compile-time options and LDFLAGS are link-time options. They are
|
||||||
|
# customized for MSVC 1.0 (MSC 8.0). If you have a different version of the
|
||||||
|
# compiler, you may need to change some of the options to their equivalents.
|
||||||
|
# -Ot optimize for speed
|
||||||
|
# -AL large memory model
|
||||||
|
# -Za ANSI C conformance
|
||||||
|
# -nologo suppress MSVC banners
|
||||||
|
# -onerror:noexe no .EXE file if link errors occur
|
||||||
|
CFLAGS = -Ot -AL -Za -nologo
|
||||||
|
LDFLAGS = -onerror:noexe -nologo
|
||||||
|
LIBS = $(LIBDIR)\llibce.lib $(LIBDIR)\graphics.lib
|
||||||
|
|
||||||
|
#### End of system configuration section. ####
|
||||||
|
|
||||||
|
# This rule allows us to supply the necessary -D options
|
||||||
|
# in addition to whatever the user asks for.
|
||||||
|
.c.obj:
|
||||||
|
$(CC) -c -I. -I$(INCDIR) $(CPPFLAGS) $(CFLAGS) $<
|
||||||
|
|
||||||
|
OBJ = \
|
||||||
|
main.obj screen.obj brac.obj ch.obj charset.obj cmdbuf.obj \
|
||||||
|
command.obj cvt.obj decode.obj edit.obj filename.obj forwback.obj \
|
||||||
|
help.obj ifile.obj input.obj jump.obj line.obj linenum.obj \
|
||||||
|
lsystem.obj mark.obj optfunc.obj option.obj opttbl.obj os.obj \
|
||||||
|
output.obj pattern.obj position.obj prompt.obj search.obj signal.obj \
|
||||||
|
tags.obj ttyin.obj version.obj
|
||||||
|
|
||||||
|
all: less lesskey
|
||||||
|
|
||||||
|
# This is really horrible, but the command line is too long for
|
||||||
|
# MS-DOS if we try to link $(OBJ).
|
||||||
|
less: $(OBJ)
|
||||||
|
-if exist lesskey.obj del lesskey.obj
|
||||||
|
$(CC) $(LDFLAGS) -o $@ *.obj $(LIBS)
|
||||||
|
|
||||||
|
lesskey: lesskey.obj version.obj
|
||||||
|
$(CC) $(LDFLAGS) -o $@ lesskey.obj version.obj $(LIBS)
|
||||||
|
|
||||||
|
defines.h: defines.ds
|
||||||
|
-del defines.h
|
||||||
|
-copy defines.ds defines.h
|
||||||
|
|
||||||
|
$(OBJ): less.h defines.h
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-del *.obj
|
||||||
|
-del less.exe
|
||||||
|
-del lesskey.exe
|
||||||
|
|
122
external/bsd/less/dist/Makefile.in
vendored
Normal file
122
external/bsd/less/dist/Makefile.in
vendored
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
# Makefile for less.
|
||||||
|
|
||||||
|
#### Start of system configuration section. ####
|
||||||
|
|
||||||
|
srcdir = @srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
|
||||||
|
CC = @CC@
|
||||||
|
INSTALL = @INSTALL@
|
||||||
|
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||||
|
INSTALL_DATA = @INSTALL_DATA@
|
||||||
|
|
||||||
|
CFLAGS = @CFLAGS@
|
||||||
|
CFLAGS_COMPILE_ONLY = -c
|
||||||
|
LDFLAGS = @LDFLAGS@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
EXEEXT = @EXEEXT@
|
||||||
|
O=o
|
||||||
|
|
||||||
|
LIBS = @LIBS@
|
||||||
|
|
||||||
|
prefix = @prefix@
|
||||||
|
exec_prefix = @exec_prefix@
|
||||||
|
|
||||||
|
# Where the installed binary goes.
|
||||||
|
bindir = @bindir@
|
||||||
|
binprefix =
|
||||||
|
|
||||||
|
sysconfdir = @sysconfdir@
|
||||||
|
datarootdir = @datarootdir@
|
||||||
|
|
||||||
|
mandir = @mandir@
|
||||||
|
manext = 1
|
||||||
|
manprefix =
|
||||||
|
DESTDIR =
|
||||||
|
|
||||||
|
#### End of system configuration section. ####
|
||||||
|
|
||||||
|
SHELL = /bin/sh
|
||||||
|
|
||||||
|
# This rule allows us to supply the necessary -D options
|
||||||
|
# in addition to whatever the user asks for.
|
||||||
|
.c.o:
|
||||||
|
${CC} -I. ${CFLAGS_COMPILE_ONLY} -DBINDIR=\"${bindir}\" -DSYSDIR=\"${sysconfdir}\" ${CPPFLAGS} ${CFLAGS} $<
|
||||||
|
|
||||||
|
OBJ = \
|
||||||
|
main.${O} screen.${O} brac.${O} ch.${O} charset.${O} cmdbuf.${O} \
|
||||||
|
command.${O} cvt.${O} decode.${O} edit.${O} filename.${O} forwback.${O} \
|
||||||
|
help.${O} ifile.${O} input.${O} jump.${O} line.${O} linenum.${O} \
|
||||||
|
lsystem.${O} mark.${O} optfunc.${O} option.${O} opttbl.${O} os.${O} \
|
||||||
|
output.${O} pattern.${O} position.${O} prompt.${O} search.${O} signal.${O} \
|
||||||
|
tags.${O} ttyin.${O} version.${O} @REGEX_O@
|
||||||
|
|
||||||
|
all: less$(EXEEXT) lesskey$(EXEEXT) lessecho$(EXEEXT)
|
||||||
|
|
||||||
|
less$(EXEEXT): ${OBJ}
|
||||||
|
${CC} ${LDFLAGS} -o $@ ${OBJ} ${LIBS}
|
||||||
|
|
||||||
|
lesskey$(EXEEXT): lesskey.${O} version.${O}
|
||||||
|
${CC} ${LDFLAGS} -o $@ lesskey.${O} version.${O}
|
||||||
|
|
||||||
|
lessecho$(EXEEXT): lessecho.${O} version.${O}
|
||||||
|
${CC} ${LDFLAGS} -o $@ lessecho.${O} version.${O}
|
||||||
|
|
||||||
|
${OBJ}: ${srcdir}/less.h ${srcdir}/funcs.h defines.h
|
||||||
|
|
||||||
|
install: all ${srcdir}/less.nro ${srcdir}/lesskey.nro ${srcdir}/lessecho.nro installdirs
|
||||||
|
${INSTALL_PROGRAM} less$(EXEEXT) ${DESTDIR}${bindir}/${binprefix}less$(EXEEXT)
|
||||||
|
${INSTALL_PROGRAM} lesskey$(EXEEXT) ${DESTDIR}${bindir}/${binprefix}lesskey$(EXEEXT)
|
||||||
|
${INSTALL_PROGRAM} lessecho$(EXEEXT) ${DESTDIR}${bindir}/${binprefix}lessecho$(EXEEXT)
|
||||||
|
${INSTALL_DATA} ${srcdir}/less.nro ${DESTDIR}${mandir}/man${manext}/${manprefix}less.${manext}
|
||||||
|
${INSTALL_DATA} ${srcdir}/lesskey.nro ${DESTDIR}${mandir}/man${manext}/${manprefix}lesskey.${manext}
|
||||||
|
${INSTALL_DATA} ${srcdir}/lessecho.nro ${DESTDIR}${mandir}/man${manext}/${manprefix}lessecho.${manext}
|
||||||
|
|
||||||
|
install-strip:
|
||||||
|
${MAKE} INSTALL_PROGRAM='${INSTALL_PROGRAM} -s' install
|
||||||
|
|
||||||
|
installdirs: mkinstalldirs
|
||||||
|
${srcdir}/mkinstalldirs ${DESTDIR}${bindir} ${DESTDIR}${mandir}/man${manext}
|
||||||
|
|
||||||
|
uninstall:
|
||||||
|
rm -f ${DESTDIR}${bindir}/${binprefix}less$(EXEEXT)
|
||||||
|
rm -f ${DESTDIR}${bindir}/${binprefix}lesskey$(EXEEXT)
|
||||||
|
rm -f ${DESTDIR}${bindir}/${binprefix}lessecho$(EXEEXT)
|
||||||
|
rm -f ${DESTDIR}${mandir}/man${manext}/${manprefix}less.${manext}
|
||||||
|
rm -f ${DESTDIR}${mandir}/man${manext}/${manprefix}lesskey.${manext}
|
||||||
|
rm -f ${DESTDIR}${mandir}/man${manext}/${manprefix}lessecho.${manext}
|
||||||
|
|
||||||
|
info:
|
||||||
|
install-info:
|
||||||
|
dvi:
|
||||||
|
check:
|
||||||
|
installcheck:
|
||||||
|
|
||||||
|
TAGS:
|
||||||
|
cd ${srcdir} && etags *.c *.h
|
||||||
|
|
||||||
|
# config.status might not change defines.h
|
||||||
|
# Don't rerun config.status if we just configured (so there's no stamp-h).
|
||||||
|
defines.h: stamp-h
|
||||||
|
stamp-h: defines.h.in config.status
|
||||||
|
test ! -f stamp-h || CONFIG_FILES= CONFIG_HEADERS=defines.h ./config.status
|
||||||
|
touch stamp-h
|
||||||
|
Makefile: ${srcdir}/Makefile.in config.status
|
||||||
|
CONFIG_FILES=Makefile CONFIG_HEADERS= ./config.status
|
||||||
|
config.status: ${srcdir}/configure
|
||||||
|
./config.status --recheck
|
||||||
|
|
||||||
|
${srcdir}/configure: ${srcdir}/configure.ac
|
||||||
|
cd ${srcdir}; autoheader; autoconf
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *.${O} core less$(EXEEXT) lesskey$(EXEEXT) lessecho$(EXEEXT)
|
||||||
|
|
||||||
|
mostlyclean: clean
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -f Makefile config.status config.log config.cache defines.h stamp-h
|
||||||
|
|
||||||
|
realclean: distclean
|
||||||
|
rm -f TAGS
|
||||||
|
|
43
external/bsd/less/dist/Makefile.o2e
vendored
Normal file
43
external/bsd/less/dist/Makefile.o2e
vendored
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# Makefile for less.
|
||||||
|
# OS/2 version, for emx+gcc compiler
|
||||||
|
|
||||||
|
#### Start of system configuration section. ####
|
||||||
|
|
||||||
|
CC = gcc -Zomf
|
||||||
|
CFLAGS = -I. -O2 -Wall
|
||||||
|
LDFLAGS = -s -Zcrtdll
|
||||||
|
LIBS = -ltermcap
|
||||||
|
O = obj
|
||||||
|
|
||||||
|
#### End of system configuration section. ####
|
||||||
|
|
||||||
|
.SUFFIXES: .c .${O}
|
||||||
|
|
||||||
|
# This rule allows us to supply the necessary -D options
|
||||||
|
# in addition to whatever the user asks for.
|
||||||
|
.c.${O}:
|
||||||
|
${CC} -c ${CPPFLAGS} ${CFLAGS} $<
|
||||||
|
|
||||||
|
OBJ = \
|
||||||
|
main.${O} screen.${O} brac.${O} ch.${O} charset.${O} cmdbuf.${O} \
|
||||||
|
command.${O} cvt.${O} decode.${O} edit.${O} filename.${O} forwback.${O} \
|
||||||
|
help.${O} ifile.${O} input.${O} jump.${O} line.${O} linenum.${O} \
|
||||||
|
lsystem.${O} mark.${O} optfunc.${O} option.${O} opttbl.${O} os.${O} \
|
||||||
|
output.${O} pattern.${O} position.${O} prompt.${O} search.${O} signal.${O} \
|
||||||
|
tags.${O} ttyin.${O} version.${O} regexp.${O}
|
||||||
|
|
||||||
|
all: less.exe lesskey.exe scrsize.exe
|
||||||
|
|
||||||
|
less.exe: ${OBJ}
|
||||||
|
${CC} ${OBJ} -o $@ ${LDFLAGS} ${LIBS}
|
||||||
|
|
||||||
|
lesskey.exe: lesskey.${O} version.${O}
|
||||||
|
${CC} lesskey.${O} version.${O} -o $@ ${LDFLAGS}
|
||||||
|
|
||||||
|
scrsize.exe: scrsize.c
|
||||||
|
${CC} ${CFLAGS} -D__ST_MT_ERRNO__ -s -Zmtd -lX11 $<
|
||||||
|
|
||||||
|
${OBJ}: defines.h less.h
|
||||||
|
|
||||||
|
defines.h: defines.o2
|
||||||
|
copy defines.o2 defines.h
|
47
external/bsd/less/dist/Makefile.o9c
vendored
Normal file
47
external/bsd/less/dist/Makefile.o9c
vendored
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
# Makefile for less.
|
||||||
|
# OS-9 version for Microware C 3.2.
|
||||||
|
|
||||||
|
#### Start of system configuration section. ####
|
||||||
|
|
||||||
|
CC = cc
|
||||||
|
CPPFLAGS = -D_OSK_MWC32 -DDEBUG=0 -DSTRCSPN
|
||||||
|
CFLAGS = -k=0 -v=.
|
||||||
|
CFLAGS_COMPILE_ONLY = -r
|
||||||
|
LDFLAGS = -igm=8
|
||||||
|
LIBS = -l=/dd/lib/termlib.l
|
||||||
|
O = r
|
||||||
|
|
||||||
|
|
||||||
|
#### End of system configuration section. ####
|
||||||
|
|
||||||
|
.SUFFIXES: .c .${O}
|
||||||
|
|
||||||
|
# This rule allows us to supply the necessary -D options
|
||||||
|
# in addition to whatever the user asks for.
|
||||||
|
|
||||||
|
.c.${O}:
|
||||||
|
${CC} ${CFLAGS_COMPILE_ONLY} ${CPPFLAGS} ${CFLAGS} $<
|
||||||
|
|
||||||
|
OBJ = \
|
||||||
|
main.${O} screen.${O} brac.${O} ch.${O} charset.${O} cmdbuf.${O} \
|
||||||
|
command.${O} cvt.${O} decode.${O} edit.${O} filename.${O} forwback.${O} \
|
||||||
|
help.${O} ifile.${O} input.${O} jump.${O} line.${O} linenum.${O} \
|
||||||
|
lsystem.${O} mark.${O} optfunc.${O} option.${O} opttbl.${O} os.${O} \
|
||||||
|
output.${O} pattern.${O} position.${O} prompt.${O} search.${O} signal.${O} \
|
||||||
|
tags.${O} ttyin.${O} version.${O} regexp.${O}
|
||||||
|
|
||||||
|
all: less lessecho lesskey
|
||||||
|
|
||||||
|
less: ${OBJ}
|
||||||
|
${CC} ${OBJ} -f=$@ ${LDFLAGS} ${LIBS}
|
||||||
|
|
||||||
|
lesskey: lesskey.${O} version.${O}
|
||||||
|
${CC} lesskey.${O} version.${O} -f=$@ ${LDFLAGS}
|
||||||
|
|
||||||
|
lessecho: lessecho.${O} version.${O}
|
||||||
|
${CC} lessecho.${O} version.${O} -f=$@ ${LDFLAGS}
|
||||||
|
|
||||||
|
${OBJ}: defines.h less.h
|
||||||
|
|
||||||
|
defines.h: defines.o9
|
||||||
|
copy defines.o9 defines.h -rf
|
43
external/bsd/less/dist/Makefile.o9u
vendored
Normal file
43
external/bsd/less/dist/Makefile.o9u
vendored
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# Makefile for less.
|
||||||
|
# OS-9 version for Ultra C.
|
||||||
|
|
||||||
|
#### Start of system configuration section. ####
|
||||||
|
|
||||||
|
CC = cc
|
||||||
|
CPPFLAGS =
|
||||||
|
CFLAGS = -v=.
|
||||||
|
CFLAGS_COMPILE_ONLY = -eas
|
||||||
|
LDFLAGS = -olM=24k
|
||||||
|
LIBS = -ltermlib.l -lsys_clib.l -lunix.l
|
||||||
|
O = r
|
||||||
|
|
||||||
|
|
||||||
|
#### End of system configuration section. ####
|
||||||
|
|
||||||
|
.SUFFIXES: .c .${O}
|
||||||
|
|
||||||
|
# This rule allows us to supply the necessary -D options
|
||||||
|
# in addition to whatever the user asks for.
|
||||||
|
.c.${O}:
|
||||||
|
${CC} ${CFLAGS_COMPILE_ONLY} ${CPPFLAGS} ${CFLAGS} $<
|
||||||
|
|
||||||
|
OBJ = \
|
||||||
|
main.${O} screen.${O} brac.${O} ch.${O} charset.${O} cmdbuf.${O} \
|
||||||
|
command.${O} cvt.${O} decode.${O} edit.${O} filename.${O} forwback.${O} \
|
||||||
|
help.${O} ifile.${O} input.${O} jump.${O} line.${O} linenum.${O} \
|
||||||
|
lsystem.${O} mark.${O} optfunc.${O} option.${O} opttbl.${O} os.${O} \
|
||||||
|
output.${O} pattern.${O} position.${O} prompt.${O} search.${O} signal.${O} \
|
||||||
|
tags.${O} ttyin.${O} version.${O} regexp.${O}
|
||||||
|
|
||||||
|
all: less lesskey
|
||||||
|
|
||||||
|
less: ${OBJ}
|
||||||
|
${CC} ${OBJ} -f=$@ ${LDFLAGS} ${LIBS}
|
||||||
|
|
||||||
|
lesskey: lesskey.${O} version.${O}
|
||||||
|
${CC} lesskey.${O} version.${O} -f=$@ ${LDFLAGS}
|
||||||
|
|
||||||
|
${OBJ}: defines.h less.h
|
||||||
|
|
||||||
|
defines.h: defines.o9
|
||||||
|
copy defines.o9 defines.h -rf
|
71
external/bsd/less/dist/Makefile.wnb
vendored
Normal file
71
external/bsd/less/dist/Makefile.wnb
vendored
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
# Makefile for less.
|
||||||
|
# Windows version
|
||||||
|
# Bolarnd C++ 5.5.1 free command line tools
|
||||||
|
|
||||||
|
#### Start of system configuration section. ####
|
||||||
|
#
|
||||||
|
# Borland's make knows its own location in the
|
||||||
|
# filesystem.
|
||||||
|
#
|
||||||
|
|
||||||
|
CC = bcc32
|
||||||
|
LIBDIR = $(MAKEDIR)\..\lib
|
||||||
|
|
||||||
|
CFLAGS = -O2 -w-pro -TWC -P-c -v- -d -f- -ff- -vi
|
||||||
|
LDFLAGS = -Tpe -v- -ap -c -x -V4.0 -GF:AGGRESSIVE
|
||||||
|
LD = ilink32
|
||||||
|
LIBS = ${LIBDIR}\import32.lib ${LIBDIR}\cw32.lib
|
||||||
|
|
||||||
|
#### End of system configuration section. ####
|
||||||
|
|
||||||
|
#
|
||||||
|
# This rule allows us to supply the necessary -D options
|
||||||
|
# in addition to whatever the user asks for.
|
||||||
|
#
|
||||||
|
.c.obj:
|
||||||
|
${CC} -c -I. ${CPPFLAGS} ${CFLAGS} $<
|
||||||
|
|
||||||
|
OBJ = \
|
||||||
|
main.obj screen.obj brac.obj ch.obj charset.obj cmdbuf.obj \
|
||||||
|
command.obj cvt.obj decode.obj edit.obj filename.obj forwback.obj \
|
||||||
|
help.obj ifile.obj input.obj jump.obj line.obj linenum.obj \
|
||||||
|
lsystem.obj mark.obj optfunc.obj option.obj opttbl.obj os.obj \
|
||||||
|
output.obj pattern.obj position.obj prompt.obj search.obj signal.obj \
|
||||||
|
tags.obj ttyin.obj version.obj regexp.obj
|
||||||
|
|
||||||
|
all: less lesskey lessecho
|
||||||
|
|
||||||
|
#
|
||||||
|
# This is really horrible, but the command line is too long for
|
||||||
|
# MS-DOS if we try to link ${OBJ}.
|
||||||
|
#
|
||||||
|
less: ${OBJ}
|
||||||
|
${LD} ${LDFLAGS} ${LIBDIR}\c0x32.obj $**, $@,,${LIBS}
|
||||||
|
|
||||||
|
lesskey: lesskey.obj version.obj
|
||||||
|
${LD} ${LDFLAGS} ${LIBDIR}\c0x32.obj $**, $@,,${LIBS}
|
||||||
|
|
||||||
|
lessecho: lessecho.obj version.obj
|
||||||
|
${LD} ${LDFLAGS} ${LIBDIR}\c0x32.obj $**, $@,,${LIBS}
|
||||||
|
|
||||||
|
defines.h: defines.wn
|
||||||
|
-del defines.h
|
||||||
|
-copy defines.wn defines.h
|
||||||
|
|
||||||
|
${OBJ}: less.h defines.h funcs.h cmd.h
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-del *.obj
|
||||||
|
-del *.il?
|
||||||
|
-del *.tds
|
||||||
|
-del defines.h
|
||||||
|
|
||||||
|
spotless: clean
|
||||||
|
-del less.exe
|
||||||
|
-del lesskey.exe
|
||||||
|
-del lessecho.exe
|
||||||
|
|
||||||
|
realclean: spotless
|
||||||
|
|
||||||
|
distclean: spotless
|
||||||
|
|
56
external/bsd/less/dist/Makefile.wnm
vendored
Normal file
56
external/bsd/less/dist/Makefile.wnm
vendored
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
# Makefile for less.
|
||||||
|
# Windows 32 Visual C++ version
|
||||||
|
|
||||||
|
#### Start of system configuration section. ####
|
||||||
|
|
||||||
|
CC = cl
|
||||||
|
|
||||||
|
# Normal flags
|
||||||
|
CFLAGS = /nologo /ML /W3 /GX /O2 /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /c
|
||||||
|
LDFLAGS = /nologo /subsystem:console /incremental:no /machine:I386
|
||||||
|
|
||||||
|
# Debugging flags
|
||||||
|
#CFLAGS = /nologo /MDd /W3 /GX /Od /Gm /Zi /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /c
|
||||||
|
#LDFLAGS = /nologo /subsystem:console /incremental:yes /debug /machine:I386
|
||||||
|
|
||||||
|
LD = link
|
||||||
|
LIBS = user32.lib
|
||||||
|
|
||||||
|
#### End of system configuration section. ####
|
||||||
|
|
||||||
|
# This rule allows us to supply the necessary -D options
|
||||||
|
# in addition to whatever the user asks for.
|
||||||
|
.c.obj:
|
||||||
|
$(CC) $(CFLAGS) $<
|
||||||
|
|
||||||
|
OBJ = \
|
||||||
|
main.obj screen.obj brac.obj ch.obj charset.obj cmdbuf.obj \
|
||||||
|
command.obj cvt.obj decode.obj edit.obj filename.obj forwback.obj \
|
||||||
|
help.obj ifile.obj input.obj jump.obj line.obj linenum.obj \
|
||||||
|
lsystem.obj mark.obj optfunc.obj option.obj opttbl.obj os.obj \
|
||||||
|
output.obj pattern.obj position.obj prompt.obj search.obj signal.obj \
|
||||||
|
tags.obj ttyin.obj version.obj regexp.obj
|
||||||
|
|
||||||
|
all: less.exe lesskey.exe
|
||||||
|
|
||||||
|
# This is really horrible, but the command line is too long for
|
||||||
|
# MS-DOS if we try to link ${OBJ}.
|
||||||
|
less.exe: $(OBJ)
|
||||||
|
-del lesskey.obj
|
||||||
|
$(LD) $(LDFLAGS) *.obj $(LIBS) /out:$@
|
||||||
|
|
||||||
|
lesskey.exe: lesskey.obj version.obj
|
||||||
|
$(LD) $(LDFLAGS) lesskey.obj version.obj $(LIBS) /out:$@
|
||||||
|
|
||||||
|
defines.h: defines.wn
|
||||||
|
-del defines.h
|
||||||
|
-copy defines.wn defines.h
|
||||||
|
|
||||||
|
$(OBJ): less.h defines.h funcs.h cmd.h
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-del *.obj
|
||||||
|
-del less.exe
|
||||||
|
-del lesskey.exe
|
||||||
|
|
||||||
|
|
|
@ -7,10 +7,191 @@
|
||||||
http://www.greenwoodsoftware.com/less
|
http://www.greenwoodsoftware.com/less
|
||||||
You can also download the latest version of less from there.
|
You can also download the latest version of less from there.
|
||||||
|
|
||||||
To report bugs, suggestions or comments, send email to bug-less@gnu.org.
|
To report bugs, suggestions or comments, send email to
|
||||||
|
bug-less@gnu.org or markn@greenwoodsoftware.com.
|
||||||
|
|
||||||
======================================================================
|
======================================================================
|
||||||
|
|
||||||
|
Major changes between "less" versions 443 and 444
|
||||||
|
|
||||||
|
* Fix bug in unget handling that can cause strange effects on the
|
||||||
|
command line.
|
||||||
|
|
||||||
|
* Remove vestiges of obsolete -l option that can cause a crash.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
|
||||||
|
Major changes between "less" versions 436 and 443
|
||||||
|
|
||||||
|
* Change search behavior such that when a search is given an explicit
|
||||||
|
pattern, the entire displayed screen is included in the search and
|
||||||
|
not just the portion after the target line.
|
||||||
|
|
||||||
|
* Add -A option to change search behavior to the old way: only
|
||||||
|
the portion of the screen after the target line is searched.
|
||||||
|
|
||||||
|
* Add %F formatting to prompt strings, replaced by the last component
|
||||||
|
of the input file.
|
||||||
|
|
||||||
|
* Control-G while editing a command exits the command.
|
||||||
|
|
||||||
|
* Less now exits with status 2 if control-C is pressed and -K is in effect.
|
||||||
|
|
||||||
|
* Fix "ungetc overflow" when passing long commands via the -p option.
|
||||||
|
|
||||||
|
* Fix bug in using line filtering via the & command
|
||||||
|
in combination with -i and -I.
|
||||||
|
|
||||||
|
* Fix bug in handling negative arguments to the -j option.
|
||||||
|
|
||||||
|
* Fix bug in handling %t in prompt strings.
|
||||||
|
|
||||||
|
* Improve handling of long option names.
|
||||||
|
|
||||||
|
* Improve percentage calculation for very large files.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
|
||||||
|
Major changes between "less" versions 429 and 436
|
||||||
|
|
||||||
|
* Don't pass "-" to non-pipe LESSOPEN unless it starts with "-".
|
||||||
|
|
||||||
|
* Allow a fraction as the argument to the -# (--shift) option.
|
||||||
|
|
||||||
|
* Fix highlight bug when underlined/overstruck text matches at end of line.
|
||||||
|
|
||||||
|
* Fix non-regex searches with ctrl-R.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
|
||||||
|
Major changes between "less" versions 424 and 429
|
||||||
|
|
||||||
|
* LESSOPEN pipe will now be used on standard input, if the LESSOPEN
|
||||||
|
environment variable begins with "|-".
|
||||||
|
|
||||||
|
* The -D option with one number now means use the normal background color.
|
||||||
|
|
||||||
|
* Don't change permissions on history file if it is not a regular file.
|
||||||
|
|
||||||
|
* Fix non-ANSI-compliant code that caused problems with some compilers.
|
||||||
|
|
||||||
|
* Fix binary file detection in UTF-8 mode.
|
||||||
|
|
||||||
|
* Fix display problems with long lines on "ignaw" terminals.
|
||||||
|
|
||||||
|
* Fix problem interrupting the line number calculation for initial prompt.
|
||||||
|
|
||||||
|
* Fix SGR emulation when dealing with multiple attributes (eg. bold+underline).
|
||||||
|
|
||||||
|
* Fix highlight bug when searching for underlined/overstruck text.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
|
||||||
|
Major changes between "less" versions 418 and 424
|
||||||
|
|
||||||
|
* New "&" command allows filtering of lines based on a pattern.
|
||||||
|
|
||||||
|
* Status column now displays a search match, even if the matched
|
||||||
|
string is scrolled off screen because -S is in effect.
|
||||||
|
|
||||||
|
* Improve behavior of -F option.
|
||||||
|
|
||||||
|
* Allow CSI character (0x9B) to work in UTF-8 mode.
|
||||||
|
|
||||||
|
* Output carriage return at startup in case terminal doesn't default
|
||||||
|
to column 1.
|
||||||
|
|
||||||
|
* Fix bug in '' (quote, quote) command after G command.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
|
||||||
|
Major changes between "less" versions 416 and 418
|
||||||
|
|
||||||
|
* Color escape sequences are now supported in WIN32 build.
|
||||||
|
|
||||||
|
* Makefile now uses EXEEXT feature of autoconf.
|
||||||
|
|
||||||
|
* Fix search bug when using -R and text contains ANSI color escape sequences.
|
||||||
|
|
||||||
|
* Fix crash when using -r with UTF-8 text containing 0x9B bytes.
|
||||||
|
|
||||||
|
* Fix display bug when using ' command to move less than one page forward.
|
||||||
|
|
||||||
|
* Update GPL to version 3.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
|
||||||
|
Major changes between "less" versions 409 and 416
|
||||||
|
|
||||||
|
* New --follow-name option makes F command follow the name of a file
|
||||||
|
rather than the file descriptor if an open file is renamed.
|
||||||
|
|
||||||
|
* Make searching with -i/-I work correctly with non-ASCII text.
|
||||||
|
|
||||||
|
* Fix DJGPP build.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
|
||||||
|
Major changes between "less" versions 406 and 409
|
||||||
|
|
||||||
|
* Support CSI escape sequences, like SGR escape sequences.
|
||||||
|
|
||||||
|
* Fix bug which caused screen to fail to repaint when window is resized.
|
||||||
|
|
||||||
|
* Fix bug in using -i and -I flags with non-ASCII text.
|
||||||
|
|
||||||
|
* Fix configure bug on systems which don't support langinfo.h.
|
||||||
|
|
||||||
|
* Fix crash when searching text containing certain invalid UTF-8 sequences.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
|
||||||
|
Major changes between "less" versions 394 and 406
|
||||||
|
|
||||||
|
* Allow decimal point in number for % (percent) command.
|
||||||
|
|
||||||
|
* Allow decimal point in number for -j option (fraction of screen height).
|
||||||
|
|
||||||
|
* Make n command fetch previous pattern from history file on first search.
|
||||||
|
|
||||||
|
* Don't rewrite history file if it has not changed.
|
||||||
|
|
||||||
|
* Don't move to bottom of screen on first page.
|
||||||
|
|
||||||
|
* Don't output extraneous newlines, so copy & pasting lines from the
|
||||||
|
output works better.
|
||||||
|
|
||||||
|
* The -c option has been made identical with the -C option.
|
||||||
|
|
||||||
|
* Allow "/dev/null" as synomym for "-" in LESSHISTFILE to indicate
|
||||||
|
that no history file should be used.
|
||||||
|
|
||||||
|
* Search can now find text which follows a null byte, if the PCRE
|
||||||
|
library is used, or if no-regex searching (ctrl-R) is used.
|
||||||
|
|
||||||
|
* Better compatibility with POSIX more specification.
|
||||||
|
|
||||||
|
* Make -f work for directories.
|
||||||
|
|
||||||
|
* Make "t" cmd traverse tags in the correct order.
|
||||||
|
|
||||||
|
* Allow a few binary characters in the input file before warning
|
||||||
|
that the file is binary.
|
||||||
|
|
||||||
|
* Don't warn that file is binary if it merely contains ANSI color sequences
|
||||||
|
and -R is in effect.
|
||||||
|
|
||||||
|
* Update Unicode character tables.
|
||||||
|
|
||||||
|
* Support DESTDIR in Makefile.
|
||||||
|
|
||||||
|
* Fix bug when filename contains certain shell metacharacters such as "$".
|
||||||
|
|
||||||
|
* Fix bug when resizing the window while waiting for input from a pipe.
|
||||||
|
|
||||||
|
* Fix configure bugs.
|
||||||
|
|
||||||
|
======================================================================
|
||||||
|
|
||||||
Major changes between "less" versions 382 and 394
|
Major changes between "less" versions 382 and 394
|
||||||
|
|
||||||
|
@ -632,3 +813,8 @@
|
||||||
* Lesskey files may now include characters after the action as
|
* Lesskey files may now include characters after the action as
|
||||||
extra input to be parsed after the action; for example:
|
extra input to be parsed after the action; for example:
|
||||||
"toggle-option X" to toggle a specific option X.
|
"toggle-option X" to toggle a specific option X.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,26 +1,20 @@
|
||||||
|
|
||||||
Less, version 394
|
Less, version 444
|
||||||
|
|
||||||
This is the distribution of less, version 394, released 03 Dec 2005.
|
This is the distribution of less, version 444, released 09 Jun 2011.
|
||||||
This program is part of the GNU project (http://www.gnu.org).
|
This program is part of the GNU project (http://www.gnu.org).
|
||||||
|
|
||||||
This program is free software. You may redistribute it and/or
|
This program is free software. You may redistribute it and/or
|
||||||
modify it under the terms of either:
|
modify it under the terms of either:
|
||||||
|
|
||||||
1. The GNU General Public License, as published by the Free
|
1. The GNU General Public License, as published by the Free
|
||||||
Software Foundation; either version 2, or (at your option) any
|
Software Foundation; either version 3, or (at your option) any
|
||||||
later version. A copy of this license is in the file COPYING.
|
later version. A copy of this license is in the file COPYING.
|
||||||
or
|
or
|
||||||
2. The Less License, in the file LICENSE.
|
2. The Less License, in the file LICENSE.
|
||||||
|
|
||||||
Please report any problems to bug-less@gnu.org or markn@greenwoodsoftware.com.
|
Please report any problems to bug-less@gnu.org or markn@greenwoodsoftware.com.
|
||||||
See http://www.greenwoodsoftware.com/less for the latest info.
|
See http://www.greenwoodsoftware.com/less for the latest info.
|
||||||
You may also contact the author at:
|
|
||||||
Mark Nudelman
|
|
||||||
Greenwood Software
|
|
||||||
PO Box 2402
|
|
||||||
El Granada, CA 94018
|
|
||||||
USA
|
|
||||||
|
|
||||||
=========================================================================
|
=========================================================================
|
||||||
|
|
||||||
|
@ -46,6 +40,7 @@ INSTALLATION (Unix systems only):
|
||||||
--with-editor=program
|
--with-editor=program
|
||||||
Specifies the default editor program used by the "v" command.
|
Specifies the default editor program used by the "v" command.
|
||||||
The default is "vi".
|
The default is "vi".
|
||||||
|
|
||||||
--with-regex=lib
|
--with-regex=lib
|
||||||
Specifies the regular expression library used by less for pattern
|
Specifies the regular expression library used by less for pattern
|
||||||
matching. The default is "auto", which means the configure program
|
matching. The default is "auto", which means the configure program
|
||||||
|
@ -62,6 +57,7 @@ INSTALLATION (Unix systems only):
|
||||||
to prevent users from viewing other files, accessing shell
|
to prevent users from viewing other files, accessing shell
|
||||||
commands, etc.
|
commands, etc.
|
||||||
|
|
||||||
|
|
||||||
3. It is a good idea to look over the generated Makefile and defines.h
|
3. It is a good idea to look over the generated Makefile and defines.h
|
||||||
and make sure they look ok. If you know of any peculiarities of
|
and make sure they look ok. If you know of any peculiarities of
|
||||||
your system that configure might not have detected, you may fix the
|
your system that configure might not have detected, you may fix the
|
||||||
|
@ -97,6 +93,10 @@ complaints, etc., you may mail to the author at markn@greenwoodsoftware.com.
|
||||||
Note to hackers: comments noting possible improvements are enclosed
|
Note to hackers: comments noting possible improvements are enclosed
|
||||||
in double curly brackets {{ like this }}.
|
in double curly brackets {{ like this }}.
|
||||||
|
|
||||||
|
(Note that the above note was originally written at a time when
|
||||||
|
"hackers" most commonly meant "enthusiastic and dedicated computer
|
||||||
|
programmers", not "persons who attempt to circumvent computer security".)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
=======================================================================
|
=======================================================================
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: brac.c,v 1.6 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: brac.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: ch.c,v 1.8 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: ch.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -23,6 +23,12 @@
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_STAT_INO
|
||||||
|
#include <sys/stat.h>
|
||||||
|
extern dev_t curr_dev;
|
||||||
|
extern ino_t curr_ino;
|
||||||
|
#endif
|
||||||
|
|
||||||
typedef POSITION BLOCKNUM;
|
typedef POSITION BLOCKNUM;
|
||||||
|
|
||||||
public int ignore_eoi;
|
public int ignore_eoi;
|
||||||
|
@ -33,20 +39,19 @@ public int ignore_eoi;
|
||||||
* in order from most- to least-recently used.
|
* in order from most- to least-recently used.
|
||||||
* The circular list is anchored by the file state "thisfile".
|
* The circular list is anchored by the file state "thisfile".
|
||||||
*/
|
*/
|
||||||
|
struct bufnode {
|
||||||
|
struct bufnode *next, *prev;
|
||||||
|
struct bufnode *hnext, *hprev;
|
||||||
|
};
|
||||||
|
|
||||||
#define LBUFSIZE 8192
|
#define LBUFSIZE 8192
|
||||||
struct buf {
|
struct buf {
|
||||||
struct buf *next, *prev;
|
struct bufnode node;
|
||||||
struct buf *hnext, *hprev;
|
|
||||||
BLOCKNUM block;
|
BLOCKNUM block;
|
||||||
unsigned int datasize;
|
unsigned int datasize;
|
||||||
unsigned char data[LBUFSIZE];
|
unsigned char data[LBUFSIZE];
|
||||||
};
|
};
|
||||||
|
#define bufnode_buf(bn) ((struct buf *) bn)
|
||||||
struct buflist {
|
|
||||||
/* -- Following members must match struct buf */
|
|
||||||
struct buf *buf_next, *buf_prev;
|
|
||||||
struct buf *buf_hnext, *buf_hprev;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The file state is maintained in a filestate structure.
|
* The file state is maintained in a filestate structure.
|
||||||
|
@ -54,8 +59,8 @@ struct buflist {
|
||||||
*/
|
*/
|
||||||
#define BUFHASH_SIZE 64
|
#define BUFHASH_SIZE 64
|
||||||
struct filestate {
|
struct filestate {
|
||||||
struct buf *buf_next, *buf_prev;
|
struct bufnode buflist;
|
||||||
struct buflist hashtbl[BUFHASH_SIZE];
|
struct bufnode hashtbl[BUFHASH_SIZE];
|
||||||
int file;
|
int file;
|
||||||
int flags;
|
int flags;
|
||||||
POSITION fpos;
|
POSITION fpos;
|
||||||
|
@ -65,8 +70,8 @@ struct filestate {
|
||||||
POSITION fsize;
|
POSITION fsize;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ch_bufhead thisfile->buf_next
|
#define ch_bufhead thisfile->buflist.next
|
||||||
#define ch_buftail thisfile->buf_prev
|
#define ch_buftail thisfile->buflist.prev
|
||||||
#define ch_nbufs thisfile->nbufs
|
#define ch_nbufs thisfile->nbufs
|
||||||
#define ch_block thisfile->block
|
#define ch_block thisfile->block
|
||||||
#define ch_offset thisfile->offset
|
#define ch_offset thisfile->offset
|
||||||
|
@ -75,23 +80,48 @@ struct filestate {
|
||||||
#define ch_flags thisfile->flags
|
#define ch_flags thisfile->flags
|
||||||
#define ch_file thisfile->file
|
#define ch_file thisfile->file
|
||||||
|
|
||||||
#define END_OF_CHAIN ((struct buf *)&thisfile->buf_next)
|
#define END_OF_CHAIN (&thisfile->buflist)
|
||||||
#define END_OF_HCHAIN(h) ((struct buf *)&thisfile->hashtbl[h])
|
#define END_OF_HCHAIN(h) (&thisfile->hashtbl[h])
|
||||||
#define BUFHASH(blk) ((blk) & (BUFHASH_SIZE-1))
|
#define BUFHASH(blk) ((blk) & (BUFHASH_SIZE-1))
|
||||||
|
|
||||||
#define FOR_BUFS_IN_CHAIN(h,bp) \
|
/*
|
||||||
for (bp = thisfile->hashtbl[h].buf_hnext; \
|
* Macros to manipulate the list of buffers in thisfile->buflist.
|
||||||
bp != END_OF_HCHAIN(h); bp = bp->hnext)
|
*/
|
||||||
|
#define FOR_BUFS(bn) \
|
||||||
|
for (bn = ch_bufhead; bn != END_OF_CHAIN; bn = bn->next)
|
||||||
|
|
||||||
#define HASH_RM(bp) \
|
#define BUF_RM(bn) \
|
||||||
(bp)->hnext->hprev = (bp)->hprev; \
|
(bn)->next->prev = (bn)->prev; \
|
||||||
(bp)->hprev->hnext = (bp)->hnext;
|
(bn)->prev->next = (bn)->next;
|
||||||
|
|
||||||
#define HASH_INS(bp,h) \
|
#define BUF_INS_HEAD(bn) \
|
||||||
(bp)->hnext = thisfile->hashtbl[h].buf_hnext; \
|
(bn)->next = ch_bufhead; \
|
||||||
(bp)->hprev = END_OF_HCHAIN(h); \
|
(bn)->prev = END_OF_CHAIN; \
|
||||||
thisfile->hashtbl[h].buf_hnext->hprev = (bp); \
|
ch_bufhead->prev = (bn); \
|
||||||
thisfile->hashtbl[h].buf_hnext = (bp);
|
ch_bufhead = (bn);
|
||||||
|
|
||||||
|
#define BUF_INS_TAIL(bn) \
|
||||||
|
(bn)->next = END_OF_CHAIN; \
|
||||||
|
(bn)->prev = ch_buftail; \
|
||||||
|
ch_buftail->next = (bn); \
|
||||||
|
ch_buftail = (bn);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Macros to manipulate the list of buffers in thisfile->hashtbl[n].
|
||||||
|
*/
|
||||||
|
#define FOR_BUFS_IN_CHAIN(h,bn) \
|
||||||
|
for (bn = thisfile->hashtbl[h].hnext; \
|
||||||
|
bn != END_OF_HCHAIN(h); bn = bn->hnext)
|
||||||
|
|
||||||
|
#define BUF_HASH_RM(bn) \
|
||||||
|
(bn)->hnext->hprev = (bn)->hprev; \
|
||||||
|
(bn)->hprev->hnext = (bn)->hnext;
|
||||||
|
|
||||||
|
#define BUF_HASH_INS(bn,h) \
|
||||||
|
(bn)->hnext = thisfile->hashtbl[h].hnext; \
|
||||||
|
(bn)->hprev = END_OF_HCHAIN(h); \
|
||||||
|
thisfile->hashtbl[h].hnext->hprev = (bn); \
|
||||||
|
thisfile->hashtbl[h].hnext = (bn);
|
||||||
|
|
||||||
static struct filestate *thisfile;
|
static struct filestate *thisfile;
|
||||||
static int ch_ungotchar = -1;
|
static int ch_ungotchar = -1;
|
||||||
|
@ -100,6 +130,8 @@ static int maxbufs = -1;
|
||||||
extern int autobuf;
|
extern int autobuf;
|
||||||
extern int sigs;
|
extern int sigs;
|
||||||
extern int secure;
|
extern int secure;
|
||||||
|
extern int screen_trashed;
|
||||||
|
extern int follow_mode;
|
||||||
extern constant char helpdata[];
|
extern constant char helpdata[];
|
||||||
extern constant int size_helpdata;
|
extern constant int size_helpdata;
|
||||||
extern IFILE curr_ifile;
|
extern IFILE curr_ifile;
|
||||||
|
@ -115,69 +147,84 @@ static void ch_delbufs __P((void));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get the character pointed to by the read pointer.
|
* Get the character pointed to by the read pointer.
|
||||||
* ch_get() is a macro which is more efficient to call
|
|
||||||
* than fch_get (the function), in the usual case
|
|
||||||
* that the block desired is at the head of the chain.
|
|
||||||
*/
|
*/
|
||||||
#define ch_get() ((ch_block == ch_bufhead->block && \
|
|
||||||
ch_offset < ch_bufhead->datasize) ? \
|
|
||||||
ch_bufhead->data[ch_offset] : fch_get())
|
|
||||||
int
|
int
|
||||||
fch_get()
|
ch_get()
|
||||||
{
|
{
|
||||||
register struct buf *bp;
|
register struct buf *bp;
|
||||||
|
register struct bufnode *bn;
|
||||||
register int n;
|
register int n;
|
||||||
register int slept;
|
register int slept;
|
||||||
register int h;
|
register int h;
|
||||||
POSITION pos;
|
POSITION pos;
|
||||||
POSITION len;
|
POSITION len;
|
||||||
|
|
||||||
|
if (thisfile == NULL)
|
||||||
|
return (EOI);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Quick check for the common case where
|
||||||
|
* the desired char is in the head buffer.
|
||||||
|
*/
|
||||||
|
if (ch_bufhead != END_OF_CHAIN)
|
||||||
|
{
|
||||||
|
bp = bufnode_buf(ch_bufhead);
|
||||||
|
if (ch_block == bp->block && ch_offset < bp->datasize)
|
||||||
|
return bp->data[ch_offset];
|
||||||
|
}
|
||||||
|
|
||||||
slept = FALSE;
|
slept = FALSE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Look for a buffer holding the desired block.
|
* Look for a buffer holding the desired block.
|
||||||
*/
|
*/
|
||||||
h = BUFHASH(ch_block);
|
h = BUFHASH(ch_block);
|
||||||
FOR_BUFS_IN_CHAIN(h, bp)
|
FOR_BUFS_IN_CHAIN(h, bn)
|
||||||
{
|
{
|
||||||
|
bp = bufnode_buf(bn);
|
||||||
if (bp->block == ch_block)
|
if (bp->block == ch_block)
|
||||||
{
|
{
|
||||||
if (ch_offset >= bp->datasize)
|
if (ch_offset >= bp->datasize)
|
||||||
/*
|
/*
|
||||||
* Need more data in this buffer.
|
* Need more data in this buffer.
|
||||||
*/
|
*/
|
||||||
goto read_more;
|
break;
|
||||||
goto found;
|
goto found;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
if (bn == END_OF_HCHAIN(h))
|
||||||
* Block is not in a buffer.
|
|
||||||
* Take the least recently used buffer
|
|
||||||
* and read the desired block into it.
|
|
||||||
* If the LRU buffer has data in it,
|
|
||||||
* then maybe allocate a new buffer.
|
|
||||||
*/
|
|
||||||
if (ch_buftail == END_OF_CHAIN || ch_buftail->block != -1)
|
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* There is no empty buffer to use.
|
* Block is not in a buffer.
|
||||||
* Allocate a new buffer if:
|
* Take the least recently used buffer
|
||||||
* 1. We can't seek on this file and -b is not in effect; or
|
* and read the desired block into it.
|
||||||
* 2. We haven't allocated the max buffers for this file yet.
|
* If the LRU buffer has data in it,
|
||||||
|
* then maybe allocate a new buffer.
|
||||||
*/
|
*/
|
||||||
if ((autobuf && !(ch_flags & CH_CANSEEK)) ||
|
if (ch_buftail == END_OF_CHAIN ||
|
||||||
(maxbufs < 0 || ch_nbufs < maxbufs))
|
bufnode_buf(ch_buftail)->block != -1)
|
||||||
if (ch_addbuf())
|
{
|
||||||
/*
|
/*
|
||||||
* Allocation failed: turn off autobuf.
|
* There is no empty buffer to use.
|
||||||
*/
|
* Allocate a new buffer if:
|
||||||
autobuf = OPT_OFF;
|
* 1. We can't seek on this file and -b is not in effect; or
|
||||||
|
* 2. We haven't allocated the max buffers for this file yet.
|
||||||
|
*/
|
||||||
|
if ((autobuf && !(ch_flags & CH_CANSEEK)) ||
|
||||||
|
(maxbufs < 0 || ch_nbufs < maxbufs))
|
||||||
|
if (ch_addbuf())
|
||||||
|
/*
|
||||||
|
* Allocation failed: turn off autobuf.
|
||||||
|
*/
|
||||||
|
autobuf = OPT_OFF;
|
||||||
|
}
|
||||||
|
bn = ch_buftail;
|
||||||
|
bp = bufnode_buf(bn);
|
||||||
|
BUF_HASH_RM(bn); /* Remove from old hash chain. */
|
||||||
|
bp->block = ch_block;
|
||||||
|
bp->datasize = 0;
|
||||||
|
BUF_HASH_INS(bn, h); /* Insert into new hash chain. */
|
||||||
}
|
}
|
||||||
bp = ch_buftail;
|
|
||||||
HASH_RM(bp); /* Remove from old hash chain. */
|
|
||||||
bp->block = ch_block;
|
|
||||||
bp->datasize = 0;
|
|
||||||
HASH_INS(bp, h); /* Insert into new hash chain. */
|
|
||||||
|
|
||||||
read_more:
|
read_more:
|
||||||
pos = (ch_block * LBUFSIZE) + bp->datasize;
|
pos = (ch_block * LBUFSIZE) + bp->datasize;
|
||||||
|
@ -196,7 +243,7 @@ fch_get()
|
||||||
*/
|
*/
|
||||||
if (!(ch_flags & CH_CANSEEK))
|
if (!(ch_flags & CH_CANSEEK))
|
||||||
return ('?');
|
return ('?');
|
||||||
if (lseek(ch_file, (off_t)pos, 0) == BAD_LSEEK)
|
if (lseek(ch_file, (off_t)pos, SEEK_SET) == BAD_LSEEK)
|
||||||
{
|
{
|
||||||
error("seek error", NULL_PARG);
|
error("seek error", NULL_PARG);
|
||||||
clear_eol();
|
clear_eol();
|
||||||
|
@ -277,30 +324,45 @@ fch_get()
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
slept = TRUE;
|
slept = TRUE;
|
||||||
|
|
||||||
|
#if HAVE_STAT_INO
|
||||||
|
if (follow_mode == FOLLOW_NAME)
|
||||||
|
{
|
||||||
|
/* See whether the file's i-number has changed.
|
||||||
|
* If so, force the file to be closed and
|
||||||
|
* reopened. */
|
||||||
|
struct stat st;
|
||||||
|
int r = stat(get_filename(curr_ifile), &st);
|
||||||
|
if (r == 0 && (st.st_ino != curr_ino ||
|
||||||
|
st.st_dev != curr_dev))
|
||||||
|
{
|
||||||
|
/* screen_trashed=2 causes
|
||||||
|
* make_display to reopen the file. */
|
||||||
|
screen_trashed = 2;
|
||||||
|
return (EOI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
if (sigs)
|
if (sigs)
|
||||||
return (EOI);
|
return (EOI);
|
||||||
}
|
}
|
||||||
|
|
||||||
found:
|
found:
|
||||||
if (ch_bufhead != bp)
|
if (ch_bufhead != bn)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Move the buffer to the head of the buffer chain.
|
* Move the buffer to the head of the buffer chain.
|
||||||
* This orders the buffer chain, most- to least-recently used.
|
* This orders the buffer chain, most- to least-recently used.
|
||||||
*/
|
*/
|
||||||
bp->next->prev = bp->prev;
|
BUF_RM(bn);
|
||||||
bp->prev->next = bp->next;
|
BUF_INS_HEAD(bn);
|
||||||
bp->next = ch_bufhead;
|
|
||||||
bp->prev = END_OF_CHAIN;
|
|
||||||
ch_bufhead->prev = bp;
|
|
||||||
ch_bufhead = bp;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Move to head of hash chain too.
|
* Move to head of hash chain too.
|
||||||
*/
|
*/
|
||||||
HASH_RM(bp);
|
BUF_HASH_RM(bn);
|
||||||
HASH_INS(bp, h);
|
BUF_HASH_INS(bn, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ch_offset >= bp->datasize)
|
if (ch_offset >= bp->datasize)
|
||||||
|
@ -360,6 +422,7 @@ end_logfile()
|
||||||
sync_logfile()
|
sync_logfile()
|
||||||
{
|
{
|
||||||
register struct buf *bp;
|
register struct buf *bp;
|
||||||
|
register struct bufnode *bn;
|
||||||
int warned = FALSE;
|
int warned = FALSE;
|
||||||
BLOCKNUM block;
|
BLOCKNUM block;
|
||||||
BLOCKNUM nblocks;
|
BLOCKNUM nblocks;
|
||||||
|
@ -367,24 +430,23 @@ sync_logfile()
|
||||||
nblocks = (ch_fpos + LBUFSIZE - 1) / LBUFSIZE;
|
nblocks = (ch_fpos + LBUFSIZE - 1) / LBUFSIZE;
|
||||||
for (block = 0; block < nblocks; block++)
|
for (block = 0; block < nblocks; block++)
|
||||||
{
|
{
|
||||||
for (bp = ch_bufhead; ; bp = bp->next)
|
int wrote = FALSE;
|
||||||
|
FOR_BUFS(bn)
|
||||||
{
|
{
|
||||||
if (bp == END_OF_CHAIN)
|
bp = bufnode_buf(bn);
|
||||||
{
|
|
||||||
if (!warned)
|
|
||||||
{
|
|
||||||
error("Warning: log file is incomplete",
|
|
||||||
NULL_PARG);
|
|
||||||
warned = TRUE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (bp->block == block)
|
if (bp->block == block)
|
||||||
{
|
{
|
||||||
write(logfile, (char *) bp->data, bp->datasize);
|
write(logfile, (char *) bp->data, bp->datasize);
|
||||||
|
wrote = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!wrote && !warned)
|
||||||
|
{
|
||||||
|
error("Warning: log file is incomplete",
|
||||||
|
NULL_PARG);
|
||||||
|
warned = TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -398,11 +460,13 @@ buffered(block)
|
||||||
BLOCKNUM block;
|
BLOCKNUM block;
|
||||||
{
|
{
|
||||||
register struct buf *bp;
|
register struct buf *bp;
|
||||||
|
register struct bufnode *bn;
|
||||||
register int h;
|
register int h;
|
||||||
|
|
||||||
h = BUFHASH(block);
|
h = BUFHASH(block);
|
||||||
FOR_BUFS_IN_CHAIN(h, bp)
|
FOR_BUFS_IN_CHAIN(h, bn)
|
||||||
{
|
{
|
||||||
|
bp = bufnode_buf(bn);
|
||||||
if (bp->block == block)
|
if (bp->block == block)
|
||||||
return (TRUE);
|
return (TRUE);
|
||||||
}
|
}
|
||||||
|
@ -420,6 +484,9 @@ ch_seek(pos)
|
||||||
BLOCKNUM new_block;
|
BLOCKNUM new_block;
|
||||||
POSITION len;
|
POSITION len;
|
||||||
|
|
||||||
|
if (thisfile == NULL)
|
||||||
|
return (0);
|
||||||
|
|
||||||
len = ch_length();
|
len = ch_length();
|
||||||
if (pos < ch_zero() || (len != NULL_POSITION && pos > len))
|
if (pos < ch_zero() || (len != NULL_POSITION && pos > len))
|
||||||
return (1);
|
return (1);
|
||||||
|
@ -454,6 +521,9 @@ ch_end_seek()
|
||||||
{
|
{
|
||||||
POSITION len;
|
POSITION len;
|
||||||
|
|
||||||
|
if (thisfile == NULL)
|
||||||
|
return (0);
|
||||||
|
|
||||||
if (ch_flags & CH_CANSEEK)
|
if (ch_flags & CH_CANSEEK)
|
||||||
ch_fsize = filesize(ch_file);
|
ch_fsize = filesize(ch_file);
|
||||||
|
|
||||||
|
@ -478,7 +548,8 @@ ch_end_seek()
|
||||||
public int
|
public int
|
||||||
ch_beg_seek()
|
ch_beg_seek()
|
||||||
{
|
{
|
||||||
register struct buf *bp, *firstbp;
|
register struct bufnode *bn;
|
||||||
|
register struct bufnode *firstbn;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try a plain ch_seek first.
|
* Try a plain ch_seek first.
|
||||||
|
@ -490,13 +561,15 @@ ch_beg_seek()
|
||||||
* Can't get to position 0.
|
* Can't get to position 0.
|
||||||
* Look thru the buffers for the one closest to position 0.
|
* Look thru the buffers for the one closest to position 0.
|
||||||
*/
|
*/
|
||||||
firstbp = bp = ch_bufhead;
|
firstbn = ch_bufhead;
|
||||||
if (bp == END_OF_CHAIN)
|
if (firstbn == END_OF_CHAIN)
|
||||||
return (1);
|
return (1);
|
||||||
while ((bp = bp->next) != END_OF_CHAIN)
|
FOR_BUFS(bn)
|
||||||
if (bp->block < firstbp->block)
|
{
|
||||||
firstbp = bp;
|
if (bufnode_buf(bn)->block < bufnode_buf(firstbn)->block)
|
||||||
ch_block = firstbp->block;
|
firstbn = bn;
|
||||||
|
}
|
||||||
|
ch_block = bufnode_buf(firstbn)->block;
|
||||||
ch_offset = 0;
|
ch_offset = 0;
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
@ -507,6 +580,8 @@ ch_beg_seek()
|
||||||
public POSITION
|
public POSITION
|
||||||
ch_length()
|
ch_length()
|
||||||
{
|
{
|
||||||
|
if (thisfile == NULL)
|
||||||
|
return (NULL_POSITION);
|
||||||
if (ignore_eoi)
|
if (ignore_eoi)
|
||||||
return (NULL_POSITION);
|
return (NULL_POSITION);
|
||||||
if (ch_flags & CH_HELPFILE)
|
if (ch_flags & CH_HELPFILE)
|
||||||
|
@ -520,6 +595,8 @@ ch_length()
|
||||||
public POSITION
|
public POSITION
|
||||||
ch_tell()
|
ch_tell()
|
||||||
{
|
{
|
||||||
|
if (thisfile == NULL)
|
||||||
|
return (NULL_POSITION);
|
||||||
return (ch_block * LBUFSIZE) + ch_offset;
|
return (ch_block * LBUFSIZE) + ch_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -531,6 +608,8 @@ ch_forw_get()
|
||||||
{
|
{
|
||||||
register int c;
|
register int c;
|
||||||
|
|
||||||
|
if (thisfile == NULL)
|
||||||
|
return (EOI);
|
||||||
c = ch_get();
|
c = ch_get();
|
||||||
if (c == EOI)
|
if (c == EOI)
|
||||||
return (EOI);
|
return (EOI);
|
||||||
|
@ -550,6 +629,8 @@ ch_forw_get()
|
||||||
public int
|
public int
|
||||||
ch_back_get()
|
ch_back_get()
|
||||||
{
|
{
|
||||||
|
if (thisfile == NULL)
|
||||||
|
return (EOI);
|
||||||
if (ch_offset > 0)
|
if (ch_offset > 0)
|
||||||
ch_offset --;
|
ch_offset --;
|
||||||
else
|
else
|
||||||
|
@ -588,7 +669,10 @@ ch_setbufspace(bufspace)
|
||||||
public void
|
public void
|
||||||
ch_flush()
|
ch_flush()
|
||||||
{
|
{
|
||||||
register struct buf *bp;
|
register struct bufnode *bn;
|
||||||
|
|
||||||
|
if (thisfile == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
if (!(ch_flags & CH_CANSEEK))
|
if (!(ch_flags & CH_CANSEEK))
|
||||||
{
|
{
|
||||||
|
@ -603,8 +687,10 @@ ch_flush()
|
||||||
/*
|
/*
|
||||||
* Initialize all the buffers.
|
* Initialize all the buffers.
|
||||||
*/
|
*/
|
||||||
for (bp = ch_bufhead; bp != END_OF_CHAIN; bp = bp->next)
|
FOR_BUFS(bn)
|
||||||
bp->block = -1;
|
{
|
||||||
|
bufnode_buf(bn)->block = -1;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Figure out the size of the file, if we can.
|
* Figure out the size of the file, if we can.
|
||||||
|
@ -632,7 +718,7 @@ ch_flush()
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (lseek(ch_file, (off_t)0, 0) == BAD_LSEEK)
|
if (lseek(ch_file, (off_t)0, SEEK_SET) == BAD_LSEEK)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Warning only; even if the seek fails for some reason,
|
* Warning only; even if the seek fails for some reason,
|
||||||
|
@ -651,6 +737,7 @@ ch_flush()
|
||||||
ch_addbuf()
|
ch_addbuf()
|
||||||
{
|
{
|
||||||
register struct buf *bp;
|
register struct buf *bp;
|
||||||
|
register struct bufnode *bn;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate and initialize a new buffer and link it
|
* Allocate and initialize a new buffer and link it
|
||||||
|
@ -661,11 +748,10 @@ ch_addbuf()
|
||||||
return (1);
|
return (1);
|
||||||
ch_nbufs++;
|
ch_nbufs++;
|
||||||
bp->block = -1;
|
bp->block = -1;
|
||||||
bp->next = END_OF_CHAIN;
|
bn = &bp->node;
|
||||||
bp->prev = ch_buftail;
|
|
||||||
ch_buftail->next = bp;
|
BUF_INS_TAIL(bn);
|
||||||
ch_buftail = bp;
|
BUF_HASH_INS(bn, 0);
|
||||||
HASH_INS(bp, 0);
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -679,8 +765,8 @@ init_hashtbl()
|
||||||
|
|
||||||
for (h = 0; h < BUFHASH_SIZE; h++)
|
for (h = 0; h < BUFHASH_SIZE; h++)
|
||||||
{
|
{
|
||||||
thisfile->hashtbl[h].buf_hnext = END_OF_HCHAIN(h);
|
thisfile->hashtbl[h].hnext = END_OF_HCHAIN(h);
|
||||||
thisfile->hashtbl[h].buf_hprev = END_OF_HCHAIN(h);
|
thisfile->hashtbl[h].hprev = END_OF_HCHAIN(h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -690,14 +776,13 @@ init_hashtbl()
|
||||||
static void
|
static void
|
||||||
ch_delbufs()
|
ch_delbufs()
|
||||||
{
|
{
|
||||||
register struct buf *bp;
|
register struct bufnode *bn;
|
||||||
|
|
||||||
while (ch_bufhead != END_OF_CHAIN)
|
while (ch_bufhead != END_OF_CHAIN)
|
||||||
{
|
{
|
||||||
bp = ch_bufhead;
|
bn = ch_bufhead;
|
||||||
bp->next->prev = bp->prev;
|
BUF_RM(bn);
|
||||||
bp->prev->next = bp->next;
|
free(bufnode_buf(bn));
|
||||||
free(bp);
|
|
||||||
}
|
}
|
||||||
ch_nbufs = 0;
|
ch_nbufs = 0;
|
||||||
init_hashtbl();
|
init_hashtbl();
|
||||||
|
@ -721,7 +806,7 @@ seekable(f)
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
return (lseek(f, (off_t)1, 0) != BAD_LSEEK);
|
return (lseek(f, (off_t)1, SEEK_SET) != BAD_LSEEK);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -743,7 +828,7 @@ ch_init(f, flags)
|
||||||
*/
|
*/
|
||||||
thisfile = (struct filestate *)
|
thisfile = (struct filestate *)
|
||||||
calloc(1, sizeof(struct filestate));
|
calloc(1, sizeof(struct filestate));
|
||||||
thisfile->buf_next = thisfile->buf_prev = END_OF_CHAIN;
|
thisfile->buflist.next = thisfile->buflist.prev = END_OF_CHAIN;
|
||||||
thisfile->nbufs = 0;
|
thisfile->nbufs = 0;
|
||||||
thisfile->flags = 0;
|
thisfile->flags = 0;
|
||||||
thisfile->fpos = 0;
|
thisfile->fpos = 0;
|
||||||
|
@ -773,6 +858,9 @@ ch_close()
|
||||||
{
|
{
|
||||||
int keepstate = FALSE;
|
int keepstate = FALSE;
|
||||||
|
|
||||||
|
if (thisfile == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
if (ch_flags & (CH_CANSEEK|CH_POPENED|CH_HELPFILE))
|
if (ch_flags & (CH_CANSEEK|CH_POPENED|CH_HELPFILE))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -811,6 +899,8 @@ ch_close()
|
||||||
public int
|
public int
|
||||||
ch_getflags()
|
ch_getflags()
|
||||||
{
|
{
|
||||||
|
if (thisfile == NULL)
|
||||||
|
return (0);
|
||||||
return (ch_flags);
|
return (ch_flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -819,6 +909,7 @@ ch_getflags()
|
||||||
ch_dump(struct filestate *fs)
|
ch_dump(struct filestate *fs)
|
||||||
{
|
{
|
||||||
struct buf *bp;
|
struct buf *bp;
|
||||||
|
struct bufnode *bn;
|
||||||
unsigned char *s;
|
unsigned char *s;
|
||||||
|
|
||||||
if (fs == NULL)
|
if (fs == NULL)
|
||||||
|
@ -830,8 +921,9 @@ ch_dump(struct filestate *fs)
|
||||||
fs->file, fs->flags, fs->fpos,
|
fs->file, fs->flags, fs->fpos,
|
||||||
fs->fsize, fs->block, fs->offset);
|
fs->fsize, fs->block, fs->offset);
|
||||||
printf(" %d bufs:\n", fs->nbufs);
|
printf(" %d bufs:\n", fs->nbufs);
|
||||||
for (bp = fs->buf_next; bp != (struct buf *)fs; bp = bp->next)
|
for (bn = fs->next; bn != &fs->buflist; bn = bn->next)
|
||||||
{
|
{
|
||||||
|
bp = bufnode_buf(bn);
|
||||||
printf("%x: blk %x, size %x \"",
|
printf("%x: blk %x, size %x \"",
|
||||||
bp, bp->block, bp->datasize);
|
bp, bp->block, bp->datasize);
|
||||||
for (s = bp->data; s < bp->data + 30; s++)
|
for (s = bp->data; s < bp->data + 30; s++)
|
1178
external/bsd/less/dist/charset.c
vendored
Normal file
1178
external/bsd/less/dist/charset.c
vendored
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,7 @@
|
||||||
|
/* $NetBSD: charset.h,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2005 Mark Nudelman
|
* Copyright (C) 2005-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
|
@ -1,5 +1,7 @@
|
||||||
|
/* $NetBSD: cmd.h,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -65,6 +67,7 @@
|
||||||
#define A_REMOVE_FILE 52
|
#define A_REMOVE_FILE 52
|
||||||
#define A_NEXT_TAG 53
|
#define A_NEXT_TAG 53
|
||||||
#define A_PREV_TAG 54
|
#define A_PREV_TAG 54
|
||||||
|
#define A_FILTER 55
|
||||||
|
|
||||||
#define A_INVALID 100
|
#define A_INVALID 100
|
||||||
#define A_NOACTION 101
|
#define A_NOACTION 101
|
||||||
|
@ -97,6 +100,7 @@
|
||||||
#define EC_F_COMPLETE 17
|
#define EC_F_COMPLETE 17
|
||||||
#define EC_B_COMPLETE 18
|
#define EC_B_COMPLETE 18
|
||||||
#define EC_LITERAL 19
|
#define EC_LITERAL 19
|
||||||
|
#define EC_ABORT 20
|
||||||
|
|
||||||
#define EC_NOACTION 101
|
#define EC_NOACTION 101
|
||||||
#define EC_UINVALID 102
|
#define EC_UINVALID 102
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: cmdbuf.c,v 1.7 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: cmdbuf.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -22,6 +22,9 @@
|
||||||
#if HAVE_STAT
|
#if HAVE_STAT
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#endif
|
#endif
|
||||||
|
#if HAVE_ERRNO_H
|
||||||
|
#include <errno.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
extern int sc_width;
|
extern int sc_width;
|
||||||
extern int utf_mode;
|
extern int utf_mode;
|
||||||
|
@ -86,22 +89,23 @@ struct mlist
|
||||||
struct mlist *prev;
|
struct mlist *prev;
|
||||||
struct mlist *curr_mp;
|
struct mlist *curr_mp;
|
||||||
char *string;
|
char *string;
|
||||||
|
int modified;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* These are the various command histories that exist.
|
* These are the various command histories that exist.
|
||||||
*/
|
*/
|
||||||
struct mlist mlist_search =
|
struct mlist mlist_search =
|
||||||
{ &mlist_search, &mlist_search, &mlist_search, NULL };
|
{ &mlist_search, &mlist_search, &mlist_search, NULL, 0 };
|
||||||
public void * constant ml_search = (void *) &mlist_search;
|
public void * constant ml_search = (void *) &mlist_search;
|
||||||
|
|
||||||
struct mlist mlist_examine =
|
struct mlist mlist_examine =
|
||||||
{ &mlist_examine, &mlist_examine, &mlist_examine, NULL };
|
{ &mlist_examine, &mlist_examine, &mlist_examine, NULL, 0 };
|
||||||
public void * constant ml_examine = (void *) &mlist_examine;
|
public void * constant ml_examine = (void *) &mlist_examine;
|
||||||
|
|
||||||
#if SHELL_ESCAPE || PIPEC
|
#if SHELL_ESCAPE || PIPEC
|
||||||
struct mlist mlist_shell =
|
struct mlist mlist_shell =
|
||||||
{ &mlist_shell, &mlist_shell, &mlist_shell, NULL };
|
{ &mlist_shell, &mlist_shell, &mlist_shell, NULL, 0 };
|
||||||
public void * constant ml_shell = (void *) &mlist_shell;
|
public void * constant ml_shell = (void *) &mlist_shell;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -142,12 +146,11 @@ cmd_reset()
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Clear command line on display.
|
* Clear command line.
|
||||||
*/
|
*/
|
||||||
public void
|
public void
|
||||||
clear_cmd()
|
clear_cmd()
|
||||||
{
|
{
|
||||||
clear_bot();
|
|
||||||
cmd_col = prompt_col = 0;
|
cmd_col = prompt_col = 0;
|
||||||
cmd_mbc_buf_len = 0;
|
cmd_mbc_buf_len = 0;
|
||||||
}
|
}
|
||||||
|
@ -680,12 +683,14 @@ set_mlist(mlist, cmdflags)
|
||||||
void *mlist;
|
void *mlist;
|
||||||
int cmdflags;
|
int cmdflags;
|
||||||
{
|
{
|
||||||
|
#if CMD_HISTORY
|
||||||
curr_mlist = (struct mlist *) mlist;
|
curr_mlist = (struct mlist *) mlist;
|
||||||
curr_cmdflags = cmdflags;
|
curr_cmdflags = cmdflags;
|
||||||
|
|
||||||
/* Make sure the next up-arrow moves to the last string in the mlist. */
|
/* Make sure the next up-arrow moves to the last string in the mlist. */
|
||||||
if (curr_mlist != NULL)
|
if (curr_mlist != NULL)
|
||||||
curr_mlist->curr_mp = curr_mlist;
|
curr_mlist->curr_mp = curr_mlist;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CMD_HISTORY
|
#if CMD_HISTORY
|
||||||
|
@ -785,6 +790,7 @@ cmd_accept()
|
||||||
if (curr_mlist == NULL)
|
if (curr_mlist == NULL)
|
||||||
return;
|
return;
|
||||||
cmd_addhist(curr_mlist, cmdbuf);
|
cmd_addhist(curr_mlist, cmdbuf);
|
||||||
|
curr_mlist->modified = 1;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -872,6 +878,10 @@ cmd_edit(c)
|
||||||
case EC_LINEKILL:
|
case EC_LINEKILL:
|
||||||
not_in_completion();
|
not_in_completion();
|
||||||
return (cmd_kill());
|
return (cmd_kill());
|
||||||
|
case EC_ABORT:
|
||||||
|
not_in_completion();
|
||||||
|
(void) cmd_kill();
|
||||||
|
return (CC_QUIT);
|
||||||
case EC_W_BACKSPACE:
|
case EC_W_BACKSPACE:
|
||||||
not_in_completion();
|
not_in_completion();
|
||||||
return (cmd_werase());
|
return (cmd_werase());
|
||||||
|
@ -1293,13 +1303,21 @@ cmd_char(c)
|
||||||
* Return the number currently in the command buffer.
|
* Return the number currently in the command buffer.
|
||||||
*/
|
*/
|
||||||
public LINENUM
|
public LINENUM
|
||||||
cmd_int()
|
cmd_int(frac)
|
||||||
|
long *frac;
|
||||||
{
|
{
|
||||||
register char *p;
|
char *p;
|
||||||
LINENUM n = 0;
|
LINENUM n = 0;
|
||||||
|
int err;
|
||||||
|
|
||||||
for (p = cmdbuf; *p != '\0'; p++)
|
for (p = cmdbuf; *p >= '0' && *p <= '9'; p++)
|
||||||
n = (10 * n) + (*p - '0');
|
n = (n * 10) + (*p - '0');
|
||||||
|
*frac = 0;
|
||||||
|
if (*p++ == '.')
|
||||||
|
{
|
||||||
|
*frac = getfraction(&p, NULL, &err);
|
||||||
|
/* {{ do something if err is set? }} */
|
||||||
|
}
|
||||||
return (n);
|
return (n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1312,6 +1330,19 @@ get_cmdbuf()
|
||||||
return (cmdbuf);
|
return (cmdbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if CMD_HISTORY
|
||||||
|
/*
|
||||||
|
* Return the last (most recent) string in the current command history.
|
||||||
|
*/
|
||||||
|
public char *
|
||||||
|
cmd_lastpattern()
|
||||||
|
{
|
||||||
|
if (curr_mlist == NULL)
|
||||||
|
return (NULL);
|
||||||
|
return (curr_mlist->curr_mp->prev->string);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if CMD_HISTORY
|
#if CMD_HISTORY
|
||||||
/*
|
/*
|
||||||
* Get the name of the history file.
|
* Get the name of the history file.
|
||||||
|
@ -1327,7 +1358,7 @@ histfile_name()
|
||||||
name = lgetenv("LESSHISTFILE");
|
name = lgetenv("LESSHISTFILE");
|
||||||
if (name != NULL && *name != '\0')
|
if (name != NULL && *name != '\0')
|
||||||
{
|
{
|
||||||
if (strcmp(name, "-") == 0)
|
if (strcmp(name, "-") == 0 || strcmp(name, "/dev/null") == 0)
|
||||||
/* $LESSHISTFILE == "-" means don't use a history file. */
|
/* $LESSHISTFILE == "-" means don't use a history file. */
|
||||||
return (NULL);
|
return (NULL);
|
||||||
return (save(name));
|
return (save(name));
|
||||||
|
@ -1362,10 +1393,20 @@ init_cmdhist()
|
||||||
char *filename;
|
char *filename;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
char *p;
|
char *p;
|
||||||
|
#ifdef HAVE_STAT
|
||||||
|
struct stat st;
|
||||||
|
#endif
|
||||||
|
|
||||||
filename = histfile_name();
|
filename = histfile_name();
|
||||||
if (filename == NULL)
|
if (filename == NULL)
|
||||||
return;
|
return;
|
||||||
|
#ifdef HAVE_STAT
|
||||||
|
/* ignore devices/fifos; allow symlinks */
|
||||||
|
if (stat(filename, &st) < 0)
|
||||||
|
return;
|
||||||
|
if (!S_ISREG(st.st_mode))
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
f = fopen(filename, "r");
|
f = fopen(filename, "r");
|
||||||
free(filename);
|
free(filename);
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
|
@ -1388,11 +1429,14 @@ init_cmdhist()
|
||||||
}
|
}
|
||||||
if (strcmp(line, HISTFILE_SEARCH_SECTION) == 0)
|
if (strcmp(line, HISTFILE_SEARCH_SECTION) == 0)
|
||||||
ml = &mlist_search;
|
ml = &mlist_search;
|
||||||
#if SHELL_ESCAPE || PIPEC
|
|
||||||
else if (strcmp(line, HISTFILE_SHELL_SECTION) == 0)
|
else if (strcmp(line, HISTFILE_SHELL_SECTION) == 0)
|
||||||
|
{
|
||||||
|
#if SHELL_ESCAPE || PIPEC
|
||||||
ml = &mlist_shell;
|
ml = &mlist_shell;
|
||||||
|
#else
|
||||||
|
ml = NULL;
|
||||||
#endif
|
#endif
|
||||||
else if (*line == '"')
|
} else if (*line == '"')
|
||||||
{
|
{
|
||||||
if (ml != NULL)
|
if (ml != NULL)
|
||||||
cmd_addhist(ml, line+1);
|
cmd_addhist(ml, line+1);
|
||||||
|
@ -1442,17 +1486,37 @@ save_cmdhist()
|
||||||
#if CMD_HISTORY
|
#if CMD_HISTORY
|
||||||
char *filename;
|
char *filename;
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
int modified = 0;
|
||||||
|
|
||||||
filename = histfile_name();
|
filename = histfile_name();
|
||||||
if (filename == NULL)
|
if (filename == NULL)
|
||||||
return;
|
return;
|
||||||
|
if (mlist_search.modified)
|
||||||
|
modified = 1;
|
||||||
|
#if SHELL_ESCAPE || PIPEC
|
||||||
|
if (mlist_shell.modified)
|
||||||
|
modified = 1;
|
||||||
|
#endif
|
||||||
|
if (!modified)
|
||||||
|
return;
|
||||||
f = fopen(filename, "w");
|
f = fopen(filename, "w");
|
||||||
free(filename);
|
free(filename);
|
||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
return;
|
return;
|
||||||
#if HAVE_FCHMOD
|
#if HAVE_FCHMOD
|
||||||
|
{
|
||||||
/* Make history file readable only by owner. */
|
/* Make history file readable only by owner. */
|
||||||
fchmod(fileno(f), 0600);
|
int do_chmod = 1;
|
||||||
|
#if HAVE_STAT
|
||||||
|
struct stat statbuf;
|
||||||
|
int r = fstat(fileno(f), &statbuf);
|
||||||
|
if (r < 0 || !S_ISREG(statbuf.st_mode))
|
||||||
|
/* Don't chmod if not a regular file. */
|
||||||
|
do_chmod = 0;
|
||||||
|
#endif
|
||||||
|
if (do_chmod)
|
||||||
|
fchmod(fileno(f), 0600);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
fprintf(f, "%s\n", HISTFILE_FIRST_LINE);
|
fprintf(f, "%s\n", HISTFILE_FIRST_LINE);
|
File diff suppressed because it is too large
Load diff
6740
external/bsd/less/dist/configure
vendored
Executable file
6740
external/bsd/less/dist/configure
vendored
Executable file
File diff suppressed because it is too large
Load diff
666
external/bsd/less/dist/configure.ac
vendored
Normal file
666
external/bsd/less/dist/configure.ac
vendored
Normal file
|
@ -0,0 +1,666 @@
|
||||||
|
# Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
|
# Copyright (C) 1984-2011 Mark Nudelman
|
||||||
|
#
|
||||||
|
# You may distribute under the terms of either the GNU General Public
|
||||||
|
# License or the Less License, as specified in the README file.
|
||||||
|
#
|
||||||
|
# For more information about less, or for information on how to
|
||||||
|
# contact the author, see the README file.
|
||||||
|
|
||||||
|
# Autoconf initialization.
|
||||||
|
AC_INIT(less, 1)
|
||||||
|
AC_CONFIG_SRCDIR([forwback.c])
|
||||||
|
AC_CONFIG_HEADER([defines.h])
|
||||||
|
|
||||||
|
# Checks for programs.
|
||||||
|
AC_PROG_CC
|
||||||
|
AC_ISC_POSIX
|
||||||
|
AC_PROG_GCC_TRADITIONAL
|
||||||
|
AC_PROG_INSTALL
|
||||||
|
|
||||||
|
# Checks for compilation model.
|
||||||
|
AC_SYS_LARGEFILE
|
||||||
|
|
||||||
|
# Checks for general libraries.
|
||||||
|
AC_CHECK_LIB(tinfo, tgoto, [have_tinfo=yes], [have_tinfo=no])
|
||||||
|
AC_CHECK_LIB(xcurses, initscr, [have_xcurses=yes], [have_xcurses=no])
|
||||||
|
AC_CHECK_LIB(ncursesw, initscr, [have_ncursesw=yes], [have_ncursesw=no])
|
||||||
|
AC_CHECK_LIB(ncurses, initscr, [have_ncurses=yes], [have_ncurses=no])
|
||||||
|
AC_CHECK_LIB(curses, initscr, [have_curses=yes], [have_curses=no])
|
||||||
|
AC_CHECK_LIB(termcap, tgetent, [have_termcap=yes], [have_termcap=no])
|
||||||
|
AC_CHECK_LIB(termlib, tgetent, [have_termlib=yes], [have_termlib=no])
|
||||||
|
# Regular expressions (regcmp) are in -lgen on Solaris 2,
|
||||||
|
# and in -lintl on SCO Unix.
|
||||||
|
AC_CHECK_LIB(gen, regcmp)
|
||||||
|
AC_CHECK_LIB(intl, regcmp)
|
||||||
|
AC_CHECK_LIB(PW, regcmp)
|
||||||
|
|
||||||
|
# Checks for terminal libraries
|
||||||
|
AC_MSG_CHECKING([for working terminal libraries])
|
||||||
|
TERMLIBS=
|
||||||
|
|
||||||
|
# Check for systems where curses is broken.
|
||||||
|
curses_broken=0
|
||||||
|
if test x`uname -s` = "xHP-UX" >/dev/null 2>&1; then
|
||||||
|
if test x`uname -r` = "xB.11.00" >/dev/null 2>&1; then
|
||||||
|
curses_broken=1
|
||||||
|
fi
|
||||||
|
if test x`uname -r` = "xB.11.11" >/dev/null 2>&1; then
|
||||||
|
curses_broken=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $curses_broken = 0; then
|
||||||
|
|
||||||
|
# -- Try tinfo.
|
||||||
|
if test "x$TERMLIBS" = x; then
|
||||||
|
if test $have_tinfo = yes; then
|
||||||
|
TERMLIBS="-ltinfo"
|
||||||
|
SAVE_LIBS=$LIBS
|
||||||
|
LIBS="$LIBS $TERMLIBS"
|
||||||
|
AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
|
||||||
|
[termok=yes], [termok=no])
|
||||||
|
LIBS=$SAVE_LIBS
|
||||||
|
if test $termok = no; then TERMLIBS=""; fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# -- Try xcurses.
|
||||||
|
if test "x$TERMLIBS" = x; then
|
||||||
|
if test $have_xcurses = yes; then
|
||||||
|
TERMLIBS="-lxcurses"
|
||||||
|
SAVE_LIBS=$LIBS
|
||||||
|
LIBS="$LIBS $TERMLIBS"
|
||||||
|
AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
|
||||||
|
[termok=yes], [termok=no])
|
||||||
|
LIBS=$SAVE_LIBS
|
||||||
|
if test $termok = no; then TERMLIBS=""; fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# -- Try ncursesw.
|
||||||
|
if test "x$TERMLIBS" = x; then
|
||||||
|
if test $have_ncursesw = yes; then
|
||||||
|
TERMLIBS="-lncursesw"
|
||||||
|
SAVE_LIBS=$LIBS
|
||||||
|
LIBS="$LIBS $TERMLIBS"
|
||||||
|
AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
|
||||||
|
[termok=yes], [termok=no])
|
||||||
|
LIBS=$SAVE_LIBS
|
||||||
|
if test $termok = no; then TERMLIBS=""; fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# -- Try ncurses.
|
||||||
|
if test "x$TERMLIBS" = x; then
|
||||||
|
if test $have_ncurses = yes; then
|
||||||
|
TERMLIBS="-lncurses"
|
||||||
|
SAVE_LIBS=$LIBS
|
||||||
|
LIBS="$LIBS $TERMLIBS"
|
||||||
|
AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
|
||||||
|
[termok=yes], [termok=no])
|
||||||
|
LIBS=$SAVE_LIBS
|
||||||
|
if test $termok = no; then TERMLIBS=""; fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# -- Try curses.
|
||||||
|
if test "x$TERMLIBS" = x; then
|
||||||
|
if test $have_curses = yes; then
|
||||||
|
TERMLIBS="-lcurses"
|
||||||
|
SAVE_LIBS=$LIBS
|
||||||
|
LIBS="$LIBS $TERMLIBS"
|
||||||
|
AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
|
||||||
|
[termok=yes], [termok=no])
|
||||||
|
LIBS=$SAVE_LIBS
|
||||||
|
if test $termok = no; then TERMLIBS=""; fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# -- Try curses & termcap.
|
||||||
|
if test "x$TERMLIBS" = x; then
|
||||||
|
if test $have_curses = yes; then
|
||||||
|
if test $have_termcap = yes; then
|
||||||
|
TERMLIBS="-lcurses -ltermcap"
|
||||||
|
SAVE_LIBS=$LIBS
|
||||||
|
LIBS="$LIBS $TERMLIBS"
|
||||||
|
AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
|
||||||
|
[termok=yes], [termok=no])
|
||||||
|
LIBS=$SAVE_LIBS
|
||||||
|
if test $termok = no; then TERMLIBS=""; fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# -- Try termcap.
|
||||||
|
if test "x$TERMLIBS" = x; then
|
||||||
|
if test $have_termcap = yes; then
|
||||||
|
TERMLIBS="-ltermcap"
|
||||||
|
SAVE_LIBS=$LIBS
|
||||||
|
LIBS="$LIBS $TERMLIBS"
|
||||||
|
AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
|
||||||
|
[termok=yes], [termok=no])
|
||||||
|
LIBS=$SAVE_LIBS
|
||||||
|
if test $termok = no; then TERMLIBS=""; fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# -- Try termlib.
|
||||||
|
if test "x$TERMLIBS" = x; then
|
||||||
|
if test $have_termlib = yes; then
|
||||||
|
TERMLIBS="-lcurses -ltermlib"
|
||||||
|
SAVE_LIBS=$LIBS
|
||||||
|
LIBS="$LIBS $TERMLIBS"
|
||||||
|
AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
|
||||||
|
[termok=yes], [termok=no])
|
||||||
|
LIBS=$SAVE_LIBS
|
||||||
|
if test $termok = no; then TERMLIBS=""; fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "x$TERMLIBS" = x; then
|
||||||
|
AC_MSG_RESULT(Cannot find terminal libraries - configure failed)
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
AC_MSG_RESULT(using $TERMLIBS)
|
||||||
|
LIBS="$LIBS $TERMLIBS"
|
||||||
|
|
||||||
|
# Checks for header files.
|
||||||
|
AC_HEADER_STDC
|
||||||
|
AC_CHECK_HEADERS([ctype.h errno.h fcntl.h limits.h stdio.h stdlib.h string.h termcap.h termio.h termios.h time.h unistd.h values.h sys/ioctl.h sys/stream.h wctype.h])
|
||||||
|
|
||||||
|
# Checks for typedefs, structures, and compiler characteristics.
|
||||||
|
AC_HEADER_STAT
|
||||||
|
AC_C_CONST
|
||||||
|
AC_TYPE_OFF_T
|
||||||
|
AC_TYPE_SIZE_T
|
||||||
|
AC_HEADER_TIME
|
||||||
|
|
||||||
|
# Autoheader templates for symbols defined later by AC_DEFINE.
|
||||||
|
AH_TEMPLATE([HAVE_POSIX_REGCOMP],
|
||||||
|
[POSIX regcomp() and regex.h])
|
||||||
|
AH_TEMPLATE([HAVE_PCRE],
|
||||||
|
[PCRE (Perl-compatible regular expression) library])
|
||||||
|
AH_TEMPLATE([HAVE_RE_COMP],
|
||||||
|
[BSD re_comp()])
|
||||||
|
AH_TEMPLATE([HAVE_REGCMP],
|
||||||
|
[System V regcmp()])
|
||||||
|
AH_TEMPLATE([HAVE_V8_REGCOMP],
|
||||||
|
[Henry Spencer V8 regcomp() and regexp.h])
|
||||||
|
AH_TEMPLATE([NO_REGEX],
|
||||||
|
[pattern matching is supported, but without metacharacters.])
|
||||||
|
AH_TEMPLATE([HAVE_REGEXEC2],
|
||||||
|
[])
|
||||||
|
AH_TEMPLATE([HAVE_VOID],
|
||||||
|
[Define HAVE_VOID if your compiler supports the "void" type.])
|
||||||
|
AH_TEMPLATE([HAVE_FLOAT],
|
||||||
|
[Define HAVE_FLOAT if your compiler supports the "double" type.])
|
||||||
|
AH_TEMPLATE([HAVE_CONST],
|
||||||
|
[Define HAVE_CONST if your compiler supports the "const" modifier.])
|
||||||
|
AH_TEMPLATE([HAVE_STAT_INO],
|
||||||
|
[Define HAVE_STAT_INO if your struct stat has st_ino and st_dev.])
|
||||||
|
AH_TEMPLATE([HAVE_TIME_T],
|
||||||
|
[Define HAVE_TIME_T if your system supports the "time_t" type.])
|
||||||
|
AH_TEMPLATE([HAVE_STRERROR],
|
||||||
|
[Define HAVE_STRERROR if you have the strerror() function.])
|
||||||
|
AH_TEMPLATE([HAVE_FILENO],
|
||||||
|
[Define HAVE_FILENO if you have the fileno() macro.])
|
||||||
|
AH_TEMPLATE([HAVE_ERRNO],
|
||||||
|
[Define HAVE_ERRNO if you have the errno variable.])
|
||||||
|
AH_TEMPLATE([MUST_DEFINE_ERRNO],
|
||||||
|
[Define MUST_DEFINE_ERRNO if you have errno but it is not define in errno.h.])
|
||||||
|
AH_TEMPLATE([HAVE_SYS_ERRLIST],
|
||||||
|
[Define HAVE_SYS_ERRLIST if you have the sys_errlist[] variable.])
|
||||||
|
AH_TEMPLATE([HAVE_OSPEED],
|
||||||
|
[Define HAVE_OSPEED if your termcap library has the ospeed variable.])
|
||||||
|
AH_TEMPLATE([MUST_DEFINE_OSPEED],
|
||||||
|
[Define MUST_DEFINE_OSPEED if you have ospeed but it is not defined in termcap.h.])
|
||||||
|
AH_TEMPLATE([HAVE_LOCALE],
|
||||||
|
[Define HAVE_LOCALE if you have locale.h and setlocale.])
|
||||||
|
AH_TEMPLATE([HAVE_TERMIOS_FUNCS],
|
||||||
|
[Define HAVE_TERMIOS_FUNCS if you have tcgetattr/tcsetattr.])
|
||||||
|
AH_TEMPLATE([HAVE_UPPER_LOWER],
|
||||||
|
[Define HAVE_UPPER_LOWER if you have isupper, islower, toupper, tolower.])
|
||||||
|
AH_TEMPLATE([HAVE_WCTYPE],
|
||||||
|
[Define HAVE_WCTYPE if you have iswupper, iswlower, towupper, towlower.])
|
||||||
|
AH_TEMPLATE([HAVE_SIGSET_T],
|
||||||
|
[Define HAVE_SIGSET_T you have the sigset_t type.])
|
||||||
|
AH_TEMPLATE([HAVE_SIGEMPTYSET],
|
||||||
|
[Define HAVE_SIGEMPTYSET if you have the sigemptyset macro.])
|
||||||
|
AH_TEMPLATE([EDIT_PGM],
|
||||||
|
[Define EDIT_PGM to your editor.])
|
||||||
|
AH_TEMPLATE([SECURE_COMPILE],
|
||||||
|
[Define SECURE_COMPILE=1 to build a secure version of less.])
|
||||||
|
|
||||||
|
# Checks for identifiers.
|
||||||
|
AC_TYPE_OFF_T
|
||||||
|
AC_MSG_CHECKING(for void)
|
||||||
|
AC_TRY_COMPILE(, [void *foo = 0;],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_VOID)], [AC_MSG_RESULT(no)])
|
||||||
|
AC_MSG_CHECKING(for const)
|
||||||
|
AC_TRY_COMPILE(, [const int foo = 0;],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_CONST)], [AC_MSG_RESULT(no)])
|
||||||
|
AC_MSG_CHECKING(for time_t)
|
||||||
|
AC_TRY_COMPILE([#include <time.h>], [time_t t = 0;],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_TIME_T)], [AC_MSG_RESULT(no)])
|
||||||
|
AC_MSG_CHECKING(for st_ino in struct stat)
|
||||||
|
AC_TRY_COMPILE([#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>],
|
||||||
|
[struct stat s; dev_t dev = s.st_dev; ino_t ino = s.st_ino;],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_STAT_INO)], [AC_MSG_RESULT(no)])
|
||||||
|
|
||||||
|
# Checks for library functions.
|
||||||
|
AC_TYPE_SIGNAL
|
||||||
|
AC_CHECK_FUNCS([fsync popen _setjmp sigprocmask sigsetmask snprintf stat system fchmod])
|
||||||
|
|
||||||
|
# AC_CHECK_FUNCS may not work for inline functions, so test these separately.
|
||||||
|
AC_MSG_CHECKING(for memcpy)
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#if HAVE_STRING_H
|
||||||
|
#include <string.h>
|
||||||
|
#endif], [memcpy(0,0,0);],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MEMCPY)], [AC_MSG_RESULT(no)])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for strchr)
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#if HAVE_STRING_H
|
||||||
|
#include <string.h>
|
||||||
|
#endif], [strchr("x",'x');],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_STRCHR)], [AC_MSG_RESULT(no)])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for strstr)
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#if HAVE_STRING_H
|
||||||
|
#include <string.h>
|
||||||
|
#endif], [strstr("x","x");],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_STRSTR)], [AC_MSG_RESULT(no)])
|
||||||
|
|
||||||
|
# Some systems have termios.h but not the corresponding functions.
|
||||||
|
AC_CHECK_FUNC(tcgetattr, AC_DEFINE(HAVE_TERMIOS_FUNCS))
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for fileno)
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#if HAVE_STDIO_H
|
||||||
|
#include <stdio.h>
|
||||||
|
#endif], [static int x; x = fileno(stdin);],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FILENO)], [AC_MSG_RESULT(no)])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for strerror)
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#if HAVE_STDIO_H
|
||||||
|
#include <stdio.h>
|
||||||
|
#endif
|
||||||
|
#if HAVE_STRING_H
|
||||||
|
#include <string.h>
|
||||||
|
#endif
|
||||||
|
#if HAVE_ERRNO_H
|
||||||
|
#include <errno.h>
|
||||||
|
#endif], [static char *x; x = strerror(0);],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_STRERROR)], [AC_MSG_RESULT(no)])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for sys_errlist)
|
||||||
|
AC_TRY_LINK(, [extern char *sys_errlist[]; static char **x; x = sys_errlist;],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYS_ERRLIST)], [AC_MSG_RESULT(no)])
|
||||||
|
|
||||||
|
AC_CHECK_TYPES([sigset_t],,,[#include <signal.h>])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for sigemptyset)
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#include <signal.h>
|
||||||
|
], [sigset_t s; sigemptyset(&s);],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SIGEMPTYSET)], [AC_MSG_RESULT(no)])
|
||||||
|
|
||||||
|
have_errno=no
|
||||||
|
AC_MSG_CHECKING(for errno)
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#if HAVE_ERRNO_H
|
||||||
|
#include <errno.h>
|
||||||
|
#endif], [static int x; x = errno;],
|
||||||
|
[AC_MSG_RESULT(yes - in errno.h); AC_DEFINE(HAVE_ERRNO) have_errno=yes])
|
||||||
|
if test $have_errno = no; then
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#if HAVE_ERRNO_H
|
||||||
|
#include <errno.h>
|
||||||
|
#endif], [extern int errno; static int x; x = errno;],
|
||||||
|
[AC_MSG_RESULT(yes - must define); AC_DEFINE(HAVE_ERRNO) AC_DEFINE(MUST_DEFINE_ERRNO)],
|
||||||
|
[AC_MSG_RESULT(no)])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for locale)
|
||||||
|
AC_TRY_LINK([#include <locale.h>
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <langinfo.h>], [setlocale(LC_CTYPE,""); isprint(0); iscntrl(0);],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_LOCALE)], [AC_MSG_RESULT(no)])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for ctype functions)
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#if HAVE_CTYPE_H
|
||||||
|
#include <ctype.h>
|
||||||
|
#endif], [static int x; x = isupper(x); x = tolower(x); x = toupper(x);],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UPPER_LOWER)], [AC_MSG_RESULT(no)])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING(for wctype functions)
|
||||||
|
AC_TRY_LINK([#include <wctype.h>], [iswlower(0); iswupper(0); towlower(0); towupper(0);],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_WCTYPE)], [AC_MSG_RESULT(no)])
|
||||||
|
|
||||||
|
# Checks for external variable ospeed in the termcap library.
|
||||||
|
have_ospeed=no
|
||||||
|
AC_MSG_CHECKING(termcap for ospeed)
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#include <sys/types.h>
|
||||||
|
#if HAVE_TERMIOS_H
|
||||||
|
#include <termios.h>
|
||||||
|
#endif
|
||||||
|
#if HAVE_TERMCAP_H
|
||||||
|
#include <termcap.h>
|
||||||
|
#endif], [ospeed = 0;],
|
||||||
|
[AC_MSG_RESULT(yes - in termcap.h); AC_DEFINE(HAVE_OSPEED) have_ospeed=yes])
|
||||||
|
if test $have_ospeed = no; then
|
||||||
|
AC_TRY_LINK(, [extern short ospeed; ospeed = 0;],
|
||||||
|
[AC_MSG_RESULT(yes - must define); AC_DEFINE(HAVE_OSPEED) AC_DEFINE(MUST_DEFINE_OSPEED)],
|
||||||
|
[AC_MSG_RESULT(no)])
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Compile in secure mode?
|
||||||
|
AC_ARG_WITH(secure,
|
||||||
|
[ --with-secure Compile in secure mode],
|
||||||
|
AC_DEFINE(SECURE_COMPILE, 1), AC_DEFINE(SECURE_COMPILE, 0))
|
||||||
|
|
||||||
|
# Should we use floating point?
|
||||||
|
AC_MSG_CHECKING(for floating point)
|
||||||
|
AC_ARG_WITH(no-float,
|
||||||
|
[ --with-no-float Do not use floating point],
|
||||||
|
WANT_NO_FLOAT=1, WANT_NO_FLOAT=0)
|
||||||
|
if test $WANT_NO_FLOAT = 0; then
|
||||||
|
AC_TRY_LINK(, [double f1 = 12.5; double f2 = f1*f1/2.5;],
|
||||||
|
[AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT)], [AC_MSG_RESULT(no)])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(disabled by user)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Checks for regular expression functions.
|
||||||
|
have_regex=no
|
||||||
|
have_posix_regex=unknown
|
||||||
|
AC_MSG_CHECKING(for regcomp)
|
||||||
|
|
||||||
|
# Select a regular expression library.
|
||||||
|
WANT_REGEX=auto
|
||||||
|
AC_ARG_WITH(regex,
|
||||||
|
[ --with-regex={auto,pcre,posix,regcmp,re_comp,regcomp,regcomp-local} Select a regular expression library [auto]],
|
||||||
|
WANT_REGEX="$withval")
|
||||||
|
|
||||||
|
if test $have_regex = no; then
|
||||||
|
if test $WANT_REGEX = auto -o $WANT_REGEX = posix; then
|
||||||
|
# Some versions of Solaris have a regcomp() function, but it doesn't work!
|
||||||
|
# So we run a test program. If we're cross-compiling, do it the old way.
|
||||||
|
AC_TRY_RUN([
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <regex.h>
|
||||||
|
main() { regex_t r; regmatch_t rm; char *text = "xabcy";
|
||||||
|
if (regcomp(&r, "abc", 0)) exit(1);
|
||||||
|
if (regexec(&r, text, 1, &rm, 0)) exit(1);
|
||||||
|
#ifndef __WATCOMC__
|
||||||
|
if (rm.rm_so != 1) exit(1); /* check for correct offset */
|
||||||
|
#else
|
||||||
|
if (rm.rm_sp != text + 1) exit(1); /* check for correct offset */
|
||||||
|
#endif
|
||||||
|
exit(0); }],
|
||||||
|
have_posix_regex=yes, have_posix_regex=no, have_posix_regex=unknown)
|
||||||
|
if test $have_posix_regex = yes; then
|
||||||
|
AC_MSG_RESULT(using POSIX regcomp)
|
||||||
|
AC_DEFINE(HAVE_POSIX_REGCOMP)
|
||||||
|
have_regex=yes
|
||||||
|
elif test $have_posix_regex = unknown; then
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <regex.h>],
|
||||||
|
[regex_t *r; regfree(r);],
|
||||||
|
AC_MSG_RESULT(using POSIX regcomp)
|
||||||
|
AC_DEFINE(HAVE_POSIX_REGCOMP) have_regex=yes)
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $have_regex = no; then
|
||||||
|
if test $WANT_REGEX = auto -o $WANT_REGEX = pcre; then
|
||||||
|
AC_CHECK_LIB(pcre, pcre_compile,
|
||||||
|
[AC_MSG_RESULT(using pcre); AC_DEFINE(HAVE_PCRE) LIBS="$LIBS -lpcre" have_regex=yes], [])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $have_regex = no; then
|
||||||
|
if test $WANT_REGEX = auto -o $WANT_REGEX = regcmp; then
|
||||||
|
AC_CHECK_FUNC(regcmp,
|
||||||
|
AC_MSG_RESULT(using regcmp); AC_DEFINE(HAVE_REGCMP) have_regex=yes)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $have_regex = no; then
|
||||||
|
if test $WANT_REGEX = auto -o $WANT_REGEX = regcomp; then
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#include "regexp.h"], [regcomp("");],
|
||||||
|
AC_MSG_RESULT(using V8 regcomp); AC_DEFINE(HAVE_V8_REGCOMP) have_regex=yes)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $have_regex = no && test -f ${srcdir}/regexp.c; then
|
||||||
|
if test $WANT_REGEX = auto -o $WANT_REGEX = regcomp-local; then
|
||||||
|
AC_MSG_RESULT(using V8 regcomp -- local source); AC_DEFINE(HAVE_V8_REGCOMP) AC_DEFINE(HAVE_REGEXEC2) REGEX_O='regexp.$(O)' AC_SUBST(REGEX_O) have_regex=yes
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $have_regex = no; then
|
||||||
|
if test $WANT_REGEX = auto -o $WANT_REGEX = re_comp; then
|
||||||
|
AC_MSG_RESULT(using re_comp); AC_CHECK_FUNC(re_comp, AC_DEFINE(HAVE_RE_COMP) have_regex=yes)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $have_regex = no; then
|
||||||
|
AC_MSG_RESULT(cannot find regular expression library); AC_DEFINE(NO_REGEX)
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_ARG_WITH(editor,
|
||||||
|
[ --with-editor=PROGRAM use PROGRAM as the default editor [vi]],
|
||||||
|
AC_DEFINE_UNQUOTED(EDIT_PGM, "$withval"), AC_DEFINE(EDIT_PGM, "vi"))
|
||||||
|
|
||||||
|
AH_TOP([
|
||||||
|
/* Unix definition file for less. -*- C -*-
|
||||||
|
*
|
||||||
|
* This file has 3 sections:
|
||||||
|
* User preferences.
|
||||||
|
* Settings always true on Unix.
|
||||||
|
* Settings automatically determined by configure.
|
||||||
|
*
|
||||||
|
* * * * * * WARNING * * * * * *
|
||||||
|
* If you edit defines.h by hand, do "touch stamp-h" before you run make
|
||||||
|
* so config.status doesn't overwrite your changes.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* User preferences. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SECURE is 1 if you wish to disable a bunch of features in order to
|
||||||
|
* be safe to run by unprivileged users.
|
||||||
|
* SECURE_COMPILE is set by the --with-secure configure option.
|
||||||
|
*/
|
||||||
|
#define SECURE SECURE_COMPILE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SHELL_ESCAPE is 1 if you wish to allow shell escapes.
|
||||||
|
* (This is possible only if your system supplies the system() function.)
|
||||||
|
*/
|
||||||
|
#define SHELL_ESCAPE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EXAMINE is 1 if you wish to allow examining files by name from within less.
|
||||||
|
*/
|
||||||
|
#define EXAMINE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAB_COMPLETE_FILENAME is 1 if you wish to allow the TAB key
|
||||||
|
* to complete filenames at prompts.
|
||||||
|
*/
|
||||||
|
#define TAB_COMPLETE_FILENAME (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CMD_HISTORY is 1 if you wish to allow keys to cycle through
|
||||||
|
* previous commands at prompts.
|
||||||
|
*/
|
||||||
|
#define CMD_HISTORY 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HILITE_SEARCH is 1 if you wish to have search targets to be
|
||||||
|
* displayed in standout mode.
|
||||||
|
*/
|
||||||
|
#define HILITE_SEARCH 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EDITOR is 1 if you wish to allow editor invocation (the "v" command).
|
||||||
|
* (This is possible only if your system supplies the system() function.)
|
||||||
|
* EDIT_PGM is the name of the (default) editor to be invoked.
|
||||||
|
*/
|
||||||
|
#define EDITOR (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAGS is 1 if you wish to support tag files.
|
||||||
|
*/
|
||||||
|
#define TAGS (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* USERFILE is 1 if you wish to allow a .less file to specify
|
||||||
|
* user-defined key bindings.
|
||||||
|
*/
|
||||||
|
#define USERFILE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLOB is 1 if you wish to have shell metacharacters expanded in filenames.
|
||||||
|
* This will generally work if your system provides the "popen" function
|
||||||
|
* and the "echo" shell command.
|
||||||
|
*/
|
||||||
|
#define GLOB (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PIPEC is 1 if you wish to have the "|" command
|
||||||
|
* which allows the user to pipe data into a shell command.
|
||||||
|
*/
|
||||||
|
#define PIPEC (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LOGFILE is 1 if you wish to allow the -l option (to create log files).
|
||||||
|
*/
|
||||||
|
#define LOGFILE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GNU_OPTIONS is 1 if you wish to support the GNU-style command
|
||||||
|
* line options --help and --version.
|
||||||
|
*/
|
||||||
|
#define GNU_OPTIONS 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ONLY_RETURN is 1 if you want RETURN to be the only input which
|
||||||
|
* will continue past an error message.
|
||||||
|
* Otherwise, any key will continue past an error message.
|
||||||
|
*/
|
||||||
|
#define ONLY_RETURN 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LESSKEYFILE is the filename of the default lesskey output file
|
||||||
|
* (in the HOME directory).
|
||||||
|
* LESSKEYFILE_SYS is the filename of the system-wide lesskey output file.
|
||||||
|
* DEF_LESSKEYINFILE is the filename of the default lesskey input
|
||||||
|
* (in the HOME directory).
|
||||||
|
* LESSHISTFILE is the filename of the history file
|
||||||
|
* (in the HOME directory).
|
||||||
|
*/
|
||||||
|
#define LESSKEYFILE ".less"
|
||||||
|
#define LESSKEYFILE_SYS SYSDIR "/sysless"
|
||||||
|
#define DEF_LESSKEYINFILE ".lesskey"
|
||||||
|
#define LESSHISTFILE ".lesshst"
|
||||||
|
|
||||||
|
|
||||||
|
/* Settings always true on Unix. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define MSDOS_COMPILER if compiling under Microsoft C.
|
||||||
|
*/
|
||||||
|
#define MSDOS_COMPILER 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pathname separator character.
|
||||||
|
*/
|
||||||
|
#define PATHNAME_SEP "/"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The value returned from tgetent on success.
|
||||||
|
* Some HP-UX systems return 0 on success.
|
||||||
|
*/
|
||||||
|
#define TGETENT_OK 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_SYS_TYPES_H is 1 if your system has <sys/types.h>.
|
||||||
|
*/
|
||||||
|
#define HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define if you have the <sgstat.h> header file.
|
||||||
|
*/
|
||||||
|
#undef HAVE_SGSTAT_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_PERROR is 1 if your system has the perror() call.
|
||||||
|
* (Actually, if it has sys_errlist, sys_nerr and errno.)
|
||||||
|
*/
|
||||||
|
#define HAVE_PERROR 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_TIME is 1 if your system has the time() call.
|
||||||
|
*/
|
||||||
|
#define HAVE_TIME 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_SHELL is 1 if your system supports a SHELL command interpreter.
|
||||||
|
*/
|
||||||
|
#define HAVE_SHELL 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Default shell metacharacters and meta-escape character.
|
||||||
|
*/
|
||||||
|
#define DEF_METACHARS "; *?\t\n'\"()<>[]|&^`#\\$%=~"
|
||||||
|
#define DEF_METAESCAPE "\\"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_DUP is 1 if your system has the dup() call.
|
||||||
|
*/
|
||||||
|
#define HAVE_DUP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the memcpy() function. */
|
||||||
|
#define HAVE_MEMCPY 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the strchr() function. */
|
||||||
|
#define HAVE_STRCHR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the strstr() function. */
|
||||||
|
#define HAVE_STRSTR 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sizes of various buffers.
|
||||||
|
*/
|
||||||
|
#define CMDBUF_SIZE 512 /* Buffer for multichar commands */
|
||||||
|
#define UNGOT_SIZE 100 /* Max chars to unget() */
|
||||||
|
#define LINEBUF_SIZE 1024 /* Max size of line in input file */
|
||||||
|
#define OUTBUF_SIZE 1024 /* Output buffer */
|
||||||
|
#define PROMPT_SIZE 200 /* Max size of prompt string */
|
||||||
|
#define TERMBUF_SIZE 2048 /* Termcap buffer for tgetent */
|
||||||
|
#define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */
|
||||||
|
#define TAGLINE_SIZE 512 /* Max size of line in tags file */
|
||||||
|
#define TABSTOP_MAX 32 /* Max number of custom tab stops */
|
||||||
|
|
||||||
|
/* Settings automatically determined by configure. */
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_CONFIG_FILES([Makefile])
|
||||||
|
AC_OUTPUT
|
122
external/bsd/less/dist/cvt.c
vendored
Normal file
122
external/bsd/less/dist/cvt.c
vendored
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
/* $NetBSD: cvt.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
|
*
|
||||||
|
* You may distribute under the terms of either the GNU General Public
|
||||||
|
* License or the Less License, as specified in the README file.
|
||||||
|
*
|
||||||
|
* For more information about less, or for information on how to
|
||||||
|
* contact the author, see the README file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Routines to convert text in various ways. Used by search.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "less.h"
|
||||||
|
#include "charset.h"
|
||||||
|
|
||||||
|
extern int utf_mode;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the length of a buffer needed to convert a string.
|
||||||
|
*/
|
||||||
|
public int
|
||||||
|
cvt_length(len, ops)
|
||||||
|
int len;
|
||||||
|
int ops;
|
||||||
|
{
|
||||||
|
if (utf_mode)
|
||||||
|
/*
|
||||||
|
* Just copying a string in UTF-8 mode can cause it to grow
|
||||||
|
* in length.
|
||||||
|
* Four output bytes for one input byte is the worst case.
|
||||||
|
*/
|
||||||
|
len *= 4;
|
||||||
|
return (len + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Allocate a chpos array for use by cvt_text.
|
||||||
|
*/
|
||||||
|
public int *
|
||||||
|
cvt_alloc_chpos(len)
|
||||||
|
int len;
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
int *chpos = (int *) ecalloc(sizeof(int), len);
|
||||||
|
/* Initialize all entries to an invalid position. */
|
||||||
|
for (i = 0; i < len; i++)
|
||||||
|
chpos[i] = -1;
|
||||||
|
return (chpos);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Convert text. Perform the transformations specified by ops.
|
||||||
|
* Returns converted text in odst. The original offset of each
|
||||||
|
* odst character (when it was in osrc) is returned in the chpos array.
|
||||||
|
*/
|
||||||
|
public void
|
||||||
|
cvt_text(odst, osrc, chpos, lenp, ops)
|
||||||
|
char *odst;
|
||||||
|
char *osrc;
|
||||||
|
int *chpos;
|
||||||
|
int *lenp;
|
||||||
|
int ops;
|
||||||
|
{
|
||||||
|
char *dst;
|
||||||
|
char *src;
|
||||||
|
register char *src_end;
|
||||||
|
LWCHAR ch;
|
||||||
|
|
||||||
|
if (lenp != NULL)
|
||||||
|
src_end = osrc + *lenp;
|
||||||
|
else
|
||||||
|
src_end = osrc + strlen(osrc);
|
||||||
|
|
||||||
|
for (src = osrc, dst = odst; src < src_end; )
|
||||||
|
{
|
||||||
|
int src_pos = src - osrc;
|
||||||
|
int dst_pos = dst - odst;
|
||||||
|
ch = step_char(&src, +1, src_end);
|
||||||
|
if ((ops & CVT_BS) && ch == '\b' && dst > odst)
|
||||||
|
{
|
||||||
|
/* Delete backspace and preceding char. */
|
||||||
|
do {
|
||||||
|
dst--;
|
||||||
|
} while (dst > odst &&
|
||||||
|
!IS_ASCII_OCTET(*dst) && !IS_UTF8_LEAD(*dst));
|
||||||
|
} else if ((ops & CVT_ANSI) && IS_CSI_START(ch))
|
||||||
|
{
|
||||||
|
/* Skip to end of ANSI escape sequence. */
|
||||||
|
src++; /* skip the CSI start char */
|
||||||
|
while (src < src_end)
|
||||||
|
if (!is_ansi_middle(*src++))
|
||||||
|
break;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
/* Just copy the char to the destination buffer. */
|
||||||
|
if ((ops & CVT_TO_LC) && IS_UPPER(ch))
|
||||||
|
ch = TO_LOWER(ch);
|
||||||
|
put_wchar(&dst, ch);
|
||||||
|
/*
|
||||||
|
* Record the original position of the char.
|
||||||
|
* But if we've already recorded a position
|
||||||
|
* for this char (due to a backspace), leave
|
||||||
|
* it alone; if multiple source chars map to
|
||||||
|
* one destination char, we want the position
|
||||||
|
* of the first one.
|
||||||
|
*/
|
||||||
|
if (chpos != NULL && chpos[dst_pos] < 0)
|
||||||
|
chpos[dst_pos] = src_pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((ops & CVT_CRLF) && dst > odst && dst[-1] == '\r')
|
||||||
|
dst--;
|
||||||
|
*dst = '\0';
|
||||||
|
if (lenp != NULL)
|
||||||
|
*lenp = dst - odst;
|
||||||
|
if (chpos != NULL)
|
||||||
|
chpos[dst - odst] = src - osrc;
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: decode.c,v 1.8 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: decode.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -122,6 +122,7 @@ static unsigned char cmdtable[] =
|
||||||
'7',0, A_DIGIT,
|
'7',0, A_DIGIT,
|
||||||
'8',0, A_DIGIT,
|
'8',0, A_DIGIT,
|
||||||
'9',0, A_DIGIT,
|
'9',0, A_DIGIT,
|
||||||
|
'.',0, A_DIGIT,
|
||||||
|
|
||||||
'=',0, A_STAT,
|
'=',0, A_STAT,
|
||||||
CONTROL('G'),0, A_STAT,
|
CONTROL('G'),0, A_STAT,
|
||||||
|
@ -134,6 +135,7 @@ static unsigned char cmdtable[] =
|
||||||
ESC,'n',0, A_T_AGAIN_SEARCH,
|
ESC,'n',0, A_T_AGAIN_SEARCH,
|
||||||
'N',0, A_REVERSE_SEARCH,
|
'N',0, A_REVERSE_SEARCH,
|
||||||
ESC,'N',0, A_T_REVERSE_SEARCH,
|
ESC,'N',0, A_T_REVERSE_SEARCH,
|
||||||
|
'&',0, A_FILTER,
|
||||||
'm',0, A_SETMARK,
|
'm',0, A_SETMARK,
|
||||||
'\'',0, A_GOMARK,
|
'\'',0, A_GOMARK,
|
||||||
CONTROL('X'),CONTROL('X'),0, A_GOMARK,
|
CONTROL('X'),CONTROL('X'),0, A_GOMARK,
|
||||||
|
@ -202,6 +204,7 @@ static unsigned char edittable[] =
|
||||||
SK(SK_UP_ARROW),0, EC_UP, /* UPARROW */
|
SK(SK_UP_ARROW),0, EC_UP, /* UPARROW */
|
||||||
ESC,'j',0, EC_DOWN, /* ESC j */
|
ESC,'j',0, EC_DOWN, /* ESC j */
|
||||||
SK(SK_DOWN_ARROW),0, EC_DOWN, /* DOWNARROW */
|
SK(SK_DOWN_ARROW),0, EC_DOWN, /* DOWNARROW */
|
||||||
|
CONTROL('G'),0, EC_ABORT, /* CTRL-G */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -688,7 +691,7 @@ lesskey(filename, sysvar)
|
||||||
close(f);
|
close(f);
|
||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
if (lseek(f, (off_t)0, 0) == BAD_LSEEK)
|
if (lseek(f, (off_t)0, SEEK_SET) == BAD_LSEEK)
|
||||||
{
|
{
|
||||||
free(buf);
|
free(buf);
|
||||||
close(f);
|
close(f);
|
400
external/bsd/less/dist/defines.ds
vendored
Normal file
400
external/bsd/less/dist/defines.ds
vendored
Normal file
|
@ -0,0 +1,400 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
|
*
|
||||||
|
* You may distribute under the terms of either the GNU General Public
|
||||||
|
* License or the Less License, as specified in the README file.
|
||||||
|
*
|
||||||
|
* For more information about less, or for information on how to
|
||||||
|
* contact the author, see the README file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* DOS definition file for less. */
|
||||||
|
/*
|
||||||
|
* This file has 2 sections:
|
||||||
|
* User preferences.
|
||||||
|
* Settings always true for MS-DOS systems.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* User preferences. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SECURE is 1 if you wish to disable a bunch of features in order to
|
||||||
|
* be safe to run by unprivileged users.
|
||||||
|
*/
|
||||||
|
#define SECURE 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SHELL_ESCAPE is 1 if you wish to allow shell escapes.
|
||||||
|
* (This is possible only if your system supplies the system() function.)
|
||||||
|
*/
|
||||||
|
#define SHELL_ESCAPE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EXAMINE is 1 if you wish to allow examining files by name from within less.
|
||||||
|
*/
|
||||||
|
#define EXAMINE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAB_COMPLETE_FILENAME is 1 if you wish to allow the TAB key
|
||||||
|
* to complete filenames at prompts.
|
||||||
|
*/
|
||||||
|
#define TAB_COMPLETE_FILENAME (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CMD_HISTORY is 1 if you wish to allow keys to cycle through
|
||||||
|
* previous commands at prompts.
|
||||||
|
*/
|
||||||
|
#define CMD_HISTORY 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HILITE_SEARCH is 1 if you wish to have search targets to be
|
||||||
|
* displayed in standout mode.
|
||||||
|
*/
|
||||||
|
#define HILITE_SEARCH 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EDITOR is 1 if you wish to allow editor invocation (the "v" command).
|
||||||
|
* (This is possible only if your system supplies the system() function.)
|
||||||
|
* EDIT_PGM is the name of the (default) editor to be invoked.
|
||||||
|
*/
|
||||||
|
#define EDITOR (!SECURE)
|
||||||
|
#define EDIT_PGM "vi"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAGS is 1 if you wish to support tag files.
|
||||||
|
*/
|
||||||
|
#define TAGS (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* USERFILE is 1 if you wish to allow a .less file to specify
|
||||||
|
* user-defined key bindings.
|
||||||
|
*/
|
||||||
|
#define USERFILE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLOB is 1 if you wish to have shell metacharacters expanded in filenames.
|
||||||
|
* This will generally work if your system provides the "popen" function
|
||||||
|
* and the "echo" shell command.
|
||||||
|
*/
|
||||||
|
#ifdef __DJGPP__
|
||||||
|
#define GLOB (!SECURE)
|
||||||
|
#else
|
||||||
|
#define GLOB 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PIPEC is 1 if you wish to have the "|" command
|
||||||
|
* which allows the user to pipe data into a shell command.
|
||||||
|
*/
|
||||||
|
#ifdef __DJGPP__
|
||||||
|
#define PIPEC (!SECURE)
|
||||||
|
#else
|
||||||
|
#define PIPEC 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LOGFILE is 1 if you wish to allow the -l option (to create log files).
|
||||||
|
*/
|
||||||
|
#define LOGFILE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GNU_OPTIONS is 1 if you wish to support the GNU-style command
|
||||||
|
* line options --help and --version.
|
||||||
|
*/
|
||||||
|
#define GNU_OPTIONS 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ONLY_RETURN is 1 if you want RETURN to be the only input which
|
||||||
|
* will continue past an error message.
|
||||||
|
* Otherwise, any key will continue past an error message.
|
||||||
|
*/
|
||||||
|
#define ONLY_RETURN 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LESSKEYFILE is the filename of the default lesskey output file
|
||||||
|
* (in the HOME directory).
|
||||||
|
* LESSKEYFILE_SYS is the filename of the system-wide lesskey output file.
|
||||||
|
* DEF_LESSKEYINFILE is the filename of the default lesskey input
|
||||||
|
* (in the HOME directory).
|
||||||
|
* LESSHISTFILE is the filename of the history file
|
||||||
|
* (in the HOME directory).
|
||||||
|
*/
|
||||||
|
#define LESSKEYFILE "_less"
|
||||||
|
#define LESSKEYFILE_SYS "c:\\_sysless"
|
||||||
|
#define DEF_LESSKEYINFILE "_lesskey"
|
||||||
|
#define LESSHISTFILE "_lesshst"
|
||||||
|
|
||||||
|
|
||||||
|
/* Settings always true for MS-DOS systems. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define MSDOS_COMPILER if compiling for MS-DOS.
|
||||||
|
*/
|
||||||
|
#ifdef __DJGPP__
|
||||||
|
#define MSDOS_COMPILER DJGPPC
|
||||||
|
#else
|
||||||
|
#ifdef __BORLANDC__
|
||||||
|
#define MSDOS_COMPILER BORLANDC
|
||||||
|
#else
|
||||||
|
#define MSDOS_COMPILER MSOFTC
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pathname separator character.
|
||||||
|
*/
|
||||||
|
#define PATHNAME_SEP "\\"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_SYS_TYPES_H is 1 if your system has <sys/types.h>.
|
||||||
|
*/
|
||||||
|
#define HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define if you have the <sgstat.h> header file.
|
||||||
|
*/
|
||||||
|
#define HAVE_SGSTAT_H 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_PERROR is 1 if your system has the perror() call.
|
||||||
|
* (Actually, if it has sys_errlist, sys_nerr and errno.)
|
||||||
|
*/
|
||||||
|
#define HAVE_PERROR 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_TIME is 1 if your system has the time() call.
|
||||||
|
*/
|
||||||
|
#define HAVE_TIME 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_SHELL is 1 if your system supports a SHELL command interpreter.
|
||||||
|
*/
|
||||||
|
#define HAVE_SHELL 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Default shell metacharacters and meta-escape character.
|
||||||
|
*/
|
||||||
|
#define DEF_METACHARS "; *?\t\n'\"()<>|&"
|
||||||
|
#define DEF_METAESCAPE ""
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_DUP is 1 if your system has the dup() call.
|
||||||
|
*/
|
||||||
|
#define HAVE_DUP 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sizes of various buffers.
|
||||||
|
*/
|
||||||
|
#define CMDBUF_SIZE 512 /* Buffer for multichar commands */
|
||||||
|
#define UNGOT_SIZE 100 /* Max chars to unget() */
|
||||||
|
#define LINEBUF_SIZE 1024 /* Max size of line in input file */
|
||||||
|
#define OUTBUF_SIZE 1024 /* Output buffer */
|
||||||
|
#define PROMPT_SIZE 200 /* Max size of prompt string */
|
||||||
|
#define TERMBUF_SIZE 2048 /* Termcap buffer for tgetent */
|
||||||
|
#define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */
|
||||||
|
#define TAGLINE_SIZE 512 /* Max size of line in tags file */
|
||||||
|
#define TABSTOP_MAX 32 /* Max number of custom tab stops */
|
||||||
|
|
||||||
|
/* Define to `long' if <sys/types.h> doesn't define. */
|
||||||
|
#if MSDOS_COMPILER==BORLANDC
|
||||||
|
#define off_t long
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Define if you need to in order for stat and other things to work. */
|
||||||
|
/* #undef _POSIX_SOURCE */
|
||||||
|
|
||||||
|
/* Define as the return type of signal handlers (int or void). */
|
||||||
|
#define RETSIGTYPE void
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Regular expression library.
|
||||||
|
* Define exactly one of the following to be 1:
|
||||||
|
* HAVE_POSIX_REGCOMP: POSIX regcomp() and regex.h
|
||||||
|
* HAVE_RE_COMP: BSD re_comp()
|
||||||
|
* HAVE_REGCMP: System V regcmp()
|
||||||
|
* HAVE_V8_REGCOMP: Henry Spencer V8 regcomp() and regexp.h
|
||||||
|
* NO_REGEX: pattern matching is supported, but without metacharacters.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_POSIX_REGCOMP */
|
||||||
|
/* #undef HAVE_RE_COMP */
|
||||||
|
/* #undef HAVE_REGCMP */
|
||||||
|
/* #undef HAVE_V8_REGCOMP */
|
||||||
|
#if MSDOS_COMPILER==DJGPPC
|
||||||
|
#define HAVE_POSIX_REGCOMP 1
|
||||||
|
#else
|
||||||
|
#define NO_REGEX 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Define HAVE_VOID if your compiler supports the "void" type. */
|
||||||
|
#define HAVE_VOID 1
|
||||||
|
|
||||||
|
/* Define HAVE_CONST if your compiler supports the "const" modifier. */
|
||||||
|
#define HAVE_CONST 1
|
||||||
|
|
||||||
|
/* Define HAVE_TIME_T if your system supports the "time_t" type. */
|
||||||
|
#define HAVE_TIME_T 1
|
||||||
|
|
||||||
|
/* Define HAVE_STRERROR if you have the strerror() function. */
|
||||||
|
#define HAVE_STRERROR 1
|
||||||
|
|
||||||
|
/* Define HAVE_FILENO if you have the fileno() macro. */
|
||||||
|
#define HAVE_FILENO 1
|
||||||
|
|
||||||
|
/* Define HAVE_ERRNO if you have the errno variable */
|
||||||
|
/* Define MUST_DEFINE_ERRNO if you have errno but it is not defined
|
||||||
|
* in errno.h */
|
||||||
|
#if MSDOS_COMPILER==MSOFTC || MSDOS_COMPILER==DJGPPC
|
||||||
|
#define HAVE_ERRNO 1
|
||||||
|
#define MUST_DEFINE_ERRNO 0
|
||||||
|
#else
|
||||||
|
#define HAVE_ERRNO 1
|
||||||
|
#define MUST_DEFINE_ERRNO 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Define HAVE_SYS_ERRLIST if you have the sys_errlist[] variable */
|
||||||
|
#define HAVE_SYS_ERRLIST 1
|
||||||
|
|
||||||
|
/* Define HAVE_OSPEED if your termcap library has the ospeed variable */
|
||||||
|
/* Define MUST_DEFINE_OSPEED if you have ospeed but it is not defined
|
||||||
|
* in termcap.h. */
|
||||||
|
#define HAVE_OSPEED 0
|
||||||
|
#define MUST_DEFINE_OSPEED 0
|
||||||
|
|
||||||
|
/* Define HAVE_LOCALE if you have locale.h and setlocale. */
|
||||||
|
#define HAVE_LOCALE 0
|
||||||
|
|
||||||
|
/* Define HAVE_TERMIOS_FUNCS if you have tcgetattr/tcsetattr */
|
||||||
|
#define HAVE_TERMIOS_FUNCS 0
|
||||||
|
|
||||||
|
/* Define HAVE_UPPER_LOWER if you have isupper, islower, toupper, tolower */
|
||||||
|
#define HAVE_UPPER_LOWER 1
|
||||||
|
|
||||||
|
/* Define if you have the _setjmp function. */
|
||||||
|
#if MSDOS_COMPILER==MSOFTC || MSDOS_COMPILER==DJGPPC
|
||||||
|
#define HAVE__SETJMP 0
|
||||||
|
#else
|
||||||
|
#define HAVE__SETJMP 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Define if you have the memcpy function. */
|
||||||
|
#define HAVE_MEMCPY 1
|
||||||
|
|
||||||
|
/* Define if you have the popen function. */
|
||||||
|
#if MSDOS_COMPILER==DJGPPC
|
||||||
|
#define HAVE_POPEN 1
|
||||||
|
#else
|
||||||
|
#define HAVE_POPEN 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Define if you have the sigsetmask function. */
|
||||||
|
#define HAVE_SIGSETMASK 0
|
||||||
|
|
||||||
|
/* Define if you have the sigprocmask function. */
|
||||||
|
#define HAVE_SIGPROCMASK 0
|
||||||
|
|
||||||
|
/* Define if you have the sigset_t type and sigemptyset macro */
|
||||||
|
#define HAVE_SIGSET_T 0
|
||||||
|
#define HAVE_SIGEMPTYSET 0
|
||||||
|
|
||||||
|
/* Define if you have the stat function. */
|
||||||
|
#define HAVE_STAT 1
|
||||||
|
|
||||||
|
/* Define if you have the strchr function. */
|
||||||
|
#define HAVE_STRCHR 1
|
||||||
|
|
||||||
|
/* Define if you have the system function. */
|
||||||
|
#define HAVE_SYSTEM 1
|
||||||
|
|
||||||
|
/* Define if you have the snprintf function. */
|
||||||
|
#define HAVE_SNPRINTF 0
|
||||||
|
|
||||||
|
/* Define if you have the <ctype.h> header file. */
|
||||||
|
#define HAVE_CTYPE_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <wctype.h> header file. */
|
||||||
|
#define HAVE_WCTYPE_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <errno.h> header file. */
|
||||||
|
#define HAVE_ERRNO_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <fcntl.h> header file. */
|
||||||
|
#define HAVE_FCNTL_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <limits.h> header file. */
|
||||||
|
#define HAVE_LIMITS_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <stdio.h> header file. */
|
||||||
|
#define HAVE_STDIO_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <stdlib> header file. */
|
||||||
|
#define HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <string.h> header file. */
|
||||||
|
#define HAVE_STRING_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <sys/ioctl.h> header file. */
|
||||||
|
#define HAVE_SYS_IOCTL_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <sys/ptem.h> header file. */
|
||||||
|
#define HAVE_SYS_PTEM_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <sys/stream.h> header file. */
|
||||||
|
#define HAVE_SYS_STREAM_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <termcap.h> header file. */
|
||||||
|
#define HAVE_TERMCAP_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <termio.h> header file. */
|
||||||
|
#define HAVE_TERMIO_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <termios.h> header file. */
|
||||||
|
#define HAVE_TERMIOS_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <time.h> header file. */
|
||||||
|
#define HAVE_TIME_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <unistd.h> header file. */
|
||||||
|
#if MSDOS_COMPILER==DJGPPC
|
||||||
|
#define HAVE_UNISTD_H 1
|
||||||
|
#else
|
||||||
|
#define HAVE_UNISTD_H 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Define if you have the <values.h> header file. */
|
||||||
|
#if MSDOS_COMPILER==MSOFTC
|
||||||
|
#define HAVE_VALUES_H 0
|
||||||
|
#else
|
||||||
|
#define HAVE_VALUES_H 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if MSDOS_COMPILER == MSOFTC && _MSC_VER >= 700
|
||||||
|
/*
|
||||||
|
* The names of these things changed in Microsoft C version 7.0.
|
||||||
|
*/
|
||||||
|
#define videoconfig _videoconfig
|
||||||
|
#define rccoord _rccoord
|
||||||
|
#define O_RDONLY _O_RDONLY
|
||||||
|
#define O_WRONLY _O_WRONLY
|
||||||
|
#define O_APPEND _O_APPEND
|
||||||
|
#define O_BINARY _O_BINARY
|
||||||
|
#define O_TEXT _O_TEXT
|
||||||
|
#define find_t _find_t
|
||||||
|
#define stat _stat
|
||||||
|
#define S_IFMT _S_IFMT
|
||||||
|
#define S_IFDIR _S_IFDIR
|
||||||
|
#define S_IFREG _S_IFREG
|
||||||
|
#define dup _dup
|
||||||
|
#define open _open
|
||||||
|
#define lseek _lseek
|
||||||
|
#define write _write
|
||||||
|
#define creat _creat
|
||||||
|
#define fstat _fstat
|
||||||
|
#define isatty _isatty
|
||||||
|
#define close _close
|
||||||
|
#define read _read
|
||||||
|
#define ungetch _ungetch
|
||||||
|
#define kbhit _kbhit
|
||||||
|
#define getch _getch
|
||||||
|
#endif
|
|
@ -1,6 +1,6 @@
|
||||||
/* $NetBSD: defines.h,v 1.7 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: defines.h,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
/* defines.h. Generated by configure. */
|
/* defines.h. Generated from defines.h.in by configure. */
|
||||||
/* defines.h.in. Generated from configure.ac by autoheader. */
|
/* defines.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
|
||||||
|
@ -130,6 +130,12 @@
|
||||||
*/
|
*/
|
||||||
#define PATHNAME_SEP "/"
|
#define PATHNAME_SEP "/"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The value returned from tgetent on success.
|
||||||
|
* Some HP-UX systems return 0 on success.
|
||||||
|
*/
|
||||||
|
#define TGETENT_OK 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* HAVE_SYS_TYPES_H is 1 if your system has <sys/types.h>.
|
* HAVE_SYS_TYPES_H is 1 if your system has <sys/types.h>.
|
||||||
*/
|
*/
|
||||||
|
@ -159,7 +165,7 @@
|
||||||
/*
|
/*
|
||||||
* Default shell metacharacters and meta-escape character.
|
* Default shell metacharacters and meta-escape character.
|
||||||
*/
|
*/
|
||||||
#define DEF_METACHARS "; *?\t\n'\"()<>[]|&^`#\\"
|
#define DEF_METACHARS "; *?\t\n'\"()<>[]|&^`#\\$%=~"
|
||||||
#define DEF_METAESCAPE "\\"
|
#define DEF_METAESCAPE "\\"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -167,6 +173,15 @@
|
||||||
*/
|
*/
|
||||||
#define HAVE_DUP 1
|
#define HAVE_DUP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the memcpy() function. */
|
||||||
|
#define HAVE_MEMCPY 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the strchr() function. */
|
||||||
|
#define HAVE_STRCHR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the strstr() function. */
|
||||||
|
#define HAVE_STRSTR 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sizes of various buffers.
|
* Sizes of various buffers.
|
||||||
*/
|
*/
|
||||||
|
@ -207,6 +222,9 @@
|
||||||
/* Define HAVE_FILENO if you have the fileno() macro. */
|
/* Define HAVE_FILENO if you have the fileno() macro. */
|
||||||
#define HAVE_FILENO 1
|
#define HAVE_FILENO 1
|
||||||
|
|
||||||
|
/* Define HAVE_FLOAT if your compiler supports the "double" type. */
|
||||||
|
#define HAVE_FLOAT 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `fsync' function. */
|
/* Define to 1 if you have the `fsync' function. */
|
||||||
#define HAVE_FSYNC 1
|
#define HAVE_FSYNC 1
|
||||||
|
|
||||||
|
@ -226,16 +244,13 @@
|
||||||
#define HAVE_LIMITS_H 1
|
#define HAVE_LIMITS_H 1
|
||||||
|
|
||||||
/* Define HAVE_LOCALE if you have locale.h and setlocale. */
|
/* Define HAVE_LOCALE if you have locale.h and setlocale. */
|
||||||
#define HAVE_LOCALE 0
|
#define HAVE_LOCALE 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `memcpy' function. */
|
|
||||||
#define HAVE_MEMCPY 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <memory.h> header file. */
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
#define HAVE_MEMORY_H 1
|
#define HAVE_MEMORY_H 1
|
||||||
|
|
||||||
/* Define HAVE_OSPEED if your termcap library has the ospeed variable. */
|
/* Define HAVE_OSPEED if your termcap library has the ospeed variable. */
|
||||||
#define HAVE_OSPEED 0
|
#define HAVE_OSPEED 1
|
||||||
|
|
||||||
/* PCRE (Perl-compatible regular expression) library */
|
/* PCRE (Perl-compatible regular expression) library */
|
||||||
/* #undef HAVE_PCRE */
|
/* #undef HAVE_PCRE */
|
||||||
|
@ -264,7 +279,7 @@
|
||||||
/* Define to 1 if you have the `sigsetmask' function. */
|
/* Define to 1 if you have the `sigsetmask' function. */
|
||||||
#define HAVE_SIGSETMASK 1
|
#define HAVE_SIGSETMASK 1
|
||||||
|
|
||||||
/* Define HAVE_SIGSET_T you have the sigset_t type. */
|
/* Define to 1 if the system has the type `sigset_t'. */
|
||||||
#define HAVE_SIGSET_T 1
|
#define HAVE_SIGSET_T 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `snprintf' function. */
|
/* Define to 1 if you have the `snprintf' function. */
|
||||||
|
@ -273,6 +288,9 @@
|
||||||
/* Define to 1 if you have the `stat' function. */
|
/* Define to 1 if you have the `stat' function. */
|
||||||
#define HAVE_STAT 1
|
#define HAVE_STAT 1
|
||||||
|
|
||||||
|
/* Define HAVE_STAT_INO if your struct stat has st_ino and st_dev. */
|
||||||
|
#define HAVE_STAT_INO 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdint.h> header file. */
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
#define HAVE_STDINT_H 1
|
#define HAVE_STDINT_H 1
|
||||||
|
|
||||||
|
@ -282,9 +300,6 @@
|
||||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
#define HAVE_STDLIB_H 1
|
#define HAVE_STDLIB_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `strchr' function. */
|
|
||||||
#define HAVE_STRCHR 1
|
|
||||||
|
|
||||||
/* Define HAVE_STRERROR if you have the strerror() function. */
|
/* Define HAVE_STRERROR if you have the strerror() function. */
|
||||||
#define HAVE_STRERROR 1
|
#define HAVE_STRERROR 1
|
||||||
|
|
||||||
|
@ -294,9 +309,6 @@
|
||||||
/* Define to 1 if you have the <string.h> header file. */
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
#define HAVE_STRING_H 1
|
#define HAVE_STRING_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `strstr' function. */
|
|
||||||
#define HAVE_STRSTR 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `system' function. */
|
/* Define to 1 if you have the `system' function. */
|
||||||
#define HAVE_SYSTEM 1
|
#define HAVE_SYSTEM 1
|
||||||
|
|
||||||
|
@ -306,9 +318,6 @@
|
||||||
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||||
#define HAVE_SYS_IOCTL_H 1
|
#define HAVE_SYS_IOCTL_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/ptem.h> header file. */
|
|
||||||
/* #undef HAVE_SYS_PTEM_H */
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
#define HAVE_SYS_STAT_H 1
|
#define HAVE_SYS_STAT_H 1
|
||||||
|
|
||||||
|
@ -351,6 +360,12 @@
|
||||||
/* Define HAVE_VOID if your compiler supports the "void" type. */
|
/* Define HAVE_VOID if your compiler supports the "void" type. */
|
||||||
#define HAVE_VOID 1
|
#define HAVE_VOID 1
|
||||||
|
|
||||||
|
/* Define HAVE_WCTYPE if you have iswupper, iswlower, towupper, towlower. */
|
||||||
|
#define HAVE_WCTYPE 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <wctype.h> header file. */
|
||||||
|
#define HAVE_WCTYPE_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `_setjmp' function. */
|
/* Define to 1 if you have the `_setjmp' function. */
|
||||||
#define HAVE__SETJMP 1
|
#define HAVE__SETJMP 1
|
||||||
|
|
||||||
|
@ -377,6 +392,9 @@
|
||||||
/* Define to the one symbol short name of this package. */
|
/* Define to the one symbol short name of this package. */
|
||||||
#define PACKAGE_TARNAME "less"
|
#define PACKAGE_TARNAME "less"
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#define PACKAGE_URL ""
|
||||||
|
|
||||||
/* Define to the version of this package. */
|
/* Define to the version of this package. */
|
||||||
#define PACKAGE_VERSION "1"
|
#define PACKAGE_VERSION "1"
|
||||||
|
|
||||||
|
@ -404,8 +422,8 @@
|
||||||
/* Define to empty if `const' does not conform to ANSI C. */
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
/* #undef const */
|
/* #undef const */
|
||||||
|
|
||||||
/* Define to `long' if <sys/types.h> does not define. */
|
/* Define to `long int' if <sys/types.h> does not define. */
|
||||||
/* #undef off_t */
|
/* #undef off_t */
|
||||||
|
|
||||||
/* Define to `unsigned' if <sys/types.h> does not define. */
|
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||||
/* #undef size_t */
|
/* #undef size_t */
|
426
external/bsd/less/dist/defines.h.in
vendored
Normal file
426
external/bsd/less/dist/defines.h.in
vendored
Normal file
|
@ -0,0 +1,426 @@
|
||||||
|
/* defines.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
|
|
||||||
|
/* Unix definition file for less. -*- C -*-
|
||||||
|
*
|
||||||
|
* This file has 3 sections:
|
||||||
|
* User preferences.
|
||||||
|
* Settings always true on Unix.
|
||||||
|
* Settings automatically determined by configure.
|
||||||
|
*
|
||||||
|
* * * * * * WARNING * * * * * *
|
||||||
|
* If you edit defines.h by hand, do "touch stamp-h" before you run make
|
||||||
|
* so config.status doesn't overwrite your changes.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* User preferences. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SECURE is 1 if you wish to disable a bunch of features in order to
|
||||||
|
* be safe to run by unprivileged users.
|
||||||
|
* SECURE_COMPILE is set by the --with-secure configure option.
|
||||||
|
*/
|
||||||
|
#define SECURE SECURE_COMPILE
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SHELL_ESCAPE is 1 if you wish to allow shell escapes.
|
||||||
|
* (This is possible only if your system supplies the system() function.)
|
||||||
|
*/
|
||||||
|
#define SHELL_ESCAPE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EXAMINE is 1 if you wish to allow examining files by name from within less.
|
||||||
|
*/
|
||||||
|
#define EXAMINE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAB_COMPLETE_FILENAME is 1 if you wish to allow the TAB key
|
||||||
|
* to complete filenames at prompts.
|
||||||
|
*/
|
||||||
|
#define TAB_COMPLETE_FILENAME (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CMD_HISTORY is 1 if you wish to allow keys to cycle through
|
||||||
|
* previous commands at prompts.
|
||||||
|
*/
|
||||||
|
#define CMD_HISTORY 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HILITE_SEARCH is 1 if you wish to have search targets to be
|
||||||
|
* displayed in standout mode.
|
||||||
|
*/
|
||||||
|
#define HILITE_SEARCH 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EDITOR is 1 if you wish to allow editor invocation (the "v" command).
|
||||||
|
* (This is possible only if your system supplies the system() function.)
|
||||||
|
* EDIT_PGM is the name of the (default) editor to be invoked.
|
||||||
|
*/
|
||||||
|
#define EDITOR (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAGS is 1 if you wish to support tag files.
|
||||||
|
*/
|
||||||
|
#define TAGS (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* USERFILE is 1 if you wish to allow a .less file to specify
|
||||||
|
* user-defined key bindings.
|
||||||
|
*/
|
||||||
|
#define USERFILE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLOB is 1 if you wish to have shell metacharacters expanded in filenames.
|
||||||
|
* This will generally work if your system provides the "popen" function
|
||||||
|
* and the "echo" shell command.
|
||||||
|
*/
|
||||||
|
#define GLOB (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PIPEC is 1 if you wish to have the "|" command
|
||||||
|
* which allows the user to pipe data into a shell command.
|
||||||
|
*/
|
||||||
|
#define PIPEC (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LOGFILE is 1 if you wish to allow the -l option (to create log files).
|
||||||
|
*/
|
||||||
|
#define LOGFILE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GNU_OPTIONS is 1 if you wish to support the GNU-style command
|
||||||
|
* line options --help and --version.
|
||||||
|
*/
|
||||||
|
#define GNU_OPTIONS 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ONLY_RETURN is 1 if you want RETURN to be the only input which
|
||||||
|
* will continue past an error message.
|
||||||
|
* Otherwise, any key will continue past an error message.
|
||||||
|
*/
|
||||||
|
#define ONLY_RETURN 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LESSKEYFILE is the filename of the default lesskey output file
|
||||||
|
* (in the HOME directory).
|
||||||
|
* LESSKEYFILE_SYS is the filename of the system-wide lesskey output file.
|
||||||
|
* DEF_LESSKEYINFILE is the filename of the default lesskey input
|
||||||
|
* (in the HOME directory).
|
||||||
|
* LESSHISTFILE is the filename of the history file
|
||||||
|
* (in the HOME directory).
|
||||||
|
*/
|
||||||
|
#define LESSKEYFILE ".less"
|
||||||
|
#define LESSKEYFILE_SYS SYSDIR "/sysless"
|
||||||
|
#define DEF_LESSKEYINFILE ".lesskey"
|
||||||
|
#define LESSHISTFILE ".lesshst"
|
||||||
|
|
||||||
|
|
||||||
|
/* Settings always true on Unix. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define MSDOS_COMPILER if compiling under Microsoft C.
|
||||||
|
*/
|
||||||
|
#define MSDOS_COMPILER 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pathname separator character.
|
||||||
|
*/
|
||||||
|
#define PATHNAME_SEP "/"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The value returned from tgetent on success.
|
||||||
|
* Some HP-UX systems return 0 on success.
|
||||||
|
*/
|
||||||
|
#define TGETENT_OK 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_SYS_TYPES_H is 1 if your system has <sys/types.h>.
|
||||||
|
*/
|
||||||
|
#define HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define if you have the <sgstat.h> header file.
|
||||||
|
*/
|
||||||
|
#undef HAVE_SGSTAT_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_PERROR is 1 if your system has the perror() call.
|
||||||
|
* (Actually, if it has sys_errlist, sys_nerr and errno.)
|
||||||
|
*/
|
||||||
|
#define HAVE_PERROR 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_TIME is 1 if your system has the time() call.
|
||||||
|
*/
|
||||||
|
#define HAVE_TIME 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_SHELL is 1 if your system supports a SHELL command interpreter.
|
||||||
|
*/
|
||||||
|
#define HAVE_SHELL 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Default shell metacharacters and meta-escape character.
|
||||||
|
*/
|
||||||
|
#define DEF_METACHARS "; *?\t\n'\"()<>[]|&^`#\\$%=~"
|
||||||
|
#define DEF_METAESCAPE "\\"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_DUP is 1 if your system has the dup() call.
|
||||||
|
*/
|
||||||
|
#define HAVE_DUP 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the memcpy() function. */
|
||||||
|
#define HAVE_MEMCPY 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the strchr() function. */
|
||||||
|
#define HAVE_STRCHR 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the strstr() function. */
|
||||||
|
#define HAVE_STRSTR 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sizes of various buffers.
|
||||||
|
*/
|
||||||
|
#define CMDBUF_SIZE 512 /* Buffer for multichar commands */
|
||||||
|
#define UNGOT_SIZE 100 /* Max chars to unget() */
|
||||||
|
#define LINEBUF_SIZE 1024 /* Max size of line in input file */
|
||||||
|
#define OUTBUF_SIZE 1024 /* Output buffer */
|
||||||
|
#define PROMPT_SIZE 200 /* Max size of prompt string */
|
||||||
|
#define TERMBUF_SIZE 2048 /* Termcap buffer for tgetent */
|
||||||
|
#define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */
|
||||||
|
#define TAGLINE_SIZE 512 /* Max size of line in tags file */
|
||||||
|
#define TABSTOP_MAX 32 /* Max number of custom tab stops */
|
||||||
|
|
||||||
|
/* Settings automatically determined by configure. */
|
||||||
|
|
||||||
|
|
||||||
|
/* Define EDIT_PGM to your editor. */
|
||||||
|
#undef EDIT_PGM
|
||||||
|
|
||||||
|
/* Define HAVE_CONST if your compiler supports the "const" modifier. */
|
||||||
|
#undef HAVE_CONST
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <ctype.h> header file. */
|
||||||
|
#undef HAVE_CTYPE_H
|
||||||
|
|
||||||
|
/* Define HAVE_ERRNO if you have the errno variable. */
|
||||||
|
#undef HAVE_ERRNO
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <errno.h> header file. */
|
||||||
|
#undef HAVE_ERRNO_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fchmod' function. */
|
||||||
|
#undef HAVE_FCHMOD
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||||
|
#undef HAVE_FCNTL_H
|
||||||
|
|
||||||
|
/* Define HAVE_FILENO if you have the fileno() macro. */
|
||||||
|
#undef HAVE_FILENO
|
||||||
|
|
||||||
|
/* Define HAVE_FLOAT if your compiler supports the "double" type. */
|
||||||
|
#undef HAVE_FLOAT
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `fsync' function. */
|
||||||
|
#undef HAVE_FSYNC
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
|
#undef HAVE_INTTYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `gen' library (-lgen). */
|
||||||
|
#undef HAVE_LIBGEN
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `intl' library (-lintl). */
|
||||||
|
#undef HAVE_LIBINTL
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `PW' library (-lPW). */
|
||||||
|
#undef HAVE_LIBPW
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <limits.h> header file. */
|
||||||
|
#undef HAVE_LIMITS_H
|
||||||
|
|
||||||
|
/* Define HAVE_LOCALE if you have locale.h and setlocale. */
|
||||||
|
#undef HAVE_LOCALE
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
|
#undef HAVE_MEMORY_H
|
||||||
|
|
||||||
|
/* Define HAVE_OSPEED if your termcap library has the ospeed variable. */
|
||||||
|
#undef HAVE_OSPEED
|
||||||
|
|
||||||
|
/* PCRE (Perl-compatible regular expression) library */
|
||||||
|
#undef HAVE_PCRE
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `popen' function. */
|
||||||
|
#undef HAVE_POPEN
|
||||||
|
|
||||||
|
/* POSIX regcomp() and regex.h */
|
||||||
|
#undef HAVE_POSIX_REGCOMP
|
||||||
|
|
||||||
|
/* System V regcmp() */
|
||||||
|
#undef HAVE_REGCMP
|
||||||
|
|
||||||
|
/* */
|
||||||
|
#undef HAVE_REGEXEC2
|
||||||
|
|
||||||
|
/* BSD re_comp() */
|
||||||
|
#undef HAVE_RE_COMP
|
||||||
|
|
||||||
|
/* Define HAVE_SIGEMPTYSET if you have the sigemptyset macro. */
|
||||||
|
#undef HAVE_SIGEMPTYSET
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sigprocmask' function. */
|
||||||
|
#undef HAVE_SIGPROCMASK
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `sigsetmask' function. */
|
||||||
|
#undef HAVE_SIGSETMASK
|
||||||
|
|
||||||
|
/* Define to 1 if the system has the type `sigset_t'. */
|
||||||
|
#undef HAVE_SIGSET_T
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `snprintf' function. */
|
||||||
|
#undef HAVE_SNPRINTF
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `stat' function. */
|
||||||
|
#undef HAVE_STAT
|
||||||
|
|
||||||
|
/* Define HAVE_STAT_INO if your struct stat has st_ino and st_dev. */
|
||||||
|
#undef HAVE_STAT_INO
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdint.h> header file. */
|
||||||
|
#undef HAVE_STDINT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdio.h> header file. */
|
||||||
|
#undef HAVE_STDIO_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||||
|
#undef HAVE_STDLIB_H
|
||||||
|
|
||||||
|
/* Define HAVE_STRERROR if you have the strerror() function. */
|
||||||
|
#undef HAVE_STRERROR
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <strings.h> header file. */
|
||||||
|
#undef HAVE_STRINGS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <string.h> header file. */
|
||||||
|
#undef HAVE_STRING_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `system' function. */
|
||||||
|
#undef HAVE_SYSTEM
|
||||||
|
|
||||||
|
/* Define HAVE_SYS_ERRLIST if you have the sys_errlist[] variable. */
|
||||||
|
#undef HAVE_SYS_ERRLIST
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/ioctl.h> header file. */
|
||||||
|
#undef HAVE_SYS_IOCTL_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||||
|
#undef HAVE_SYS_STAT_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/stream.h> header file. */
|
||||||
|
#undef HAVE_SYS_STREAM_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||||
|
#undef HAVE_SYS_TYPES_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <termcap.h> header file. */
|
||||||
|
#undef HAVE_TERMCAP_H
|
||||||
|
|
||||||
|
/* Define HAVE_TERMIOS_FUNCS if you have tcgetattr/tcsetattr. */
|
||||||
|
#undef HAVE_TERMIOS_FUNCS
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <termios.h> header file. */
|
||||||
|
#undef HAVE_TERMIOS_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <termio.h> header file. */
|
||||||
|
#undef HAVE_TERMIO_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <time.h> header file. */
|
||||||
|
#undef HAVE_TIME_H
|
||||||
|
|
||||||
|
/* Define HAVE_TIME_T if your system supports the "time_t" type. */
|
||||||
|
#undef HAVE_TIME_T
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <unistd.h> header file. */
|
||||||
|
#undef HAVE_UNISTD_H
|
||||||
|
|
||||||
|
/* Define HAVE_UPPER_LOWER if you have isupper, islower, toupper, tolower. */
|
||||||
|
#undef HAVE_UPPER_LOWER
|
||||||
|
|
||||||
|
/* Henry Spencer V8 regcomp() and regexp.h */
|
||||||
|
#undef HAVE_V8_REGCOMP
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <values.h> header file. */
|
||||||
|
#undef HAVE_VALUES_H
|
||||||
|
|
||||||
|
/* Define HAVE_VOID if your compiler supports the "void" type. */
|
||||||
|
#undef HAVE_VOID
|
||||||
|
|
||||||
|
/* Define HAVE_WCTYPE if you have iswupper, iswlower, towupper, towlower. */
|
||||||
|
#undef HAVE_WCTYPE
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <wctype.h> header file. */
|
||||||
|
#undef HAVE_WCTYPE_H
|
||||||
|
|
||||||
|
/* Define to 1 if you have the `_setjmp' function. */
|
||||||
|
#undef HAVE__SETJMP
|
||||||
|
|
||||||
|
/* Define MUST_DEFINE_ERRNO if you have errno but it is not define in errno.h.
|
||||||
|
*/
|
||||||
|
#undef MUST_DEFINE_ERRNO
|
||||||
|
|
||||||
|
/* Define MUST_DEFINE_OSPEED if you have ospeed but it is not defined in
|
||||||
|
termcap.h. */
|
||||||
|
#undef MUST_DEFINE_OSPEED
|
||||||
|
|
||||||
|
/* pattern matching is supported, but without metacharacters. */
|
||||||
|
#undef NO_REGEX
|
||||||
|
|
||||||
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
|
#undef PACKAGE_BUGREPORT
|
||||||
|
|
||||||
|
/* Define to the full name of this package. */
|
||||||
|
#undef PACKAGE_NAME
|
||||||
|
|
||||||
|
/* Define to the full name and version of this package. */
|
||||||
|
#undef PACKAGE_STRING
|
||||||
|
|
||||||
|
/* Define to the one symbol short name of this package. */
|
||||||
|
#undef PACKAGE_TARNAME
|
||||||
|
|
||||||
|
/* Define to the home page for this package. */
|
||||||
|
#undef PACKAGE_URL
|
||||||
|
|
||||||
|
/* Define to the version of this package. */
|
||||||
|
#undef PACKAGE_VERSION
|
||||||
|
|
||||||
|
/* Define as the return type of signal handlers (`int' or `void'). */
|
||||||
|
#undef RETSIGTYPE
|
||||||
|
|
||||||
|
/* Define SECURE_COMPILE=1 to build a secure version of less. */
|
||||||
|
#undef SECURE_COMPILE
|
||||||
|
|
||||||
|
/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
|
||||||
|
#undef STAT_MACROS_BROKEN
|
||||||
|
|
||||||
|
/* Define to 1 if you have the ANSI C header files. */
|
||||||
|
#undef STDC_HEADERS
|
||||||
|
|
||||||
|
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||||
|
#undef TIME_WITH_SYS_TIME
|
||||||
|
|
||||||
|
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||||
|
#undef _FILE_OFFSET_BITS
|
||||||
|
|
||||||
|
/* Define for large files, on AIX-style hosts. */
|
||||||
|
#undef _LARGE_FILES
|
||||||
|
|
||||||
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
|
#undef const
|
||||||
|
|
||||||
|
/* Define to `long int' if <sys/types.h> does not define. */
|
||||||
|
#undef off_t
|
||||||
|
|
||||||
|
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||||
|
#undef size_t
|
328
external/bsd/less/dist/defines.o2
vendored
Normal file
328
external/bsd/less/dist/defines.o2
vendored
Normal file
|
@ -0,0 +1,328 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
|
*
|
||||||
|
* You may distribute under the terms of either the GNU General Public
|
||||||
|
* License or the Less License, as specified in the README file.
|
||||||
|
*
|
||||||
|
* For more information about less, or for information on how to
|
||||||
|
* contact the author, see the README file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* OS/2 definition file for less. */
|
||||||
|
/*
|
||||||
|
* This file has 2 sections:
|
||||||
|
* User preferences.
|
||||||
|
* Settings always true for the emx compiler for OS/2 systems.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* User preferences. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SECURE is 1 if you wish to disable a bunch of features in order to
|
||||||
|
* be safe to run by unprivileged users.
|
||||||
|
*/
|
||||||
|
#define SECURE 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SHELL_ESCAPE is 1 if you wish to allow shell escapes.
|
||||||
|
* (This is possible only if your system supplies the system() function.)
|
||||||
|
*/
|
||||||
|
#define SHELL_ESCAPE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EXAMINE is 1 if you wish to allow examining files by name from within less.
|
||||||
|
*/
|
||||||
|
#define EXAMINE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAB_COMPLETE_FILENAME is 1 if you wish to allow the TAB key
|
||||||
|
* to complete filenames at prompts.
|
||||||
|
*/
|
||||||
|
#define TAB_COMPLETE_FILENAME (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CMD_HISTORY is 1 if you wish to allow keys to cycle through
|
||||||
|
* previous commands at prompts.
|
||||||
|
*/
|
||||||
|
#define CMD_HISTORY 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HILITE_SEARCH is 1 if you wish to have search targets to be
|
||||||
|
* displayed in standout mode.
|
||||||
|
*/
|
||||||
|
#define HILITE_SEARCH 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EDITOR is 1 if you wish to allow editor invocation (the "v" command).
|
||||||
|
* (This is possible only if your system supplies the system() function.)
|
||||||
|
* EDIT_PGM is the name of the (default) editor to be invoked.
|
||||||
|
*/
|
||||||
|
#define EDITOR (!SECURE)
|
||||||
|
#define EDIT_PGM "vi"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAGS is 1 if you wish to support tag files.
|
||||||
|
*/
|
||||||
|
#define TAGS (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* USERFILE is 1 if you wish to allow a .less file to specify
|
||||||
|
* user-defined key bindings.
|
||||||
|
*/
|
||||||
|
#define USERFILE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLOB is 1 if you wish to have shell metacharacters expanded in filenames.
|
||||||
|
* This will generally work if your system provides the "popen" function
|
||||||
|
* and the "echo" shell command.
|
||||||
|
*/
|
||||||
|
#define GLOB (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PIPEC is 1 if you wish to have the "|" command
|
||||||
|
* which allows the user to pipe data into a shell command.
|
||||||
|
*/
|
||||||
|
#define PIPEC (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LOGFILE is 1 if you wish to allow the -l option (to create log files).
|
||||||
|
*/
|
||||||
|
#define LOGFILE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GNU_OPTIONS is 1 if you wish to support the GNU-style command
|
||||||
|
* line options --help and --version.
|
||||||
|
*/
|
||||||
|
#define GNU_OPTIONS 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ONLY_RETURN is 1 if you want RETURN to be the only input which
|
||||||
|
* will continue past an error message.
|
||||||
|
* Otherwise, any key will continue past an error message.
|
||||||
|
*/
|
||||||
|
#define ONLY_RETURN 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LESSKEYFILE is the filename of the default lesskey output file
|
||||||
|
* (in the HOME directory).
|
||||||
|
* LESSKEYFILE_SYS is the filename of the system-wide lesskey output file.
|
||||||
|
* DEF_LESSKEYINFILE is the filename of the default lesskey input
|
||||||
|
* (in the HOME directory).
|
||||||
|
* LESSHISTFILE is the filename of the history file
|
||||||
|
* (in the HOME directory).
|
||||||
|
*/
|
||||||
|
#define LESSKEYFILE "less.ini"
|
||||||
|
#define LESSKEYFILE_SYS "C:\\sysless.ini"
|
||||||
|
#define DEF_LESSKEYINFILE "lesskey.ini"
|
||||||
|
#define LESSHISTFILE "lesshst.ini"
|
||||||
|
|
||||||
|
|
||||||
|
/* Settings always true for the emx compiler for OS/2 systems. */
|
||||||
|
#define OS2 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pathname separator character.
|
||||||
|
*/
|
||||||
|
#define PATHNAME_SEP "\\"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_SYS_TYPES_H is 1 if your system has <sys/types.h>.
|
||||||
|
*/
|
||||||
|
#define HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define if you have the <sgstat.h> header file.
|
||||||
|
*/
|
||||||
|
#define HAVE_SGSTAT_H 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_PERROR is 1 if your system has the perror() call.
|
||||||
|
* (Actually, if it has sys_errlist, sys_nerr and errno.)
|
||||||
|
*/
|
||||||
|
#define HAVE_PERROR 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_TIME is 1 if your system has the time() call.
|
||||||
|
*/
|
||||||
|
#define HAVE_TIME 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_SHELL is 1 if your system supports a SHELL command interpreter.
|
||||||
|
*/
|
||||||
|
#define HAVE_SHELL 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Default shell metacharacters and meta-escape character.
|
||||||
|
*/
|
||||||
|
#define DEF_METACHARS "; *?\t\n'\"()<>|&"
|
||||||
|
#define DEF_METAESCAPE ""
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_DUP is 1 if your system has the dup() call.
|
||||||
|
*/
|
||||||
|
#define HAVE_DUP 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sizes of various buffers.
|
||||||
|
*/
|
||||||
|
#define CMDBUF_SIZE 512 /* Buffer for multichar commands */
|
||||||
|
#define UNGOT_SIZE 100 /* Max chars to unget() */
|
||||||
|
#define LINEBUF_SIZE 1024 /* Max size of line in input file */
|
||||||
|
#define OUTBUF_SIZE 1024 /* Output buffer */
|
||||||
|
#define PROMPT_SIZE 200 /* Max size of prompt string */
|
||||||
|
#define TERMBUF_SIZE 2048 /* Termcap buffer for tgetent */
|
||||||
|
#define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */
|
||||||
|
#define TAGLINE_SIZE 512 /* Max size of line in tags file */
|
||||||
|
#define TABSTOP_MAX 32 /* Max number of custom tab stops */
|
||||||
|
|
||||||
|
/* Define to `long' if <sys/types.h> doesn't define. */
|
||||||
|
/* #define off_t long */
|
||||||
|
|
||||||
|
/* Define if you need to in order for stat and other things to work. */
|
||||||
|
/* #undef _POSIX_SOURCE */
|
||||||
|
|
||||||
|
/* Define as the return type of signal handlers (int or void). */
|
||||||
|
#define RETSIGTYPE void
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Regular expression library.
|
||||||
|
* Define exactly one of the following to be 1:
|
||||||
|
* HAVE_POSIX_REGCOMP: POSIX regcomp() and regex.h
|
||||||
|
* HAVE_RE_COMP: BSD re_comp()
|
||||||
|
* HAVE_REGCMP: System V regcmp()
|
||||||
|
* HAVE_V8_REGCOMP: Henry Spencer V8 regcomp() and regexp.h
|
||||||
|
* NO_REGEX: pattern matching is supported, but without metacharacters.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_POSIX_REGCOMP */
|
||||||
|
/* #undef HAVE_RE_COMP */
|
||||||
|
/* #undef HAVE_REGCMP */
|
||||||
|
#define HAVE_V8_REGCOMP 1
|
||||||
|
/* #undef NO_REGEX */
|
||||||
|
#define HAVE_REGEXEC2 1
|
||||||
|
|
||||||
|
/* Define HAVE_VOID if your compiler supports the "void" type. */
|
||||||
|
#define HAVE_VOID 1
|
||||||
|
|
||||||
|
/* Define HAVE_CONST if your compiler supports the "const" modifier. */
|
||||||
|
#define HAVE_CONST 1
|
||||||
|
|
||||||
|
/* Define HAVE_TIME_T if your system supports the "time_t" type. */
|
||||||
|
#define HAVE_TIME_T 1
|
||||||
|
|
||||||
|
/* Define HAVE_STRERROR if you have the strerror() function. */
|
||||||
|
#define HAVE_STRERROR 1
|
||||||
|
|
||||||
|
/* Define HAVE_FILENO if you have the fileno() macro. */
|
||||||
|
#define HAVE_FILENO 1
|
||||||
|
|
||||||
|
/* Define HAVE_ERRNO if you have the errno variable */
|
||||||
|
/* Define MUST_DEFINE_ERRNO if you have errno but it is not define
|
||||||
|
* in errno.h */
|
||||||
|
#define HAVE_ERRNO 1
|
||||||
|
/* #undef MUST_DEFINE_ERRNO */
|
||||||
|
|
||||||
|
/* Define HAVE_SYS_ERRLIST if you have the sys_errlist[] variable */
|
||||||
|
#define HAVE_SYS_ERRLIST 1
|
||||||
|
|
||||||
|
/* Define HAVE_OSPEED if your termcap library has the ospeed variable */
|
||||||
|
#define HAVE_OSPEED 1
|
||||||
|
/* Define MUST_DEFINE_OSPEED if you have ospeed but it is not defined
|
||||||
|
* in termcap.h. */
|
||||||
|
#define MUST_DEFINE_OSPEED 0
|
||||||
|
|
||||||
|
/* Define HAVE_LOCALE if you have locale.h and setlocale. */
|
||||||
|
#define HAVE_LOCALE 1
|
||||||
|
|
||||||
|
/* Define HAVE_TERMIOS_FUNCS if you have tcgetattr/tcsetattr */
|
||||||
|
#define HAVE_TERMIOS_FUNCS 1
|
||||||
|
|
||||||
|
/* Define HAVE_UPPER_LOWER if you have isupper, islower, toupper, tolower */
|
||||||
|
#define HAVE_UPPER_LOWER 1
|
||||||
|
|
||||||
|
/* Define if you have the _setjmp function. */
|
||||||
|
#define HAVE__SETJMP 0
|
||||||
|
|
||||||
|
/* Define if you have the memcpy function. */
|
||||||
|
#define HAVE_MEMCPY 1
|
||||||
|
|
||||||
|
/* Define if you have the popen function. */
|
||||||
|
#define HAVE_POPEN 1
|
||||||
|
|
||||||
|
/* Define if you have the sigsetmask function. */
|
||||||
|
#define HAVE_SIGSETMASK 0
|
||||||
|
|
||||||
|
/* Define if you have the sigprocmask function. */
|
||||||
|
#define HAVE_SIGPROCMASK 1
|
||||||
|
|
||||||
|
/* Define if you have the sigset_t type and sigemptyset macro */
|
||||||
|
#define HAVE_SIGSET_T 1
|
||||||
|
#define HAVE_SIGEMPTYSET 1
|
||||||
|
|
||||||
|
/* Define if you have the stat function. */
|
||||||
|
#define HAVE_STAT 1
|
||||||
|
|
||||||
|
/* Define if you have the strchr function. */
|
||||||
|
#define HAVE_STRCHR 1
|
||||||
|
|
||||||
|
/* Define if you have the strstr function. */
|
||||||
|
#define HAVE_STRSTR 1
|
||||||
|
|
||||||
|
/* Define if you have the system function. */
|
||||||
|
#define HAVE_SYSTEM 1
|
||||||
|
|
||||||
|
/* Define if you have the snprintf function. */
|
||||||
|
#define HAVE_SNPRINTF 0
|
||||||
|
|
||||||
|
/* Define if you have the <ctype.h> header file. */
|
||||||
|
#define HAVE_CTYPE_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <wctype.h> header file. */
|
||||||
|
#define HAVE_WCTYPE_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <errno.h> header file. */
|
||||||
|
#define HAVE_ERRNO_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <fcntl.h> header file. */
|
||||||
|
#define HAVE_FCNTL_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <limits.h> header file. */
|
||||||
|
#define HAVE_LIMITS_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <stdio.h> header file. */
|
||||||
|
#define HAVE_STDIO_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <stdlib> header file. */
|
||||||
|
#define HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <string.h> header file. */
|
||||||
|
#define HAVE_STRING_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <sys/ioctl.h> header file. */
|
||||||
|
#define HAVE_SYS_IOCTL_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <sys/ptem.h> header file. */
|
||||||
|
#define HAVE_SYS_PTEM_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <sys/stream.h> header file. */
|
||||||
|
#define HAVE_SYS_STREAM_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <termcap.h> header file. */
|
||||||
|
#define HAVE_TERMCAP_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <termio.h> header file. */
|
||||||
|
#define HAVE_TERMIO_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <termios.h> header file. */
|
||||||
|
#define HAVE_TERMIOS_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <time.h> header file. */
|
||||||
|
#define HAVE_TIME_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <unistd.h> header file. */
|
||||||
|
#define HAVE_UNISTD_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <values.h> header file. */
|
||||||
|
#define HAVE_VALUES_H 0
|
340
external/bsd/less/dist/defines.o9
vendored
Normal file
340
external/bsd/less/dist/defines.o9
vendored
Normal file
|
@ -0,0 +1,340 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
|
*
|
||||||
|
* You may distribute under the terms of either the GNU General Public
|
||||||
|
* License or the Less License, as specified in the README file.
|
||||||
|
*
|
||||||
|
* For more information about less, or for information on how to
|
||||||
|
* contact the author, see the README file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* OS/9 definition file for less. */
|
||||||
|
/*
|
||||||
|
* This file has 2 sections:
|
||||||
|
* User preferences.
|
||||||
|
* Settings always true for OS-9 systems.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* User preferences. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SECURE is 1 if you wish to disable a bunch of features in order to
|
||||||
|
* be safe to run by unprivileged users.
|
||||||
|
*/
|
||||||
|
#define SECURE 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SHELL_ESCAPE is 1 if you wish to allow shell escapes.
|
||||||
|
* (This is possible only if your system supplies the system() function.)
|
||||||
|
*/
|
||||||
|
#define SHELL_ESCAPE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EXAMINE is 1 if you wish to allow examining files by name from within less.
|
||||||
|
*/
|
||||||
|
#define EXAMINE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAB_COMPLETE_FILENAME is 1 if you wish to allow the TAB key
|
||||||
|
* to complete filenames at prompts.
|
||||||
|
*/
|
||||||
|
#define TAB_COMPLETE_FILENAME 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CMD_HISTORY is 1 if you wish to allow keys to cycle through
|
||||||
|
* previous commands at prompts.
|
||||||
|
*/
|
||||||
|
#define CMD_HISTORY 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HILITE_SEARCH is 1 if you wish to have search targets to be
|
||||||
|
* displayed in standout mode.
|
||||||
|
*/
|
||||||
|
#define HILITE_SEARCH 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EDITOR is 1 if you wish to allow editor invocation (the "v" command).
|
||||||
|
* (This is possible only if your system supplies the system() function.)
|
||||||
|
* EDIT_PGM is the name of the (default) editor to be invoked.
|
||||||
|
*/
|
||||||
|
#define EDITOR (!SECURE)
|
||||||
|
#define EDIT_PGM "umacs"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAGS is 1 if you wish to support tag files.
|
||||||
|
*/
|
||||||
|
#define TAGS (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* USERFILE is 1 if you wish to allow a .less file to specify
|
||||||
|
* user-defined key bindings.
|
||||||
|
*/
|
||||||
|
#define USERFILE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLOB is 1 if you wish to have shell metacharacters expanded in filenames.
|
||||||
|
* This will generally work if your system provides the "popen" function
|
||||||
|
* and the "echo" shell command.
|
||||||
|
*/
|
||||||
|
#define GLOB (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PIPEC is 1 if you wish to have the "|" command
|
||||||
|
* which allows the user to pipe data into a shell command.
|
||||||
|
*/
|
||||||
|
#define PIPEC (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LOGFILE is 1 if you wish to allow the -l option (to create log files).
|
||||||
|
*/
|
||||||
|
#define LOGFILE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GNU_OPTIONS is 1 if you wish to support the GNU-style command
|
||||||
|
* line options --help and --version.
|
||||||
|
*/
|
||||||
|
#define GNU_OPTIONS 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ONLY_RETURN is 1 if you want RETURN to be the only input which
|
||||||
|
* will continue past an error message.
|
||||||
|
* Otherwise, any key will continue past an error message.
|
||||||
|
*/
|
||||||
|
#define ONLY_RETURN 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LESSKEYFILE is the filename of the default lesskey output file
|
||||||
|
* (in the HOME directory).
|
||||||
|
* LESSKEYFILE_SYS is the filename of the system-wide lesskey output file.
|
||||||
|
* DEF_LESSKEYINFILE is the filename of the default lesskey input
|
||||||
|
* (in the HOME directory).
|
||||||
|
* LESSHISTFILE is the filename of the history file
|
||||||
|
* (in the HOME directory).
|
||||||
|
*/
|
||||||
|
#define LESSKEYFILE ".less"
|
||||||
|
#define LESSKEYFILE_SYS "/.sysless"
|
||||||
|
#define DEF_LESSKEYINFILE ".lesskey"
|
||||||
|
#define LESSHISTFILE ".lesshst"
|
||||||
|
|
||||||
|
|
||||||
|
/* Settings always true for OS-9. */
|
||||||
|
|
||||||
|
/* This is not needed; it is defined by the compiler. */
|
||||||
|
/* #define _OSK 1 */
|
||||||
|
#define OS2 0
|
||||||
|
#define MSDOS_COMPILER 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pathname separator character.
|
||||||
|
*/
|
||||||
|
#define PATHNAME_SEP "/"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_SYS_TYPES_H is 1 if your system has <sys/types.h>.
|
||||||
|
*/
|
||||||
|
#define HAVE_SYS_TYPES_H 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define if you have the <sgstat.h> header file.
|
||||||
|
*/
|
||||||
|
#define HAVE_SGSTAT_H 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_PERROR is 1 if your system has the perror() call.
|
||||||
|
* (Actually, if it has sys_errlist, sys_nerr and errno.)
|
||||||
|
*/
|
||||||
|
#if _OSK_MWC32
|
||||||
|
#define HAVE_PERROR 0
|
||||||
|
#else
|
||||||
|
#define HAVE_PERROR 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_TIME is 1 if your system has the time() call.
|
||||||
|
*/
|
||||||
|
#define HAVE_TIME 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_SHELL is 1 if your system supports a SHELL command interpreter.
|
||||||
|
*/
|
||||||
|
#define HAVE_SHELL 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Default shell metacharacters and meta-escape character.
|
||||||
|
*/
|
||||||
|
#define DEF_METACHARS "; \t\n'\"()<>|&^`#\\"
|
||||||
|
#define DEF_METAESCAPE "\\"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_DUP is 1 if your system has the dup() call.
|
||||||
|
*/
|
||||||
|
#define HAVE_DUP 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sizes of various buffers.
|
||||||
|
*/
|
||||||
|
#define CMDBUF_SIZE 512 /* Buffer for multichar commands */
|
||||||
|
#define UNGOT_SIZE 100 /* Max chars to unget() */
|
||||||
|
#define LINEBUF_SIZE 1024 /* Max size of line in input file */
|
||||||
|
#define OUTBUF_SIZE 1024 /* Output buffer */
|
||||||
|
#define PROMPT_SIZE 200 /* Max size of prompt string */
|
||||||
|
#define TERMBUF_SIZE 2048 /* Termcap buffer for tgetent */
|
||||||
|
#define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */
|
||||||
|
#define TAGLINE_SIZE 512 /* Max size of line in tags file */
|
||||||
|
#define TABSTOP_MAX 32 /* Max number of custom tab stops */
|
||||||
|
|
||||||
|
/* Define to `long' if <sys/types.h> doesn't define. */
|
||||||
|
#define off_t long
|
||||||
|
|
||||||
|
/* Define if you need to in order for stat and other things to work. */
|
||||||
|
#define _POSIX_SOURCE 0
|
||||||
|
|
||||||
|
/* Define as the return type of signal handlers (int or void). */
|
||||||
|
#if _OSK_MWC32
|
||||||
|
#define RETSIGTYPE int
|
||||||
|
#else
|
||||||
|
#define RETSIGTYPE void
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Regular expression library.
|
||||||
|
* Define exactly one of the following to be 1:
|
||||||
|
* HAVE_POSIX_REGCOMP: POSIX regcomp() and regex.h
|
||||||
|
* HAVE_RE_COMP: BSD re_comp()
|
||||||
|
* HAVE_REGCMP: System V regcmp()
|
||||||
|
* HAVE_V8_REGCOMP: Henry Spencer V8 regcomp() and regexp.h
|
||||||
|
* NO_REGEX: pattern matching is supported, but without metacharacters.
|
||||||
|
*/
|
||||||
|
#define HAVE_POSIX_REGCOMP 0
|
||||||
|
#define HAVE_RE_COMP 0
|
||||||
|
#define HAVE_REGCMP 0
|
||||||
|
#define HAVE_V8_REGCOMP 1
|
||||||
|
#define NO_REGEX 0
|
||||||
|
#define HAVE_REGEXEC2 1
|
||||||
|
|
||||||
|
/* Define HAVE_VOID if your compiler supports the "void" type. */
|
||||||
|
#define HAVE_VOID 1
|
||||||
|
|
||||||
|
/* Define HAVE_CONST if your compiler supports the "const" modifier. */
|
||||||
|
#define HAVE_CONST 0
|
||||||
|
|
||||||
|
/* Define HAVE_TIME_T if your system supports the "time_t" type. */
|
||||||
|
#define HAVE_TIME_T 1
|
||||||
|
|
||||||
|
/* Define HAVE_STRERROR if you have the strerror() function. */
|
||||||
|
#define HAVE_STRERROR 0
|
||||||
|
|
||||||
|
/* Define HAVE_FILENO if you have the fileno() macro. */
|
||||||
|
#define HAVE_FILENO 1
|
||||||
|
|
||||||
|
/* Define HAVE_ERRNO if you have the errno variable */
|
||||||
|
/* Define MUST_DEFINE_ERRNO if you have errno but it is not define
|
||||||
|
* in errno.h */
|
||||||
|
#define HAVE_ERRNO 1
|
||||||
|
#define MUST_DEFINE_ERRNO 0
|
||||||
|
|
||||||
|
/* Define HAVE_SYS_ERRLIST if you have the sys_errlist[] variable */
|
||||||
|
#define HAVE_SYS_ERRLIST 0
|
||||||
|
|
||||||
|
/* Define HAVE_OSPEED if your termcap library has the ospeed variable */
|
||||||
|
/* Define MUST_DEFINE_OSPEED if you have ospeed but it is not defined
|
||||||
|
* in termcap.h. */
|
||||||
|
#define HAVE_OSPEED 0
|
||||||
|
#define MUST_DEFINE_OSPEED 0
|
||||||
|
|
||||||
|
/* Define HAVE_LOCALE if you have locale.h and setlocale. */
|
||||||
|
#define HAVE_LOCALE 0
|
||||||
|
|
||||||
|
/* Define HAVE_TERMIOS_FUNCS if you have tcgetattr/tcsetattr */
|
||||||
|
#define HAVE_TERMIOS_FUNCS 0
|
||||||
|
|
||||||
|
/* Define HAVE_UPPER_LOWER if you have isupper, islower, toupper, tolower */
|
||||||
|
#define HAVE_UPPER_LOWER 1
|
||||||
|
|
||||||
|
/* Define if you have the _setjmp function. */
|
||||||
|
#define HAVE__SETJMP 1
|
||||||
|
|
||||||
|
/* Define if you have the memcpy function. */
|
||||||
|
#define HAVE_MEMCPY 1
|
||||||
|
|
||||||
|
/* Define if you have the popen function. */
|
||||||
|
#define HAVE_POPEN 1
|
||||||
|
|
||||||
|
/* Define if you have the sigsetmask function. */
|
||||||
|
#define HAVE_SIGSETMASK 0
|
||||||
|
|
||||||
|
/* Define if you have the sigprocmask function. */
|
||||||
|
#define HAVE_SIGPROCMASK 0
|
||||||
|
|
||||||
|
/* Define if you have the sigset_t type and sigemptyset macro */
|
||||||
|
#define HAVE_SIGSET_T 0
|
||||||
|
#define HAVE_SIGEMPTYSET 0
|
||||||
|
|
||||||
|
/* Define if you have the stat function. */
|
||||||
|
#define HAVE_STAT 0
|
||||||
|
|
||||||
|
/* Define if you have the strchr function. */
|
||||||
|
#define HAVE_STRCHR 0
|
||||||
|
|
||||||
|
/* Define if you have the system function. */
|
||||||
|
#define HAVE_SYSTEM 1
|
||||||
|
|
||||||
|
/* Define if you have the snprintf function. */
|
||||||
|
#define HAVE_SNPRINTF 0
|
||||||
|
|
||||||
|
/* Define if you have the <ctype.h> header file. */
|
||||||
|
#define HAVE_CTYPE_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <wctype.h> header file. */
|
||||||
|
#define HAVE_WCTYPE_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <errno.h> header file. */
|
||||||
|
#define HAVE_ERRNO_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <fcntl.h> header file. */
|
||||||
|
#define HAVE_FCNTL_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <limits.h> header file. */
|
||||||
|
#define HAVE_LIMITS_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <stdio.h> header file. */
|
||||||
|
#define HAVE_STDIO_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <string.h> header file. */
|
||||||
|
#define HAVE_STRING_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <stdlib> header file. */
|
||||||
|
#if _OSK_MWC32
|
||||||
|
#define HAVE_STDLIB_H 0
|
||||||
|
#else
|
||||||
|
#define HAVE_STDLIB_H 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Define if you have the <sys/ioctl.h> header file. */
|
||||||
|
#define HAVE_SYS_IOCTL_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <sys/ptem.h> header file. */
|
||||||
|
#define HAVE_SYS_PTEM_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <sys/stream.h> header file. */
|
||||||
|
#define HAVE_SYS_STREAM_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <termcap.h> header file. */
|
||||||
|
#define HAVE_TERMCAP_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <termio.h> header file. */
|
||||||
|
#define HAVE_TERMIO_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <termios.h> header file. */
|
||||||
|
#define HAVE_TERMIOS_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <time.h> header file. */
|
||||||
|
#define HAVE_TIME_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <unistd.h> header file. */
|
||||||
|
#define HAVE_UNISTD_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <values.h> header file. */
|
||||||
|
#define HAVE_VALUES_H 0
|
339
external/bsd/less/dist/defines.wn
vendored
Normal file
339
external/bsd/less/dist/defines.wn
vendored
Normal file
|
@ -0,0 +1,339 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
|
*
|
||||||
|
* You may distribute under the terms of either the GNU General Public
|
||||||
|
* License or the Less License, as specified in the README file.
|
||||||
|
*
|
||||||
|
* For more information about less, or for information on how to
|
||||||
|
* contact the author, see the README file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* Windows definition file for less. */
|
||||||
|
/*
|
||||||
|
* This file has 2 sections:
|
||||||
|
* User preferences.
|
||||||
|
* Settings always true for Windows systems.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* User preferences. */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SECURE is 1 if you wish to disable a bunch of features in order to
|
||||||
|
* be safe to run by unprivileged users.
|
||||||
|
*/
|
||||||
|
#define SECURE 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SHELL_ESCAPE is 1 if you wish to allow shell escapes.
|
||||||
|
* (This is possible only if your system supplies the system() function.)
|
||||||
|
*/
|
||||||
|
#define SHELL_ESCAPE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EXAMINE is 1 if you wish to allow examining files by name from within less.
|
||||||
|
*/
|
||||||
|
#define EXAMINE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAB_COMPLETE_FILENAME is 1 if you wish to allow the TAB key
|
||||||
|
* to complete filenames at prompts.
|
||||||
|
*/
|
||||||
|
#define TAB_COMPLETE_FILENAME (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CMD_HISTORY is 1 if you wish to allow keys to cycle through
|
||||||
|
* previous commands at prompts.
|
||||||
|
*/
|
||||||
|
#define CMD_HISTORY 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HILITE_SEARCH is 1 if you wish to have search targets to be
|
||||||
|
* displayed in standout mode.
|
||||||
|
*/
|
||||||
|
#define HILITE_SEARCH 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* EDITOR is 1 if you wish to allow editor invocation (the "v" command).
|
||||||
|
* (This is possible only if your system supplies the system() function.)
|
||||||
|
* EDIT_PGM is the name of the (default) editor to be invoked.
|
||||||
|
*/
|
||||||
|
#define EDITOR (!SECURE)
|
||||||
|
#define EDIT_PGM "edit"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TAGS is 1 if you wish to support tag files.
|
||||||
|
*/
|
||||||
|
#define TAGS (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* USERFILE is 1 if you wish to allow a .less file to specify
|
||||||
|
* user-defined key bindings.
|
||||||
|
*/
|
||||||
|
#define USERFILE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GLOB is 1 if you wish to have shell metacharacters expanded in filenames.
|
||||||
|
* This will generally work if your system provides the "popen" function
|
||||||
|
* and the "echo" shell command.
|
||||||
|
*/
|
||||||
|
#define GLOB 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* PIPEC is 1 if you wish to have the "|" command
|
||||||
|
* which allows the user to pipe data into a shell command.
|
||||||
|
*/
|
||||||
|
#define PIPEC 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LOGFILE is 1 if you wish to allow the -l option (to create log files).
|
||||||
|
*/
|
||||||
|
#define LOGFILE (!SECURE)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* GNU_OPTIONS is 1 if you wish to support the GNU-style command
|
||||||
|
* line options --help and --version.
|
||||||
|
*/
|
||||||
|
#define GNU_OPTIONS 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ONLY_RETURN is 1 if you want RETURN to be the only input which
|
||||||
|
* will continue past an error message.
|
||||||
|
* Otherwise, any key will continue past an error message.
|
||||||
|
*/
|
||||||
|
#define ONLY_RETURN 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LESSKEYFILE is the filename of the default lesskey output file
|
||||||
|
* (in the HOME directory).
|
||||||
|
* LESSKEYFILE_SYS is the filename of the system-wide lesskey output file.
|
||||||
|
* DEF_LESSKEYINFILE is the filename of the default lesskey input
|
||||||
|
* (in the HOME directory).
|
||||||
|
* LESSHISTFILE is the filename of the history file
|
||||||
|
* (in the HOME directory).
|
||||||
|
*/
|
||||||
|
#define LESSKEYFILE "_less"
|
||||||
|
#define LESSKEYFILE_SYS "c:\\_sysless"
|
||||||
|
#define DEF_LESSKEYINFILE "_lesskey"
|
||||||
|
#define LESSHISTFILE "_lesshst"
|
||||||
|
|
||||||
|
|
||||||
|
/* Settings always true for Windows systems. */
|
||||||
|
|
||||||
|
#define MSDOS_COMPILER WIN32C
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pathname separator character.
|
||||||
|
*/
|
||||||
|
#define PATHNAME_SEP "\\"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_SYS_TYPES_H is 1 if your system has <sys/types.h>.
|
||||||
|
*/
|
||||||
|
#define HAVE_SYS_TYPES_H 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Define if you have the <sgstat.h> header file.
|
||||||
|
*/
|
||||||
|
#define HAVE_SGSTAT_H 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_PERROR is 1 if your system has the perror() call.
|
||||||
|
* (Actually, if it has sys_errlist, sys_nerr and errno.)
|
||||||
|
*/
|
||||||
|
#define HAVE_PERROR 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_TIME is 1 if your system has the time() call.
|
||||||
|
*/
|
||||||
|
#define HAVE_TIME 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_SHELL is 1 if your system supports a SHELL command interpreter.
|
||||||
|
*/
|
||||||
|
#define HAVE_SHELL 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Default shell metacharacters and meta-escape character.
|
||||||
|
*/
|
||||||
|
#define DEF_METACHARS "; *?\t\n'\"()<>|&"
|
||||||
|
#define DEF_METAESCAPE ""
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HAVE_DUP is 1 if your system has the dup() call.
|
||||||
|
*/
|
||||||
|
#define HAVE_DUP 1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Sizes of various buffers.
|
||||||
|
*/
|
||||||
|
#define CMDBUF_SIZE 512 /* Buffer for multichar commands */
|
||||||
|
#define UNGOT_SIZE 100 /* Max chars to unget() */
|
||||||
|
#define LINEBUF_SIZE 1024 /* Max size of line in input file */
|
||||||
|
#define OUTBUF_SIZE 1024 /* Output buffer */
|
||||||
|
#define PROMPT_SIZE 200 /* Max size of prompt string */
|
||||||
|
#define TERMBUF_SIZE 2048 /* Termcap buffer for tgetent */
|
||||||
|
#define TERMSBUF_SIZE 1024 /* Buffer to hold termcap strings */
|
||||||
|
#define TAGLINE_SIZE 512 /* Max size of line in tags file */
|
||||||
|
#define TABSTOP_MAX 32 /* Max number of custom tab stops */
|
||||||
|
|
||||||
|
/* Define to `long' if <sys/types.h> doesn't define. */
|
||||||
|
/* #define off_t long */
|
||||||
|
|
||||||
|
/* Define if you need to in order for stat and other things to work. */
|
||||||
|
/* #undef _POSIX_SOURCE */
|
||||||
|
|
||||||
|
/* Define as the return type of signal handlers (int or void). */
|
||||||
|
#define RETSIGTYPE void
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Regular expression library.
|
||||||
|
* Define exactly one of the following to be 1:
|
||||||
|
* HAVE_POSIX_REGCOMP: POSIX regcomp() and regex.h
|
||||||
|
* HAVE_RE_COMP: BSD re_comp()
|
||||||
|
* HAVE_REGCMP: System V regcmp()
|
||||||
|
* HAVE_V8_REGCOMP: Henry Spencer V8 regcomp() and regexp.h
|
||||||
|
* NO_REGEX: pattern matching is supported, but without metacharacters.
|
||||||
|
*/
|
||||||
|
/* #undef HAVE_POSIX_REGCOMP */
|
||||||
|
/* #undef HAVE_RE_COMP */
|
||||||
|
/* #undef HAVE_REGCMP */
|
||||||
|
#define HAVE_V8_REGCOMP 1
|
||||||
|
/* #undef NO_REGEX */
|
||||||
|
#define HAVE_REGEXEC2 1
|
||||||
|
|
||||||
|
/* Define HAVE_VOID if your compiler supports the "void" type. */
|
||||||
|
#define HAVE_VOID 1
|
||||||
|
|
||||||
|
/* Define HAVE_CONST if your compiler supports the "const" modifier. */
|
||||||
|
#define HAVE_CONST 1
|
||||||
|
|
||||||
|
/* Define HAVE_TIME_T if your system supports the "time_t" type. */
|
||||||
|
#define HAVE_TIME_T 1
|
||||||
|
|
||||||
|
/* Define HAVE_STRERROR if you have the strerror() function. */
|
||||||
|
#define HAVE_STRERROR 1
|
||||||
|
|
||||||
|
/* Define HAVE_FILENO if you have the fileno() macro. */
|
||||||
|
#define HAVE_FILENO 1
|
||||||
|
|
||||||
|
/* Define HAVE_ERRNO if you have the errno variable */
|
||||||
|
/* Define MUST_DEFINE_ERRNO if you have errno but it is not define
|
||||||
|
* in errno.h */
|
||||||
|
#define HAVE_ERRNO 1
|
||||||
|
#define MUST_DEFINE_ERRNO 1
|
||||||
|
|
||||||
|
/* Define HAVE_SYS_ERRLIST if you have the sys_errlist[] variable */
|
||||||
|
#define HAVE_SYS_ERRLIST 1
|
||||||
|
|
||||||
|
/* Define HAVE_OSPEED if your termcap library has the ospeed variable */
|
||||||
|
#define HAVE_OSPEED 0
|
||||||
|
/* Define MUST_DEFINE_OSPEED if you have ospeed but it is not defined
|
||||||
|
* in termcap.h. */
|
||||||
|
#define MUST_DEFINE_OSPEED 0
|
||||||
|
|
||||||
|
/* Define HAVE_LOCALE if you have locale.h and setlocale. */
|
||||||
|
#define HAVE_LOCALE 0
|
||||||
|
|
||||||
|
/* Define HAVE_TERMIOS_FUNCS if you have tcgetattr/tcsetattr */
|
||||||
|
#define HAVE_TERMIOS_FUNCS 0
|
||||||
|
|
||||||
|
/* Define HAVE_UPPER_LOWER if you have isupper, islower, toupper, tolower */
|
||||||
|
#define HAVE_UPPER_LOWER 1
|
||||||
|
|
||||||
|
/* Define if you have the _setjmp function. */
|
||||||
|
#define HAVE__SETJMP 1
|
||||||
|
|
||||||
|
/* Define if you have the memcpy function. */
|
||||||
|
#define HAVE_MEMCPY 1
|
||||||
|
|
||||||
|
/* Define if you have the popen function. */
|
||||||
|
#define HAVE_POPEN 1
|
||||||
|
|
||||||
|
/* Define if you have the sigsetmask function. */
|
||||||
|
#define HAVE_SIGSETMASK 0
|
||||||
|
|
||||||
|
/* Define if you have the sigprocmask function. */
|
||||||
|
#define HAVE_SIGPROCMASK 0
|
||||||
|
|
||||||
|
/* Define if you have the sigset_t type and sigemptyset macro */
|
||||||
|
#define HAVE_SIGSET_T 0
|
||||||
|
#define HAVE_SIGEMPTYSET 0
|
||||||
|
|
||||||
|
/* Define if you have the stat function. */
|
||||||
|
#define HAVE_STAT 1
|
||||||
|
|
||||||
|
/* Define if you have the strchr function. */
|
||||||
|
#define HAVE_STRCHR 1
|
||||||
|
|
||||||
|
/* Define if you have the system function. */
|
||||||
|
#define HAVE_SYSTEM 1
|
||||||
|
|
||||||
|
/* Define if you have the snprintf function. */
|
||||||
|
#define HAVE_SNPRINTF 1
|
||||||
|
|
||||||
|
/* Define if you have the <ctype.h> header file. */
|
||||||
|
#define HAVE_CTYPE_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <wctype.h> header file. */
|
||||||
|
#define HAVE_WCTYPE_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <errno.h> header file. */
|
||||||
|
#define HAVE_ERRNO_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <fcntl.h> header file. */
|
||||||
|
#define HAVE_FCNTL_H 1
|
||||||
|
|
||||||
|
/* Define HAVE_FLOAT if your compiler supports the "double" type. */
|
||||||
|
#define HAVE_FLOAT 1
|
||||||
|
|
||||||
|
/* Define if you have the <limits.h> header file. */
|
||||||
|
#define HAVE_LIMITS_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <stdio.h> header file. */
|
||||||
|
#define HAVE_STDIO_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <string.h> header file. */
|
||||||
|
#define HAVE_STRING_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <stdlib> header file. */
|
||||||
|
#define HAVE_STDLIB_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <sys/ioctl.h> header file. */
|
||||||
|
#define HAVE_SYS_IOCTL_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <sys/ptem.h> header file. */
|
||||||
|
#define HAVE_SYS_PTEM_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <sys/stream.h> header file. */
|
||||||
|
#define HAVE_SYS_STREAM_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <termcap.h> header file. */
|
||||||
|
#define HAVE_TERMCAP_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <termio.h> header file. */
|
||||||
|
#define HAVE_TERMIO_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <termios.h> header file. */
|
||||||
|
#define HAVE_TERMIOS_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <time.h> header file. */
|
||||||
|
#define HAVE_TIME_H 1
|
||||||
|
|
||||||
|
/* Define if you have the <unistd.h> header file. */
|
||||||
|
#define HAVE_UNISTD_H 0
|
||||||
|
|
||||||
|
/* Define if you have the <values.h> header file. */
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
#define HAVE_VALUES_H 0
|
||||||
|
#else
|
||||||
|
#define HAVE_VALUES_H 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define popen _popen
|
||||||
|
#define pclose _pclose
|
||||||
|
#define snprintf _snprintf
|
||||||
|
|
||||||
|
#pragma warning(disable:4996)
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: edit.c,v 1.9 2008/02/16 07:20:54 matt Exp $ */
|
/* $NetBSD: edit.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -12,6 +12,9 @@
|
||||||
|
|
||||||
|
|
||||||
#include "less.h"
|
#include "less.h"
|
||||||
|
#if HAVE_STAT
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
public int fd0 = 0;
|
public int fd0 = 0;
|
||||||
|
|
||||||
|
@ -38,6 +41,11 @@ extern int force_logfile;
|
||||||
extern char *namelogfile;
|
extern char *namelogfile;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_STAT_INO
|
||||||
|
public dev_t curr_dev;
|
||||||
|
public ino_t curr_ino;
|
||||||
|
#endif
|
||||||
|
|
||||||
char *curr_altfilename = NULL;
|
char *curr_altfilename = NULL;
|
||||||
static void *curr_altpipe;
|
static void *curr_altpipe;
|
||||||
|
|
||||||
|
@ -185,6 +193,9 @@ close_file()
|
||||||
curr_altfilename = NULL;
|
curr_altfilename = NULL;
|
||||||
}
|
}
|
||||||
curr_ifile = NULL_IFILE;
|
curr_ifile = NULL_IFILE;
|
||||||
|
#if HAVE_STAT_INO
|
||||||
|
curr_ino = curr_dev = 0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -367,7 +378,6 @@ edit_ifile(ifile)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(qopen_filename);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get the new ifile.
|
* Get the new ifile.
|
||||||
|
@ -391,11 +401,24 @@ edit_ifile(ifile)
|
||||||
#if LOGFILE
|
#if LOGFILE
|
||||||
if (namelogfile != NULL && is_tty)
|
if (namelogfile != NULL && is_tty)
|
||||||
use_logfile(namelogfile);
|
use_logfile(namelogfile);
|
||||||
|
#endif
|
||||||
|
#if HAVE_STAT_INO
|
||||||
|
/* Remember the i-number and device of the opened file. */
|
||||||
|
{
|
||||||
|
struct stat statbuf;
|
||||||
|
int r = stat(qopen_filename, &statbuf);
|
||||||
|
if (r == 0)
|
||||||
|
{
|
||||||
|
curr_ino = statbuf.st_ino;
|
||||||
|
curr_dev = statbuf.st_dev;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
if (every_first_cmd != NULL)
|
if (every_first_cmd != NULL)
|
||||||
ungetsc(every_first_cmd);
|
ungetsc(every_first_cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(qopen_filename);
|
||||||
no_display = !any_display;
|
no_display = !any_display;
|
||||||
flush();
|
flush();
|
||||||
any_display = TRUE;
|
any_display = TRUE;
|
||||||
|
@ -664,6 +687,14 @@ reedit_ifile(save_ifile)
|
||||||
quit(QUIT_ERROR);
|
quit(QUIT_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void
|
||||||
|
reopen_curr_ifile()
|
||||||
|
{
|
||||||
|
IFILE save_ifile = save_curr_ifile();
|
||||||
|
close_file();
|
||||||
|
reedit_ifile(save_ifile);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Edit standard input.
|
* Edit standard input.
|
||||||
*/
|
*/
|
||||||
|
@ -755,7 +786,7 @@ loop:
|
||||||
* Append: open the file and seek to the end.
|
* Append: open the file and seek to the end.
|
||||||
*/
|
*/
|
||||||
logfile = open(filename, OPEN_APPEND);
|
logfile = open(filename, OPEN_APPEND);
|
||||||
if (lseek(logfile, (off_t)0, 2) == BAD_LSEEK)
|
if (lseek(logfile, (off_t)0, SEEK_END) == BAD_LSEEK)
|
||||||
{
|
{
|
||||||
close(logfile);
|
close(logfile);
|
||||||
logfile = -1;
|
logfile = -1;
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: filename.c,v 1.7 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: filename.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -53,6 +53,8 @@
|
||||||
extern int force_open;
|
extern int force_open;
|
||||||
extern int secure;
|
extern int secure;
|
||||||
extern int use_lessopen;
|
extern int use_lessopen;
|
||||||
|
extern int ctldisp;
|
||||||
|
extern int utf_mode;
|
||||||
extern IFILE curr_ifile;
|
extern IFILE curr_ifile;
|
||||||
extern IFILE old_ifile;
|
extern IFILE old_ifile;
|
||||||
#if SPACES_IN_FILENAMES
|
#if SPACES_IN_FILENAMES
|
||||||
|
@ -406,6 +408,7 @@ fexpand(s)
|
||||||
return (e);
|
return (e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if TAB_COMPLETE_FILENAME
|
#if TAB_COMPLETE_FILENAME
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -476,19 +479,34 @@ fcomplete(s)
|
||||||
bin_file(f)
|
bin_file(f)
|
||||||
int f;
|
int f;
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
int n;
|
int n;
|
||||||
unsigned char data[64];
|
int bin_count = 0;
|
||||||
|
char data[256];
|
||||||
|
char* p;
|
||||||
|
char* pend;
|
||||||
|
|
||||||
if (!seekable(f))
|
if (!seekable(f))
|
||||||
return (0);
|
return (0);
|
||||||
if (lseek(f, (off_t)0, 0) == BAD_LSEEK)
|
if (lseek(f, (off_t)0, SEEK_SET) == BAD_LSEEK)
|
||||||
return (0);
|
return (0);
|
||||||
n = read(f, data, sizeof(data));
|
n = read(f, data, sizeof(data));
|
||||||
for (i = 0; i < n; i++)
|
pend = &data[n];
|
||||||
if (binary_char(data[i]))
|
for (p = data; p < pend; )
|
||||||
return (1);
|
{
|
||||||
return (0);
|
LWCHAR c = step_char(&p, +1, pend);
|
||||||
|
if (ctldisp == OPT_ONPLUS && IS_CSI_START(c))
|
||||||
|
{
|
||||||
|
do {
|
||||||
|
c = step_char(&p, +1, pend);
|
||||||
|
} while (p < pend && is_ansi_middle(c));
|
||||||
|
} else if (binary_char(c))
|
||||||
|
bin_count++;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Call it a binary file if there are more than 5 binary characters
|
||||||
|
* in the first 256 bytes of the file.
|
||||||
|
*/
|
||||||
|
return (bin_count > 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -500,7 +518,7 @@ seek_filesize(f)
|
||||||
{
|
{
|
||||||
off_t spos;
|
off_t spos;
|
||||||
|
|
||||||
spos = lseek(f, (off_t)0, 2);
|
spos = lseek(f, (off_t)0, SEEK_END);
|
||||||
if (spos == BAD_LSEEK)
|
if (spos == BAD_LSEEK)
|
||||||
return (NULL_POSITION);
|
return (NULL_POSITION);
|
||||||
return ((POSITION) spos);
|
return ((POSITION) spos);
|
||||||
|
@ -822,22 +840,29 @@ open_altfile(filename, pf, pfd)
|
||||||
ch_ungetchar(-1);
|
ch_ungetchar(-1);
|
||||||
if ((lessopen = lgetenv("LESSOPEN")) == NULL)
|
if ((lessopen = lgetenv("LESSOPEN")) == NULL)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
if (strcmp(filename, "-") == 0)
|
|
||||||
return (NULL);
|
|
||||||
if (*lessopen == '|')
|
if (*lessopen == '|')
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* If LESSOPEN starts with a |, it indicates
|
* If LESSOPEN starts with a |, it indicates
|
||||||
* a "pipe preprocessor".
|
* a "pipe preprocessor".
|
||||||
*/
|
*/
|
||||||
#if HAVE_FILENO
|
#if !HAVE_FILENO
|
||||||
lessopen++;
|
|
||||||
returnfd = 1;
|
|
||||||
#else
|
|
||||||
error("LESSOPEN pipe is not supported", NULL_PARG);
|
error("LESSOPEN pipe is not supported", NULL_PARG);
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
#else
|
||||||
|
lessopen++;
|
||||||
|
returnfd = 1;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
if (*lessopen == '-') {
|
||||||
|
/*
|
||||||
|
* Lessopen preprocessor will accept "-" as a filename.
|
||||||
|
*/
|
||||||
|
lessopen++;
|
||||||
|
} else {
|
||||||
|
if (strcmp(filename, "-") == 0)
|
||||||
|
return (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
len = strlen(lessopen) + strlen(filename) + 2;
|
len = strlen(lessopen) + strlen(filename) + 2;
|
||||||
cmd = (char *) ecalloc(len, sizeof(char));
|
cmd = (char *) ecalloc(len, sizeof(char));
|
||||||
|
@ -974,7 +999,7 @@ bad_file(filename)
|
||||||
register char *m = NULL;
|
register char *m = NULL;
|
||||||
|
|
||||||
filename = shell_unquote(filename);
|
filename = shell_unquote(filename);
|
||||||
if (is_dir(filename))
|
if (!force_open && is_dir(filename))
|
||||||
{
|
{
|
||||||
static char is_a_dir[] = " is a directory";
|
static char is_a_dir[] = " is a directory";
|
||||||
|
|
||||||
|
@ -1041,3 +1066,22 @@ shell_coption()
|
||||||
{
|
{
|
||||||
return ("-c");
|
return ("-c");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return last component of a pathname.
|
||||||
|
*/
|
||||||
|
public char *
|
||||||
|
last_component(name)
|
||||||
|
char *name;
|
||||||
|
{
|
||||||
|
char *slash;
|
||||||
|
|
||||||
|
for (slash = name + strlen(name); slash > name; )
|
||||||
|
{
|
||||||
|
--slash;
|
||||||
|
if (*slash == *PATHNAME_SEP || *slash == '/')
|
||||||
|
return (slash + 1);
|
||||||
|
}
|
||||||
|
return (name);
|
||||||
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: forwback.c,v 1.10 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: forwback.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -19,16 +19,15 @@
|
||||||
#include "less.h"
|
#include "less.h"
|
||||||
#include "position.h"
|
#include "position.h"
|
||||||
|
|
||||||
public int hit_eof; /* Keeps track of how many times we hit end of file */
|
|
||||||
public int screen_trashed;
|
public int screen_trashed;
|
||||||
public int squished;
|
public int squished;
|
||||||
public int no_back_scroll = 0;
|
public int no_back_scroll = 0;
|
||||||
|
public int forw_prompt;
|
||||||
|
|
||||||
extern int sigs;
|
extern int sigs;
|
||||||
extern int top_scroll;
|
extern int top_scroll;
|
||||||
extern int quiet;
|
extern int quiet;
|
||||||
extern int sc_width, sc_height;
|
extern int sc_width, sc_height;
|
||||||
extern int quit_at_eof;
|
|
||||||
extern int more_mode;
|
extern int more_mode;
|
||||||
extern int plusoption;
|
extern int plusoption;
|
||||||
extern int forw_scroll;
|
extern int forw_scroll;
|
||||||
|
@ -36,13 +35,13 @@ extern int back_scroll;
|
||||||
extern int ignore_eoi;
|
extern int ignore_eoi;
|
||||||
extern int clear_bg;
|
extern int clear_bg;
|
||||||
extern int final_attr;
|
extern int final_attr;
|
||||||
|
extern int oldbot;
|
||||||
#if TAGS
|
#if TAGS
|
||||||
extern char *tagoption;
|
extern char *tagoption;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void eof_bell __P((void));
|
static void eof_bell __P((void));
|
||||||
static void eof_check __P((void));
|
static void eof_check __P((void));
|
||||||
static void squish_check __P((void));
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sound the bell to indicate user is trying to move past end of file.
|
* Sound the bell to indicate user is trying to move past end of file.
|
||||||
|
@ -57,25 +56,47 @@ eof_bell()
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check to see if the end of file is currently "displayed".
|
* Check to see if the end of file is currently displayed.
|
||||||
*/
|
*/
|
||||||
static void
|
public int
|
||||||
eof_check()
|
eof_displayed()
|
||||||
{
|
{
|
||||||
POSITION pos;
|
POSITION pos;
|
||||||
|
|
||||||
if (ignore_eoi)
|
if (ignore_eoi)
|
||||||
return;
|
return (0);
|
||||||
if (ABORT_SIGS())
|
|
||||||
return;
|
if (ch_length() == NULL_POSITION)
|
||||||
|
/*
|
||||||
|
* If the file length is not known,
|
||||||
|
* we can't possibly be displaying EOF.
|
||||||
|
*/
|
||||||
|
return (0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the bottom line is empty, we are at EOF.
|
* If the bottom line is empty, we are at EOF.
|
||||||
* If the bottom line ends at the file length,
|
* If the bottom line ends at the file length,
|
||||||
* we must be just at EOF.
|
* we must be just at EOF.
|
||||||
*/
|
*/
|
||||||
pos = position(BOTTOM_PLUS_ONE);
|
pos = position(BOTTOM_PLUS_ONE);
|
||||||
if (pos == NULL_POSITION || pos == ch_length())
|
return (pos == NULL_POSITION || pos == ch_length());
|
||||||
hit_eof++;
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check to see if the entire file is currently displayed.
|
||||||
|
*/
|
||||||
|
public int
|
||||||
|
entire_file_displayed()
|
||||||
|
{
|
||||||
|
POSITION pos;
|
||||||
|
|
||||||
|
/* Make sure last line of file is displayed. */
|
||||||
|
if (!eof_displayed())
|
||||||
|
return (0);
|
||||||
|
|
||||||
|
/* Make sure first line of file is displayed. */
|
||||||
|
pos = position(0);
|
||||||
|
return (pos == NULL_POSITION || pos == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -84,7 +105,7 @@ eof_check()
|
||||||
* of the screen; this can happen when we display a short file
|
* of the screen; this can happen when we display a short file
|
||||||
* for the first time.
|
* for the first time.
|
||||||
*/
|
*/
|
||||||
static void
|
public void
|
||||||
squish_check()
|
squish_check()
|
||||||
{
|
{
|
||||||
if (!squished)
|
if (!squished)
|
||||||
|
@ -142,16 +163,8 @@ forw(n, pos, force, only_last, nblank)
|
||||||
pos_clear();
|
pos_clear();
|
||||||
add_forw_pos(pos);
|
add_forw_pos(pos);
|
||||||
force = 1;
|
force = 1;
|
||||||
if (more_mode == 0)
|
clear();
|
||||||
{
|
home();
|
||||||
if (top_scroll == OPT_ONPLUS ||
|
|
||||||
(first_time && top_scroll != OPT_ON))
|
|
||||||
clear();
|
|
||||||
home();
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
clear_bot();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pos != position(BOTTOM_PLUS_ONE) || empty_screen())
|
if (pos != position(BOTTOM_PLUS_ONE) || empty_screen())
|
||||||
|
@ -166,8 +179,7 @@ forw(n, pos, force, only_last, nblank)
|
||||||
force = 1;
|
force = 1;
|
||||||
if (top_scroll)
|
if (top_scroll)
|
||||||
{
|
{
|
||||||
if (top_scroll == OPT_ONPLUS)
|
clear();
|
||||||
clear();
|
|
||||||
home();
|
home();
|
||||||
} else if (!first_time)
|
} else if (!first_time)
|
||||||
{
|
{
|
||||||
|
@ -242,9 +254,16 @@ forw(n, pos, force, only_last, nblank)
|
||||||
squished = 1;
|
squished = 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (top_scroll == OPT_ON)
|
|
||||||
clear_eol();
|
|
||||||
put_line();
|
put_line();
|
||||||
|
#if 0
|
||||||
|
/* {{
|
||||||
|
* Can't call clear_eol here. The cursor might be at end of line
|
||||||
|
* on an ignaw terminal, so clear_eol would clear the last char
|
||||||
|
* of the current line instead of all of the next line.
|
||||||
|
* If we really need to do this on clear_bg terminals, we need
|
||||||
|
* to find a better way.
|
||||||
|
* }}
|
||||||
|
*/
|
||||||
if (clear_bg && apply_at_specials(final_attr) != AT_NORMAL)
|
if (clear_bg && apply_at_specials(final_attr) != AT_NORMAL)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -256,14 +275,10 @@ forw(n, pos, force, only_last, nblank)
|
||||||
*/
|
*/
|
||||||
clear_eol();
|
clear_eol();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
forw_prompt = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ignore_eoi)
|
|
||||||
hit_eof = 0;
|
|
||||||
else if (eof && !ABORT_SIGS())
|
|
||||||
hit_eof++;
|
|
||||||
else
|
|
||||||
eof_check();
|
|
||||||
if (nlines == 0)
|
if (nlines == 0)
|
||||||
eof_bell();
|
eof_bell();
|
||||||
else if (do_repaint)
|
else if (do_repaint)
|
||||||
|
@ -287,7 +302,6 @@ back(n, pos, force, only_last)
|
||||||
|
|
||||||
squish_check();
|
squish_check();
|
||||||
do_repaint = (n > get_back_scroll() || (only_last && n > sc_height-1));
|
do_repaint = (n > get_back_scroll() || (only_last && n > sc_height-1));
|
||||||
hit_eof = 0;
|
|
||||||
while (--n >= 0)
|
while (--n >= 0)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -316,11 +330,12 @@ back(n, pos, force, only_last)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
eof_check();
|
|
||||||
if (nlines == 0)
|
if (nlines == 0)
|
||||||
eof_bell();
|
eof_bell();
|
||||||
else if (do_repaint)
|
else if (do_repaint)
|
||||||
repaint();
|
repaint();
|
||||||
|
else if (!oldbot)
|
||||||
|
lower_left();
|
||||||
(void) currline(BOTTOM);
|
(void) currline(BOTTOM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -336,7 +351,7 @@ forward(n, force, only_last)
|
||||||
{
|
{
|
||||||
POSITION pos;
|
POSITION pos;
|
||||||
|
|
||||||
if (quit_at_eof && hit_eof && !(ch_getflags() & CH_HELPFILE))
|
if (get_quit_at_eof() && eof_displayed() && !(ch_getflags() & CH_HELPFILE))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* If the -e flag is set and we're trying to go
|
* If the -e flag is set and we're trying to go
|
||||||
|
@ -370,7 +385,6 @@ forward(n, force, only_last)
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
eof_bell();
|
eof_bell();
|
||||||
hit_eof++;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: funcs.h,v 1.9 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: funcs.h,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||||
|
|
||||||
public char * save ();
|
public char * save ();
|
||||||
public VOID_POINTER ecalloc ();
|
public VOID_POINTER ecalloc ();
|
||||||
|
@ -16,6 +16,7 @@
|
||||||
public void remove_top ();
|
public void remove_top ();
|
||||||
public void win32_scroll_up ();
|
public void win32_scroll_up ();
|
||||||
public void lower_left ();
|
public void lower_left ();
|
||||||
|
public void line_left ();
|
||||||
public void check_winch ();
|
public void check_winch ();
|
||||||
public void goto_line ();
|
public void goto_line ();
|
||||||
public void vbell ();
|
public void vbell ();
|
||||||
|
@ -31,6 +32,8 @@
|
||||||
public void backspace ();
|
public void backspace ();
|
||||||
public void putbs ();
|
public void putbs ();
|
||||||
public char WIN32getch ();
|
public char WIN32getch ();
|
||||||
|
public void WIN32setcolors ();
|
||||||
|
public void WIN32textout ();
|
||||||
public void match_brac ();
|
public void match_brac ();
|
||||||
public void ch_ungetchar ();
|
public void ch_ungetchar ();
|
||||||
public void end_logfile ();
|
public void end_logfile ();
|
||||||
|
@ -57,6 +60,7 @@
|
||||||
public int utf_len ();
|
public int utf_len ();
|
||||||
public int is_utf8_well_formed ();
|
public int is_utf8_well_formed ();
|
||||||
public LWCHAR get_wchar ();
|
public LWCHAR get_wchar ();
|
||||||
|
public void put_wchar ();
|
||||||
public LWCHAR step_char ();
|
public LWCHAR step_char ();
|
||||||
public int is_composing_char ();
|
public int is_composing_char ();
|
||||||
public int is_ubin_char ();
|
public int is_ubin_char ();
|
||||||
|
@ -72,6 +76,7 @@
|
||||||
public int cmd_char ();
|
public int cmd_char ();
|
||||||
public LINENUM cmd_int ();
|
public LINENUM cmd_int ();
|
||||||
public char * get_cmdbuf ();
|
public char * get_cmdbuf ();
|
||||||
|
public char * cmd_lastpattern ();
|
||||||
public void init_cmdhist ();
|
public void init_cmdhist ();
|
||||||
public void save_cmdhist ();
|
public void save_cmdhist ();
|
||||||
public int in_mca ();
|
public int in_mca ();
|
||||||
|
@ -80,6 +85,9 @@
|
||||||
public void ungetcc ();
|
public void ungetcc ();
|
||||||
public void ungetsc ();
|
public void ungetsc ();
|
||||||
public void commands ();
|
public void commands ();
|
||||||
|
public int cvt_length ();
|
||||||
|
public int * cvt_alloc_chpos ();
|
||||||
|
public void cvt_text ();
|
||||||
public void init_cmds ();
|
public void init_cmds ();
|
||||||
public void add_fcmd_table ();
|
public void add_fcmd_table ();
|
||||||
public void add_ecmd_table ();
|
public void add_ecmd_table ();
|
||||||
|
@ -103,6 +111,7 @@
|
||||||
public IFILE save_curr_ifile ();
|
public IFILE save_curr_ifile ();
|
||||||
public void unsave_ifile ();
|
public void unsave_ifile ();
|
||||||
public void reedit_ifile ();
|
public void reedit_ifile ();
|
||||||
|
public void reopen_curr_ifile ();
|
||||||
public int edit_stdin ();
|
public int edit_stdin ();
|
||||||
public void cat_file ();
|
public void cat_file ();
|
||||||
public void use_logfile ();
|
public void use_logfile ();
|
||||||
|
@ -120,6 +129,10 @@
|
||||||
public char * bad_file ();
|
public char * bad_file ();
|
||||||
public POSITION filesize ();
|
public POSITION filesize ();
|
||||||
public char * shell_coption ();
|
public char * shell_coption ();
|
||||||
|
public char * last_component ();
|
||||||
|
public int eof_displayed ();
|
||||||
|
public int entire_file_displayed ();
|
||||||
|
public void squish_check ();
|
||||||
public void forw ();
|
public void forw ();
|
||||||
public void back ();
|
public void back ();
|
||||||
public void forward ();
|
public void forward ();
|
||||||
|
@ -161,6 +174,7 @@
|
||||||
public int pappend ();
|
public int pappend ();
|
||||||
public int pflushmbc ();
|
public int pflushmbc ();
|
||||||
public void pdone ();
|
public void pdone ();
|
||||||
|
public void set_status_col ();
|
||||||
public int gline ();
|
public int gline ();
|
||||||
public void null_line ();
|
public void null_line ();
|
||||||
public POSITION forw_raw_line ();
|
public POSITION forw_raw_line ();
|
||||||
|
@ -182,7 +196,10 @@
|
||||||
public void unmark ();
|
public void unmark ();
|
||||||
public void opt_o ();
|
public void opt_o ();
|
||||||
public void opt__O ();
|
public void opt__O ();
|
||||||
public void opt_l ();
|
public void opt_j ();
|
||||||
|
public void calc_jump_sline ();
|
||||||
|
public void opt_shift ();
|
||||||
|
public void calc_shift_count ();
|
||||||
public void opt_k ();
|
public void opt_k ();
|
||||||
public void opt_t ();
|
public void opt_t ();
|
||||||
public void opt__T ();
|
public void opt__T ();
|
||||||
|
@ -196,13 +213,16 @@
|
||||||
public void opt_quote ();
|
public void opt_quote ();
|
||||||
public void opt_query ();
|
public void opt_query ();
|
||||||
public int get_swindow ();
|
public int get_swindow ();
|
||||||
|
public char * propt ();
|
||||||
public void scan_option ();
|
public void scan_option ();
|
||||||
public void toggle_option ();
|
public void toggle_option ();
|
||||||
public int single_char_option ();
|
public int opt_has_param ();
|
||||||
public char * opt_prompt ();
|
public char * opt_prompt ();
|
||||||
public int isoptpending ();
|
public int isoptpending ();
|
||||||
public void nopendopt ();
|
public void nopendopt ();
|
||||||
public int getnum ();
|
public int getnum ();
|
||||||
|
public long getfraction ();
|
||||||
|
public int get_quit_at_eof ();
|
||||||
public void init_option ();
|
public void init_option ();
|
||||||
public struct loption * findopt ();
|
public struct loption * findopt ();
|
||||||
public struct loption * findopt_name ();
|
public struct loption * findopt_name ();
|
||||||
|
@ -221,6 +241,10 @@
|
||||||
public void error ();
|
public void error ();
|
||||||
public void ierror ();
|
public void ierror ();
|
||||||
public int query ();
|
public int query ();
|
||||||
|
public int compile_pattern ();
|
||||||
|
public void uncompile_pattern ();
|
||||||
|
public int is_null_pattern ();
|
||||||
|
public int match_pattern ();
|
||||||
public POSITION position ();
|
public POSITION position ();
|
||||||
public void add_forw_pos ();
|
public void add_forw_pos ();
|
||||||
public void add_back_pos ();
|
public void add_back_pos ();
|
||||||
|
@ -236,15 +260,21 @@
|
||||||
public char * eq_message ();
|
public char * eq_message ();
|
||||||
public char * pr_string ();
|
public char * pr_string ();
|
||||||
public char * wait_message ();
|
public char * wait_message ();
|
||||||
|
public void init_search ();
|
||||||
public void repaint_hilite ();
|
public void repaint_hilite ();
|
||||||
public void clear_attn ();
|
public void clear_attn ();
|
||||||
public void undo_search ();
|
public void undo_search ();
|
||||||
|
public void clr_hlist ();
|
||||||
public void clr_hilite ();
|
public void clr_hilite ();
|
||||||
|
public void clr_filter ();
|
||||||
|
public int is_filtered ();
|
||||||
public int is_hilited ();
|
public int is_hilited ();
|
||||||
public void chg_caseless ();
|
public void chg_caseless ();
|
||||||
public void chg_hilite ();
|
public void chg_hilite ();
|
||||||
public int search ();
|
public int search ();
|
||||||
public void prep_hilite ();
|
public void prep_hilite ();
|
||||||
|
public void set_filter_pattern ();
|
||||||
|
public int is_filtering ();
|
||||||
public RETSIGTYPE winch ();
|
public RETSIGTYPE winch ();
|
||||||
public RETSIGTYPE winch ();
|
public RETSIGTYPE winch ();
|
||||||
public void init_signals ();
|
public void init_signals ();
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: help.c,v 1.6 2006/11/20 22:06:26 dsl Exp $ */
|
/* $NetBSD: help.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||||
|
|
||||||
/* This file was generated by mkhelp from less.hlp */
|
/* This file was generated by mkhelp from less.hlp */
|
||||||
#include "less.h"
|
#include "less.h"
|
||||||
|
@ -46,6 +46,7 @@ constant char helpdata[] = {
|
||||||
' ',' ','E','S','C','-','n',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','R','e','p','e','a','t',' ','p','r','e','v','i','o','u','s',' ','s','e','a','r','c','h',',',' ','s','p','a','n','n','i','n','g',' ','f','i','l','e','s','.','\n',
|
' ',' ','E','S','C','-','n',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','R','e','p','e','a','t',' ','p','r','e','v','i','o','u','s',' ','s','e','a','r','c','h',',',' ','s','p','a','n','n','i','n','g',' ','f','i','l','e','s','.','\n',
|
||||||
' ',' ','E','S','C','-','N',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','R','e','p','e','a','t',' ','p','r','e','v','i','o','u','s',' ','s','e','a','r','c','h',',',' ','r','e','v','e','r','s','e',' ','d','i','r','.',' ','&',' ','s','p','a','n','n','i','n','g',' ','f','i','l','e','s','.','\n',
|
' ',' ','E','S','C','-','N',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','R','e','p','e','a','t',' ','p','r','e','v','i','o','u','s',' ','s','e','a','r','c','h',',',' ','r','e','v','e','r','s','e',' ','d','i','r','.',' ','&',' ','s','p','a','n','n','i','n','g',' ','f','i','l','e','s','.','\n',
|
||||||
' ',' ','E','S','C','-','u',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','U','n','d','o',' ','(','t','o','g','g','l','e',')',' ','s','e','a','r','c','h',' ','h','i','g','h','l','i','g','h','t','i','n','g','.','\n',
|
' ',' ','E','S','C','-','u',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','U','n','d','o',' ','(','t','o','g','g','l','e',')',' ','s','e','a','r','c','h',' ','h','i','g','h','l','i','g','h','t','i','n','g','.','\n',
|
||||||
|
' ',' ','&','_','\b','p','_','\b','a','_','\b','t','_','\b','t','_','\b','e','_','\b','r','_','\b','n',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','D','i','s','p','l','a','y',' ','o','n','l','y',' ','m','a','t','c','h','i','n','g',' ','l','i','n','e','s','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ','S','e','a','r','c','h',' ','p','a','t','t','e','r','n','s',' ','m','a','y',' ','b','e',' ','m','o','d','i','f','i','e','d',' ','b','y',' ','o','n','e',' ','o','r',' ','m','o','r','e',' ','o','f',':','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ','S','e','a','r','c','h',' ','p','a','t','t','e','r','n','s',' ','m','a','y',' ','b','e',' ','m','o','d','i','f','i','e','d',' ','b','y',' ','o','n','e',' ','o','r',' ','m','o','r','e',' ','o','f',':','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ','^','N',' ','o','r',' ','!',' ',' ','S','e','a','r','c','h',' ','f','o','r',' ','N','O','N','-','m','a','t','c','h','i','n','g',' ','l','i','n','e','s','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ','^','N',' ','o','r',' ','!',' ',' ','S','e','a','r','c','h',' ','f','o','r',' ','N','O','N','-','m','a','t','c','h','i','n','g',' ','l','i','n','e','s','.','\n',
|
||||||
|
@ -53,7 +54,6 @@ constant char helpdata[] = {
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ','^','F',' ','o','r',' ','@',' ',' ','S','t','a','r','t',' ','s','e','a','r','c','h',' ','a','t',' ','F','I','R','S','T',' ','f','i','l','e',' ','(','f','o','r',' ','/',')',' ','o','r',' ','l','a','s','t',' ','f','i','l','e',' ','(','f','o','r',' ','?',')','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ','^','F',' ','o','r',' ','@',' ',' ','S','t','a','r','t',' ','s','e','a','r','c','h',' ','a','t',' ','F','I','R','S','T',' ','f','i','l','e',' ','(','f','o','r',' ','/',')',' ','o','r',' ','l','a','s','t',' ','f','i','l','e',' ','(','f','o','r',' ','?',')','.','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ','^','K',' ',' ',' ',' ',' ',' ',' ','H','i','g','h','l','i','g','h','t',' ','m','a','t','c','h','e','s',',',' ','b','u','t',' ','d','o','n','\'','t',' ','m','o','v','e',' ','(','K','E','E','P',' ','p','o','s','i','t','i','o','n',')','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ','^','K',' ',' ',' ',' ',' ',' ',' ','H','i','g','h','l','i','g','h','t',' ','m','a','t','c','h','e','s',',',' ','b','u','t',' ','d','o','n','\'','t',' ','m','o','v','e',' ','(','K','E','E','P',' ','p','o','s','i','t','i','o','n',')','.','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ','^','R',' ',' ',' ',' ',' ',' ',' ','D','o','n','\'','t',' ','u','s','e',' ','R','E','G','U','L','A','R',' ','E','X','P','R','E','S','S','I','O','N','S','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ','^','R',' ',' ',' ',' ',' ',' ',' ','D','o','n','\'','t',' ','u','s','e',' ','R','E','G','U','L','A','R',' ','E','X','P','R','E','S','S','I','O','N','S','.','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ','*',' ','a','n','d',' ','@',' ','m','o','d','i','f','i','e','r','s',' ','a','r','e',' ','r','e','c','o','g','n','i','z','e','d',' ','i','n',' ','l','e','s','s',' ','m','o','d','e',' ','o','n','l','y','.','\n',
|
|
||||||
' ','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','\n',
|
' ','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','\n',
|
||||||
'\n',
|
'\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','J','\b','J','U','\b','U','M','\b','M','P','\b','P','I','\b','I','N','\b','N','G','\b','G','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','J','\b','J','U','\b','U','M','\b','M','P','\b','P','I','\b','I','N','\b','N','G','\b','G','\n',
|
||||||
|
@ -120,12 +120,14 @@ constant char helpdata[] = {
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','i','s','p','l','a','y',' ','h','e','l','p',' ','(','f','r','o','m',' ','c','o','m','m','a','n','d',' ','l','i','n','e',')','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','i','s','p','l','a','y',' ','h','e','l','p',' ','(','f','r','o','m',' ','c','o','m','m','a','n','d',' ','l','i','n','e',')','.','\n',
|
||||||
' ',' ','-','a',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','s','e','a','r','c','h','-','s','k','i','p','-','s','c','r','e','e','n','\n',
|
' ',' ','-','a',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','s','e','a','r','c','h','-','s','k','i','p','-','s','c','r','e','e','n','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','F','o','r','w','a','r','d',' ','s','e','a','r','c','h',' ','s','k','i','p','s',' ','c','u','r','r','e','n','t',' ','s','c','r','e','e','n','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','F','o','r','w','a','r','d',' ','s','e','a','r','c','h',' ','s','k','i','p','s',' ','c','u','r','r','e','n','t',' ','s','c','r','e','e','n','.','\n',
|
||||||
|
' ',' ','-','A',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','S','E','A','R','C','H','-','S','K','I','P','-','S','C','R','E','E','N','\n',
|
||||||
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','F','o','r','w','a','r','d',' ','s','e','a','r','c','h',' ','a','l','w','a','y','s',' ','s','k','i','p','s',' ','t','a','r','g','e','t',' ','l','i','n','e','.','\n',
|
||||||
' ',' ','-','b',' ','[','_','\b','N',']',' ',' ','.','.','.','.',' ',' ','-','-','b','u','f','f','e','r','s','=','[','_','\b','N',']','\n',
|
' ',' ','-','b',' ','[','_','\b','N',']',' ',' ','.','.','.','.',' ',' ','-','-','b','u','f','f','e','r','s','=','[','_','\b','N',']','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','N','u','m','b','e','r',' ','o','f',' ','b','u','f','f','e','r','s','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','N','u','m','b','e','r',' ','o','f',' ','b','u','f','f','e','r','s','.','\n',
|
||||||
' ',' ','-','B',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','a','u','t','o','-','b','u','f','f','e','r','s','\n',
|
' ',' ','-','B',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','a','u','t','o','-','b','u','f','f','e','r','s','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','o','n','\'','t',' ','a','u','t','o','m','a','t','i','c','a','l','l','y',' ','a','l','l','o','c','a','t','e',' ','b','u','f','f','e','r','s',' ','f','o','r',' ','p','i','p','e','s','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','o','n','\'','t',' ','a','u','t','o','m','a','t','i','c','a','l','l','y',' ','a','l','l','o','c','a','t','e',' ','b','u','f','f','e','r','s',' ','f','o','r',' ','p','i','p','e','s','.','\n',
|
||||||
' ',' ','-','c',' ',' ','-','C',' ',' ','.','.','.','.',' ',' ','-','-','c','l','e','a','r','-','s','c','r','e','e','n',' ',' ','-','-','C','L','E','A','R','-','S','C','R','E','E','N','\n',
|
' ',' ','-','c',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','c','l','e','a','r','-','s','c','r','e','e','n','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','R','e','p','a','i','n','t',' ','b','y',' ','s','c','r','o','l','l','i','n','g','/','c','l','e','a','r','i','n','g','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','R','e','p','a','i','n','t',' ','b','y',' ','c','l','e','a','r','i','n','g',' ','r','a','t','h','e','r',' ','t','h','a','n',' ','s','c','r','o','l','l','i','n','g','.','\n',
|
||||||
' ',' ','-','d',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','d','u','m','b','\n',
|
' ',' ','-','d',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','d','u','m','b','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','u','m','b',' ','t','e','r','m','i','n','a','l','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','u','m','b',' ','t','e','r','m','i','n','a','l','.','\n',
|
||||||
' ',' ','-','D',' ','[','_','\b','x','_','\b','n','_','\b','.','_','\b','n',']',' ',' ','.',' ',' ','-','-','c','o','l','o','r','=','_','\b','x','_','\b','n','_','\b','.','_','\b','n','\n',
|
' ',' ','-','D',' ','[','_','\b','x','_','\b','n','_','\b','.','_','\b','n',']',' ',' ','.',' ',' ','-','-','c','o','l','o','r','=','_','\b','x','_','\b','n','_','\b','.','_','\b','n','\n',
|
||||||
|
@ -152,12 +154,14 @@ constant char helpdata[] = {
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','i','s','p','l','a','y',' ','a',' ','s','t','a','t','u','s',' ','c','o','l','u','m','n',' ','a','t',' ','l','e','f','t',' ','e','d','g','e',' ','o','f',' ','s','c','r','e','e','n','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','i','s','p','l','a','y',' ','a',' ','s','t','a','t','u','s',' ','c','o','l','u','m','n',' ','a','t',' ','l','e','f','t',' ','e','d','g','e',' ','o','f',' ','s','c','r','e','e','n','.','\n',
|
||||||
' ',' ','-','k',' ','[','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']',' ',' ','.',' ',' ','-','-','l','e','s','s','k','e','y','-','f','i','l','e','=','[','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']','\n',
|
' ',' ','-','k',' ','[','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']',' ',' ','.',' ',' ','-','-','l','e','s','s','k','e','y','-','f','i','l','e','=','[','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','U','s','e',' ','a',' ','l','e','s','s','k','e','y',' ','f','i','l','e','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','U','s','e',' ','a',' ','l','e','s','s','k','e','y',' ','f','i','l','e','.','\n',
|
||||||
|
' ',' ','-','K',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-','-','q','u','i','t','-','o','n','-','i','n','t','r','\n',
|
||||||
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','x','i','t',' ','l','e','s','s',' ','i','n',' ','r','e','s','p','o','n','s','e',' ','t','o',' ','c','t','r','l','-','C','.','\n',
|
||||||
' ',' ','-','L',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','n','o','-','l','e','s','s','o','p','e','n','\n',
|
' ',' ','-','L',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','n','o','-','l','e','s','s','o','p','e','n','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','I','g','n','o','r','e',' ','t','h','e',' ','L','E','S','S','O','P','E','N',' ','e','n','v','i','r','o','n','m','e','n','t',' ','v','a','r','i','a','b','l','e','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','I','g','n','o','r','e',' ','t','h','e',' ','L','E','S','S','O','P','E','N',' ','e','n','v','i','r','o','n','m','e','n','t',' ','v','a','r','i','a','b','l','e','.','\n',
|
||||||
' ',' ','-','m',' ',' ','-','M',' ',' ','.','.','.','.',' ',' ','-','-','l','o','n','g','-','p','r','o','m','p','t',' ',' ','-','-','L','O','N','G','-','P','R','O','M','P','T','\n',
|
' ',' ','-','m',' ',' ','-','M',' ',' ','.','.','.','.',' ',' ','-','-','l','o','n','g','-','p','r','o','m','p','t',' ',' ','-','-','L','O','N','G','-','P','R','O','M','P','T','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','S','e','t',' ','p','r','o','m','p','t',' ','s','t','y','l','e','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','S','e','t',' ','p','r','o','m','p','t',' ','s','t','y','l','e','.','\n',
|
||||||
' ',' ','-','n',' ',' ','-','N',' ',' ','.','.','.','.',' ',' ','-','-','l','i','n','e','-','n','u','m','b','e','r','s',' ',' ','-','-','L','I','N','E','-','N','U','M','B','E','R','S','\n',
|
' ',' ','-','n',' ',' ','-','N',' ',' ','.','.','.','.',' ',' ','-','-','l','i','n','e','-','n','u','m','b','e','r','s',' ',' ','-','-','L','I','N','E','-','N','U','M','B','E','R','S','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','U','s','e',' ','l','i','n','e',' ','n','u','m','b','e','r','s','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','o','n','\'','t',' ','u','s','e',' ','l','i','n','e',' ','n','u','m','b','e','r','s','.','\n',
|
||||||
' ',' ','-','o',' ','[','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']',' ',' ','.',' ',' ','-','-','l','o','g','-','f','i','l','e','=','[','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']','\n',
|
' ',' ','-','o',' ','[','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']',' ',' ','.',' ',' ','-','-','l','o','g','-','f','i','l','e','=','[','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','C','o','p','y',' ','t','o',' ','l','o','g',' ','f','i','l','e',' ','(','s','t','a','n','d','a','r','d',' ','i','n','p','u','t',' ','o','n','l','y',')','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','C','o','p','y',' ','t','o',' ','l','o','g',' ','f','i','l','e',' ','(','s','t','a','n','d','a','r','d',' ','i','n','p','u','t',' ','o','n','l','y',')','.','\n',
|
||||||
' ',' ','-','O',' ','[','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']',' ',' ','.',' ',' ','-','-','L','O','G','-','F','I','L','E','=','[','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']','\n',
|
' ',' ','-','O',' ','[','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']',' ',' ','.',' ',' ','-','-','L','O','G','-','F','I','L','E','=','[','_','\b','f','_','\b','i','_','\b','l','_','\b','e',']','\n',
|
||||||
|
@ -202,6 +206,11 @@ constant char helpdata[] = {
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','o','n','\'','t',' ','d','i','s','p','l','a','y',' ','t','i','l','d','e','s',' ','a','f','t','e','r',' ','e','n','d',' ','o','f',' ','f','i','l','e','.','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','o','n','\'','t',' ','d','i','s','p','l','a','y',' ','t','i','l','d','e','s',' ','a','f','t','e','r',' ','e','n','d',' ','o','f',' ','f','i','l','e','.','\n',
|
||||||
' ',' ','-','#',' ','[','_','\b','N',']',' ',' ','.','.','.','.',' ',' ','-','-','s','h','i','f','t','=','[','_','\b','N',']','\n',
|
' ',' ','-','#',' ','[','_','\b','N',']',' ',' ','.','.','.','.',' ',' ','-','-','s','h','i','f','t','=','[','_','\b','N',']','\n',
|
||||||
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','H','o','r','i','z','o','n','t','a','l',' ','s','c','r','o','l','l',' ','a','m','o','u','n','t',' ','(','0',' ','=',' ','o','n','e',' ','h','a','l','f',' ','s','c','r','e','e','n',' ','w','i','d','t','h',')','\n',
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','H','o','r','i','z','o','n','t','a','l',' ','s','c','r','o','l','l',' ','a','m','o','u','n','t',' ','(','0',' ','=',' ','o','n','e',' ','h','a','l','f',' ','s','c','r','e','e','n',' ','w','i','d','t','h',')','\n',
|
||||||
|
' ',' ',' ',' ',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','n','o','-','k','e','y','p','a','d','\n',
|
||||||
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','D','o','n','\'','t',' ','s','e','n','d',' ','k','e','y','p','a','d',' ','i','n','i','t','/','d','e','i','n','i','t',' ','s','e','q','u','e','n','c','e','.','\n',
|
||||||
|
' ',' ',' ',' ',' ',' ','.','.','.','.','.','.','.','.',' ',' ','-','-','f','o','l','l','o','w','-','n','a','m','e','\n',
|
||||||
|
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','T','h','e',' ','F',' ','c','o','m','m','a','n','d',' ','c','h','a','n','g','e','s',' ','f','i','l','e','s',' ','i','f',' ','t','h','e',' ','i','n','p','u','t',' ','f','i','l','e',' ','i','s',' ','r','e','n','a','m','e','d','.','\n',
|
||||||
|
'\n',
|
||||||
'\n',
|
'\n',
|
||||||
' ','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','\n',
|
' ','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','\n',
|
||||||
'\n',
|
'\n',
|
||||||
|
@ -226,6 +235,7 @@ constant char helpdata[] = {
|
||||||
' ','T','A','B',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','C','o','m','p','l','e','t','e',' ','f','i','l','e','n','a','m','e',' ','&',' ','c','y','c','l','e','.','\n',
|
' ','T','A','B',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','C','o','m','p','l','e','t','e',' ','f','i','l','e','n','a','m','e',' ','&',' ','c','y','c','l','e','.','\n',
|
||||||
' ','S','H','I','F','T','-','T','A','B',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','S','C','-','T','A','B',' ',' ',' ','C','o','m','p','l','e','t','e',' ','f','i','l','e','n','a','m','e',' ','&',' ','r','e','v','e','r','s','e',' ','c','y','c','l','e','.','\n',
|
' ','S','H','I','F','T','-','T','A','B',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','S','C','-','T','A','B',' ',' ',' ','C','o','m','p','l','e','t','e',' ','f','i','l','e','n','a','m','e',' ','&',' ','r','e','v','e','r','s','e',' ','c','y','c','l','e','.','\n',
|
||||||
' ','C','N','T','L','-','L',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','C','o','m','p','l','e','t','e',' ','f','i','l','e','n','a','m','e',',',' ','l','i','s','t',' ','a','l','l','.','\n',
|
' ','C','N','T','L','-','L',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','C','o','m','p','l','e','t','e',' ','f','i','l','e','n','a','m','e',',',' ','l','i','s','t',' ','a','l','l','.','\n',
|
||||||
|
'\n',
|
||||||
'\n',
|
'\n',
|
||||||
0 };
|
0 };
|
||||||
#endif
|
#endif
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: ifile.c,v 1.6 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: ifile.c,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
|
@ -1,5 +1,7 @@
|
||||||
|
/* $NetBSD: input.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -53,13 +55,14 @@ forw_line(curr_pos)
|
||||||
int endline;
|
int endline;
|
||||||
int backchars;
|
int backchars;
|
||||||
|
|
||||||
|
get_forw_line:
|
||||||
if (curr_pos == NULL_POSITION)
|
if (curr_pos == NULL_POSITION)
|
||||||
{
|
{
|
||||||
null_line();
|
null_line();
|
||||||
return (NULL_POSITION);
|
return (NULL_POSITION);
|
||||||
}
|
}
|
||||||
#if HILITE_SEARCH
|
#if HILITE_SEARCH
|
||||||
if (hilite_search == OPT_ONPLUS || status_col)
|
if (hilite_search == OPT_ONPLUS || is_filtering() || status_col)
|
||||||
/*
|
/*
|
||||||
* If we are ignoring EOI (command F), only prepare
|
* If we are ignoring EOI (command F), only prepare
|
||||||
* one line ahead, to avoid getting stuck waiting for
|
* one line ahead, to avoid getting stuck waiting for
|
||||||
|
@ -76,6 +79,9 @@ forw_line(curr_pos)
|
||||||
return (NULL_POSITION);
|
return (NULL_POSITION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Step back to the beginning of the line.
|
||||||
|
*/
|
||||||
base_pos = curr_pos;
|
base_pos = curr_pos;
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
|
@ -95,10 +101,14 @@ forw_line(curr_pos)
|
||||||
--base_pos;
|
--base_pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read forward again to the position we should start at.
|
||||||
|
*/
|
||||||
prewind();
|
prewind();
|
||||||
plinenum(base_pos);
|
plinenum(base_pos);
|
||||||
(void) ch_seek(base_pos);
|
(void) ch_seek(base_pos);
|
||||||
while (base_pos < curr_pos)
|
new_pos = base_pos;
|
||||||
|
while (new_pos < curr_pos)
|
||||||
{
|
{
|
||||||
if (ABORT_SIGS())
|
if (ABORT_SIGS())
|
||||||
{
|
{
|
||||||
|
@ -106,12 +116,12 @@ forw_line(curr_pos)
|
||||||
return (NULL_POSITION);
|
return (NULL_POSITION);
|
||||||
}
|
}
|
||||||
c = ch_forw_get();
|
c = ch_forw_get();
|
||||||
backchars = pappend(c, base_pos);
|
backchars = pappend(c, new_pos);
|
||||||
base_pos++;
|
new_pos++;
|
||||||
if (backchars > 0)
|
if (backchars > 0)
|
||||||
{
|
{
|
||||||
pshift_all();
|
pshift_all();
|
||||||
base_pos -= backchars;
|
new_pos -= backchars;
|
||||||
while (--backchars >= 0)
|
while (--backchars >= 0)
|
||||||
(void) ch_back_get();
|
(void) ch_back_get();
|
||||||
}
|
}
|
||||||
|
@ -119,6 +129,9 @@ forw_line(curr_pos)
|
||||||
(void) pflushmbc();
|
(void) pflushmbc();
|
||||||
pshift_all();
|
pshift_all();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read the first character to display.
|
||||||
|
*/
|
||||||
c = ch_forw_get();
|
c = ch_forw_get();
|
||||||
if (c == EOI)
|
if (c == EOI)
|
||||||
{
|
{
|
||||||
|
@ -127,6 +140,9 @@ forw_line(curr_pos)
|
||||||
}
|
}
|
||||||
blankline = (c == '\n' || c == '\r');
|
blankline = (c == '\n' || c == '\r');
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Read each character in the line and append to the line buffer.
|
||||||
|
*/
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
if (ABORT_SIGS())
|
if (ABORT_SIGS())
|
||||||
|
@ -167,6 +183,11 @@ forw_line(curr_pos)
|
||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
if (ABORT_SIGS())
|
||||||
|
{
|
||||||
|
null_line();
|
||||||
|
return (NULL_POSITION);
|
||||||
|
}
|
||||||
c = ch_forw_get();
|
c = ch_forw_get();
|
||||||
} while (c != '\n' && c != EOI);
|
} while (c != '\n' && c != EOI);
|
||||||
new_pos = ch_tell();
|
new_pos = ch_tell();
|
||||||
|
@ -181,7 +202,23 @@ forw_line(curr_pos)
|
||||||
}
|
}
|
||||||
c = ch_forw_get();
|
c = ch_forw_get();
|
||||||
}
|
}
|
||||||
pdone(endline);
|
|
||||||
|
pdone(endline, 1);
|
||||||
|
|
||||||
|
#if HILITE_SEARCH
|
||||||
|
if (is_filtered(base_pos))
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* We don't want to display this line.
|
||||||
|
* Get the next line.
|
||||||
|
*/
|
||||||
|
curr_pos = new_pos;
|
||||||
|
goto get_forw_line;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (status_col && is_hilited(base_pos, ch_tell()-1, 1, NULL))
|
||||||
|
set_status_col('*');
|
||||||
|
#endif
|
||||||
|
|
||||||
if (squeeze && blankline)
|
if (squeeze && blankline)
|
||||||
{
|
{
|
||||||
|
@ -215,18 +252,19 @@ forw_line(curr_pos)
|
||||||
back_line(curr_pos)
|
back_line(curr_pos)
|
||||||
POSITION curr_pos;
|
POSITION curr_pos;
|
||||||
{
|
{
|
||||||
POSITION new_pos, begin_new_pos;
|
POSITION new_pos, begin_new_pos, base_pos;
|
||||||
int c;
|
int c;
|
||||||
int endline;
|
int endline;
|
||||||
int backchars;
|
int backchars;
|
||||||
|
|
||||||
|
get_back_line:
|
||||||
if (curr_pos == NULL_POSITION || curr_pos <= ch_zero())
|
if (curr_pos == NULL_POSITION || curr_pos <= ch_zero())
|
||||||
{
|
{
|
||||||
null_line();
|
null_line();
|
||||||
return (NULL_POSITION);
|
return (NULL_POSITION);
|
||||||
}
|
}
|
||||||
#if HILITE_SEARCH
|
#if HILITE_SEARCH
|
||||||
if (hilite_search == OPT_ONPLUS || status_col)
|
if (hilite_search == OPT_ONPLUS || is_filtering() || status_col)
|
||||||
prep_hilite((curr_pos < 3*size_linebuf) ?
|
prep_hilite((curr_pos < 3*size_linebuf) ?
|
||||||
0 : curr_pos - 3*size_linebuf, curr_pos, -1);
|
0 : curr_pos - 3*size_linebuf, curr_pos, -1);
|
||||||
#endif
|
#endif
|
||||||
|
@ -241,9 +279,9 @@ back_line(curr_pos)
|
||||||
/*
|
/*
|
||||||
* Find out if the "current" line was blank.
|
* Find out if the "current" line was blank.
|
||||||
*/
|
*/
|
||||||
(void) ch_forw_get(); /* Skip the newline */
|
(void) ch_forw_get(); /* Skip the newline */
|
||||||
c = ch_forw_get(); /* First char of "current" line */
|
c = ch_forw_get(); /* First char of "current" line */
|
||||||
(void) ch_back_get(); /* Restore our position */
|
(void) ch_back_get(); /* Restore our position */
|
||||||
(void) ch_back_get();
|
(void) ch_back_get();
|
||||||
|
|
||||||
if (c == '\n' || c == '\r')
|
if (c == '\n' || c == '\r')
|
||||||
|
@ -285,7 +323,7 @@ back_line(curr_pos)
|
||||||
* This is the newline ending the previous line.
|
* This is the newline ending the previous line.
|
||||||
* We have hit the beginning of the line.
|
* We have hit the beginning of the line.
|
||||||
*/
|
*/
|
||||||
new_pos = ch_tell() + 1;
|
base_pos = ch_tell() + 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (c == EOI)
|
if (c == EOI)
|
||||||
|
@ -295,7 +333,7 @@ back_line(curr_pos)
|
||||||
* This must be the first line in the file.
|
* This must be the first line in the file.
|
||||||
* This must, of course, be the beginning of the line.
|
* This must, of course, be the beginning of the line.
|
||||||
*/
|
*/
|
||||||
new_pos = ch_tell();
|
base_pos = ch_tell();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -309,6 +347,7 @@ back_line(curr_pos)
|
||||||
* are much longer than the screen width,
|
* are much longer than the screen width,
|
||||||
* but I don't know of any better way. }}
|
* but I don't know of any better way. }}
|
||||||
*/
|
*/
|
||||||
|
new_pos = base_pos;
|
||||||
if (ch_seek(new_pos))
|
if (ch_seek(new_pos))
|
||||||
{
|
{
|
||||||
null_line();
|
null_line();
|
||||||
|
@ -366,7 +405,22 @@ back_line(curr_pos)
|
||||||
}
|
}
|
||||||
} while (new_pos < curr_pos);
|
} while (new_pos < curr_pos);
|
||||||
|
|
||||||
pdone(endline);
|
pdone(endline, 0);
|
||||||
|
|
||||||
|
#if HILITE_SEARCH
|
||||||
|
if (is_filtered(base_pos))
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* We don't want to display this line.
|
||||||
|
* Get the previous line.
|
||||||
|
*/
|
||||||
|
curr_pos = begin_new_pos;
|
||||||
|
goto get_back_line;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (status_col && is_hilited(base_pos, ch_tell()-1, 1, NULL))
|
||||||
|
set_status_col('*');
|
||||||
|
#endif
|
||||||
|
|
||||||
return (begin_new_pos);
|
return (begin_new_pos);
|
||||||
}
|
}
|
119
external/bsd/less/dist/install.sh
vendored
Normal file
119
external/bsd/less/dist/install.sh
vendored
Normal file
|
@ -0,0 +1,119 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# install - install a program, script, or datafile
|
||||||
|
# This comes from X11R5; it is not part of GNU.
|
||||||
|
#
|
||||||
|
# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
|
||||||
|
#
|
||||||
|
# This script is compatible with the BSD install script, but was written
|
||||||
|
# from scratch.
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
# set DOITPROG to echo to test this script
|
||||||
|
|
||||||
|
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||||
|
doit="${DOITPROG-}"
|
||||||
|
|
||||||
|
|
||||||
|
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||||
|
|
||||||
|
mvprog="${MVPROG-mv}"
|
||||||
|
cpprog="${CPPROG-cp}"
|
||||||
|
chmodprog="${CHMODPROG-chmod}"
|
||||||
|
chownprog="${CHOWNPROG-chown}"
|
||||||
|
chgrpprog="${CHGRPPROG-chgrp}"
|
||||||
|
stripprog="${STRIPPROG-strip}"
|
||||||
|
rmprog="${RMPROG-rm}"
|
||||||
|
|
||||||
|
instcmd="$mvprog"
|
||||||
|
chmodcmd=""
|
||||||
|
chowncmd=""
|
||||||
|
chgrpcmd=""
|
||||||
|
stripcmd=""
|
||||||
|
rmcmd="$rmprog -f"
|
||||||
|
mvcmd="$mvprog"
|
||||||
|
src=""
|
||||||
|
dst=""
|
||||||
|
|
||||||
|
while [ x"$1" != x ]; do
|
||||||
|
case $1 in
|
||||||
|
-c) instcmd="$cpprog"
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-m) chmodcmd="$chmodprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-o) chowncmd="$chownprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-g) chgrpcmd="$chgrpprog $2"
|
||||||
|
shift
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
-s) stripcmd="$stripprog"
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
|
||||||
|
*) if [ x"$src" = x ]
|
||||||
|
then
|
||||||
|
src=$1
|
||||||
|
else
|
||||||
|
dst=$1
|
||||||
|
fi
|
||||||
|
shift
|
||||||
|
continue;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ x"$src" = x ]
|
||||||
|
then
|
||||||
|
echo "install: no input file specified"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ x"$dst" = x ]
|
||||||
|
then
|
||||||
|
echo "install: no destination specified"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
# If destination is a directory, append the input filename; if your system
|
||||||
|
# does not like double slashes in filenames, you may need to add some logic
|
||||||
|
|
||||||
|
if [ -d $dst ]
|
||||||
|
then
|
||||||
|
dst="$dst"/`basename $src`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Make a temp file name in the proper directory.
|
||||||
|
|
||||||
|
dstdir=`dirname $dst`
|
||||||
|
dsttmp=$dstdir/_inst.$$_
|
||||||
|
|
||||||
|
# Move or copy the file name to the temp name
|
||||||
|
|
||||||
|
$doit $instcmd $src $dsttmp
|
||||||
|
|
||||||
|
# and set any options; do chmod last to preserve setuid bits
|
||||||
|
|
||||||
|
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi
|
||||||
|
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi
|
||||||
|
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi
|
||||||
|
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi
|
||||||
|
|
||||||
|
# Now rename the file to the real destination.
|
||||||
|
|
||||||
|
$doit $rmcmd $dst
|
||||||
|
$doit $mvcmd $dsttmp $dst
|
||||||
|
|
||||||
|
|
||||||
|
exit 0
|
|
@ -1,5 +1,7 @@
|
||||||
|
/* $NetBSD: jump.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -16,7 +18,6 @@
|
||||||
#include "less.h"
|
#include "less.h"
|
||||||
#include "position.h"
|
#include "position.h"
|
||||||
|
|
||||||
extern int hit_eof;
|
|
||||||
extern int jump_sline;
|
extern int jump_sline;
|
||||||
extern int squished;
|
extern int squished;
|
||||||
extern int screen_trashed;
|
extern int screen_trashed;
|
||||||
|
@ -31,22 +32,35 @@ extern int top_scroll;
|
||||||
jump_forw()
|
jump_forw()
|
||||||
{
|
{
|
||||||
POSITION pos;
|
POSITION pos;
|
||||||
|
POSITION end_pos;
|
||||||
|
|
||||||
if (ch_end_seek())
|
if (ch_end_seek())
|
||||||
{
|
{
|
||||||
error("Cannot seek to end of file", NULL_PARG);
|
error("Cannot seek to end of file", NULL_PARG);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* Note; lastmark will be called later by jump_loc, but it fails
|
||||||
|
* because the position table has been cleared by pos_clear below.
|
||||||
|
* So call it here before calling pos_clear.
|
||||||
|
*/
|
||||||
|
lastmark();
|
||||||
/*
|
/*
|
||||||
* Position the last line in the file at the last screen line.
|
* Position the last line in the file at the last screen line.
|
||||||
* Go back one line from the end of the file
|
* Go back one line from the end of the file
|
||||||
* to get to the beginning of the last line.
|
* to get to the beginning of the last line.
|
||||||
*/
|
*/
|
||||||
pos = back_line(ch_tell());
|
pos_clear();
|
||||||
|
end_pos = ch_tell();
|
||||||
|
pos = back_line(end_pos);
|
||||||
if (pos == NULL_POSITION)
|
if (pos == NULL_POSITION)
|
||||||
jump_loc((POSITION)0, sc_height-1);
|
jump_loc((POSITION)0, sc_height-1);
|
||||||
else
|
else
|
||||||
|
{
|
||||||
jump_loc(pos, sc_height-1);
|
jump_loc(pos, sc_height-1);
|
||||||
|
if (position(sc_height-1) != end_pos)
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -102,8 +116,9 @@ repaint()
|
||||||
* Jump to a specified percentage into the file.
|
* Jump to a specified percentage into the file.
|
||||||
*/
|
*/
|
||||||
public void
|
public void
|
||||||
jump_percent(percent)
|
jump_percent(percent, fraction)
|
||||||
int percent;
|
int percent;
|
||||||
|
long fraction;
|
||||||
{
|
{
|
||||||
POSITION pos, len;
|
POSITION pos, len;
|
||||||
|
|
||||||
|
@ -121,7 +136,7 @@ jump_percent(percent)
|
||||||
error("Don't know length of file", NULL_PARG);
|
error("Don't know length of file", NULL_PARG);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
pos = percent_pos(len, percent);
|
pos = percent_pos(len, percent, fraction);
|
||||||
if (pos >= len)
|
if (pos >= len)
|
||||||
pos = len-1;
|
pos = len-1;
|
||||||
|
|
||||||
|
@ -186,8 +201,10 @@ jump_loc(pos, sline)
|
||||||
forw(nline, position(BOTTOM_PLUS_ONE), 1, 0, 0);
|
forw(nline, position(BOTTOM_PLUS_ONE), 1, 0, 0);
|
||||||
else
|
else
|
||||||
back(-nline, position(TOP), 1, 0);
|
back(-nline, position(TOP), 1, 0);
|
||||||
|
#if HILITE_SEARCH
|
||||||
if (show_attn)
|
if (show_attn)
|
||||||
repaint_hilite(1);
|
repaint_hilite(1);
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,8 +242,10 @@ jump_loc(pos, sline)
|
||||||
* that we can just scroll there after all.
|
* that we can just scroll there after all.
|
||||||
*/
|
*/
|
||||||
forw(sc_height-sline+nline-1, bpos, 1, 0, 0);
|
forw(sc_height-sline+nline-1, bpos, 1, 0, 0);
|
||||||
|
#if HILITE_SEARCH
|
||||||
if (show_attn)
|
if (show_attn)
|
||||||
repaint_hilite(1);
|
repaint_hilite(1);
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
pos = back_line(pos);
|
pos = back_line(pos);
|
||||||
|
@ -242,7 +261,6 @@ jump_loc(pos, sline)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lastmark();
|
lastmark();
|
||||||
hit_eof = 0;
|
|
||||||
squished = 0;
|
squished = 0;
|
||||||
screen_trashed = 0;
|
screen_trashed = 0;
|
||||||
forw(sc_height-1, pos, 1, 0, sline-nline);
|
forw(sc_height-1, pos, 1, 0, sline-nline);
|
||||||
|
@ -274,13 +292,15 @@ jump_loc(pos, sline)
|
||||||
* that we can just scroll there after all.
|
* that we can just scroll there after all.
|
||||||
*/
|
*/
|
||||||
back(nline+1, tpos, 1, 0);
|
back(nline+1, tpos, 1, 0);
|
||||||
|
#if HILITE_SEARCH
|
||||||
if (show_attn)
|
if (show_attn)
|
||||||
repaint_hilite(1);
|
repaint_hilite(1);
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lastmark();
|
lastmark();
|
||||||
if (top_scroll != OPT_ON)
|
if (!top_scroll)
|
||||||
clear();
|
clear();
|
||||||
else
|
else
|
||||||
home();
|
home();
|
|
@ -1,8 +1,6 @@
|
||||||
.\" $NetBSD: less.1,v 1.17 2006/12/17 16:16:53 jmmv Exp $
|
.TH LESS 1 "Version 444: 09 Jun 2011"
|
||||||
.\"
|
|
||||||
.TH LESS 1 "Version 394: 03 Dec 2005"
|
|
||||||
.SH NAME
|
.SH NAME
|
||||||
less \- opposite of more (a filter for browsing text files)
|
less \- opposite of more
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B "less \-?"
|
.B "less \-?"
|
||||||
.br
|
.br
|
||||||
|
@ -12,7 +10,7 @@ less \- opposite of more (a filter for browsing text files)
|
||||||
.br
|
.br
|
||||||
.B "less \-\-version"
|
.B "less \-\-version"
|
||||||
.br
|
.br
|
||||||
.B "less [\-[+]aBcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]"
|
.B "less [\-[+]aABcCdeEfFgGiIJKLmMnNqQrRsSuUVwWX~]"
|
||||||
.br
|
.br
|
||||||
.B " [\-b \fIspace\fP] [\-h \fIlines\fP] [\-j \fIline\fP] [\-k \fIkeyfile\fP]"
|
.B " [\-b \fIspace\fP] [\-h \fIlines\fP] [\-j \fIline\fP] [\-k \fIkeyfile\fP]"
|
||||||
.br
|
.br
|
||||||
|
@ -22,43 +20,20 @@ less \- opposite of more (a filter for browsing text files)
|
||||||
.br
|
.br
|
||||||
.B " [\-# \fIshift\fP] [+[+]\fIcmd\fP] [\-\-] [\fIfilename\fP]..."
|
.B " [\-# \fIshift\fP] [+[+]\fIcmd\fP] [\-\-] [\fIfilename\fP]..."
|
||||||
.br
|
.br
|
||||||
.B "more [options]"
|
|
||||||
.br
|
|
||||||
.B "page [options]"
|
|
||||||
.br
|
|
||||||
(See the OPTIONS section for alternate option syntax with long option names.)
|
(See the OPTIONS section for alternate option syntax with long option names.)
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.I Less
|
.I Less
|
||||||
is a program similar to
|
is a program similar to
|
||||||
.I more
|
.I more
|
||||||
(1), a filter that shows text one page at a time.
|
(1), but which allows backward movement
|
||||||
In NetBSD the two utilities are implemented by the same binary but they
|
in the file as well as forward movement.
|
||||||
expose slightly different behavior.
|
Also,
|
||||||
Their differences are detailed below:
|
|
||||||
.IP \(bu 4
|
|
||||||
.I less
|
|
||||||
allows backward movement in the file as well as forward movement.
|
|
||||||
.IP \(bu 4
|
|
||||||
.I less
|
.I less
|
||||||
does not have to read the entire input file before starting,
|
does not have to read the entire input file before starting,
|
||||||
so with large input files it starts up faster than text editors like
|
so with large input files it starts up faster than text editors like
|
||||||
.I vi
|
.I vi
|
||||||
(1).
|
(1).
|
||||||
.IP \(bu 4
|
|
||||||
.I more
|
|
||||||
ignores * and @ in search commands.
|
|
||||||
.IP \(bu 4
|
|
||||||
.I less
|
|
||||||
does not clear the screen or squish it to the bottom, for the first
|
|
||||||
page, or when exiting.
|
|
||||||
.IP \(bu 4
|
|
||||||
.I more
|
|
||||||
sets the -E -m -G -f flags automatically.
|
|
||||||
.IP \(bu 4
|
|
||||||
.I more
|
|
||||||
uses $MORE instead of $LESS for extra options.
|
|
||||||
.PP
|
|
||||||
.I Less
|
.I Less
|
||||||
uses termcap (or terminfo on some systems),
|
uses termcap (or terminfo on some systems),
|
||||||
so it can run on a variety of terminals.
|
so it can run on a variety of terminals.
|
||||||
|
@ -90,7 +65,7 @@ Like SPACE, but if N is specified, it becomes the new window size.
|
||||||
.IP "ESC-SPACE"
|
.IP "ESC-SPACE"
|
||||||
Like SPACE, but scrolls a full screenful, even if it reaches
|
Like SPACE, but scrolls a full screenful, even if it reaches
|
||||||
end-of-file in the process.
|
end-of-file in the process.
|
||||||
.IP "RETURN or ^N or e or ^E or j or ^J"
|
.IP "ENTER or RETURN or ^N or e or ^E or j or ^J"
|
||||||
Scroll forward N lines, default 1.
|
Scroll forward N lines, default 1.
|
||||||
The entire N lines are displayed, even if N is more than the screen size.
|
The entire N lines are displayed, even if N is more than the screen size.
|
||||||
.IP "d or ^D"
|
.IP "d or ^D"
|
||||||
|
@ -134,17 +109,19 @@ Normally this command would be used when already at the end of the file.
|
||||||
It is a way to monitor the tail of a file which is growing
|
It is a way to monitor the tail of a file which is growing
|
||||||
while it is being viewed.
|
while it is being viewed.
|
||||||
(The behavior is similar to the "tail \-f" command.)
|
(The behavior is similar to the "tail \-f" command.)
|
||||||
.IP "g or \*[Lt] or ESC-\*[Lt]"
|
.IP "g or < or ESC-<"
|
||||||
Go to line N in the file, default 1 (beginning of file).
|
Go to line N in the file, default 1 (beginning of file).
|
||||||
(Warning: this may be slow if N is large.)
|
(Warning: this may be slow if N is large.)
|
||||||
.IP "G or \*[Gt] or ESC-\*[Gt]"
|
.IP "G or > or ESC->"
|
||||||
Go to line N in the file, default the end of the file.
|
Go to line N in the file, default the end of the file.
|
||||||
(Warning: this may be slow if N is large,
|
(Warning: this may be slow if N is large,
|
||||||
or if N is not specified and
|
or if N is not specified and
|
||||||
standard input, rather than a file, is being read.)
|
standard input, rather than a file, is being read.)
|
||||||
.IP "p or %"
|
.IP "p or %"
|
||||||
Go to a position N percent into the file.
|
Go to a position N percent into the file.
|
||||||
N should be between 0 and 100.
|
N should be between 0 and 100, and may contain a decimal point.
|
||||||
|
.IP "P"
|
||||||
|
Go to the line containing byte offset N in the file.
|
||||||
.IP "{"
|
.IP "{"
|
||||||
If a left curly bracket appears in the top line displayed
|
If a left curly bracket appears in the top line displayed
|
||||||
on the screen,
|
on the screen,
|
||||||
|
@ -173,14 +150,14 @@ Like }, but applies to square brackets rather than curly brackets.
|
||||||
Followed by two characters,
|
Followed by two characters,
|
||||||
acts like {, but uses the two characters as open and close brackets,
|
acts like {, but uses the two characters as open and close brackets,
|
||||||
respectively.
|
respectively.
|
||||||
For example, "ESC ^F \*[Lt] \*[Gt]" could be used to
|
For example, "ESC ^F < >" could be used to
|
||||||
go forward to the \*[Gt] which matches the \*[Lt] in the top displayed line.
|
go forward to the > which matches the < in the top displayed line.
|
||||||
.IP "ESC-^B"
|
.IP "ESC-^B"
|
||||||
Followed by two characters,
|
Followed by two characters,
|
||||||
acts like }, but uses the two characters as open and close brackets,
|
acts like }, but uses the two characters as open and close brackets,
|
||||||
respectively.
|
respectively.
|
||||||
For example, "ESC ^B \*[Lt] \*[Gt]" could be used to
|
For example, "ESC ^B < >" could be used to
|
||||||
go backward to the \*[Lt] which matches the \*[Gt] in the bottom displayed line.
|
go backward to the < which matches the > in the bottom displayed line.
|
||||||
.IP m
|
.IP m
|
||||||
Followed by any lowercase letter,
|
Followed by any lowercase letter,
|
||||||
marks the current position with that letter.
|
marks the current position with that letter.
|
||||||
|
@ -199,10 +176,9 @@ Same as single quote.
|
||||||
.IP /pattern
|
.IP /pattern
|
||||||
Search forward in the file for the N-th line containing the pattern.
|
Search forward in the file for the N-th line containing the pattern.
|
||||||
N defaults to 1.
|
N defaults to 1.
|
||||||
When invoked as less, the pattern is an extended regular expression.
|
The pattern is a regular expression, as recognized by
|
||||||
Otherwise, the pattern is a basic regular expression, as recognized by
|
the regular expression library supplied by your system.
|
||||||
.I ed.
|
The search starts at the first line displayed
|
||||||
The search starts at the second line displayed
|
|
||||||
(but see the \-a and \-j options, which change this).
|
(but see the \-a and \-j options, which change this).
|
||||||
.sp
|
.sp
|
||||||
Certain characters are special
|
Certain characters are special
|
||||||
|
@ -216,13 +192,11 @@ Search multiple files.
|
||||||
That is, if the search reaches the END of the current file
|
That is, if the search reaches the END of the current file
|
||||||
without finding a match,
|
without finding a match,
|
||||||
the search continues in the next file in the command line list.
|
the search continues in the next file in the command line list.
|
||||||
The * modifier is available when invoked as less only.
|
|
||||||
.IP "^F or @"
|
.IP "^F or @"
|
||||||
Begin the search at the first line of the FIRST file
|
Begin the search at the first line of the FIRST file
|
||||||
in the command line list,
|
in the command line list,
|
||||||
regardless of what is currently displayed on the screen
|
regardless of what is currently displayed on the screen
|
||||||
or the settings of the \-a or \-j options.
|
or the settings of the \-a or \-j options.
|
||||||
The @ modifier is available when invoked as less only.
|
|
||||||
.IP "^K"
|
.IP "^K"
|
||||||
Highlight any text which matches the pattern on the current screen,
|
Highlight any text which matches the pattern on the current screen,
|
||||||
but don't move to the first match (KEEP current position).
|
but don't move to the first match (KEEP current position).
|
||||||
|
@ -282,6 +256,23 @@ turn highlighting back on.
|
||||||
Any search command will also turn highlighting back on.
|
Any search command will also turn highlighting back on.
|
||||||
(Highlighting can also be disabled by toggling the \-G option;
|
(Highlighting can also be disabled by toggling the \-G option;
|
||||||
in that case search commands do not turn highlighting back on.)
|
in that case search commands do not turn highlighting back on.)
|
||||||
|
.IP "&pattern"
|
||||||
|
Display only lines which match the pattern;
|
||||||
|
lines which do not match the pattern are not displayed.
|
||||||
|
If pattern is empty (if you type & immediately followed by ENTER),
|
||||||
|
any filtering is turned off, and all lines are displayed.
|
||||||
|
While filtering is in effect, an ampersand is displayed at the
|
||||||
|
beginning of the prompt,
|
||||||
|
as a reminder that some lines in the file may be hidden.
|
||||||
|
.sp
|
||||||
|
Certain characters are special as in the / command:
|
||||||
|
.RS
|
||||||
|
.IP "^N or !"
|
||||||
|
Display only lines which do NOT match the pattern.
|
||||||
|
.IP "^R"
|
||||||
|
Don't interpret regular expression metacharacters;
|
||||||
|
that is, do a simple textual comparison.
|
||||||
|
.RE
|
||||||
.IP ":e [filename]"
|
.IP ":e [filename]"
|
||||||
Examine a new file.
|
Examine a new file.
|
||||||
If the filename is missing, the "current" file (see the :n and :p commands
|
If the filename is missing, the "current" file (see the :n and :p commands
|
||||||
|
@ -342,7 +333,7 @@ the current setting is printed and nothing is changed.
|
||||||
.IP \-\-
|
.IP \-\-
|
||||||
Like the \- command, but takes a long option name (see OPTIONS below)
|
Like the \- command, but takes a long option name (see OPTIONS below)
|
||||||
rather than a single option letter.
|
rather than a single option letter.
|
||||||
You must press RETURN after typing the option name.
|
You must press ENTER or RETURN after typing the option name.
|
||||||
A ^P immediately after the second dash suppresses printing of a
|
A ^P immediately after the second dash suppresses printing of a
|
||||||
message describing the new setting, as in the \- command.
|
message describing the new setting, as in the \- command.
|
||||||
.IP \-+
|
.IP \-+
|
||||||
|
@ -372,7 +363,7 @@ The setting of the option is not changed.
|
||||||
(Double underscore.)
|
(Double underscore.)
|
||||||
Like the _ (underscore) command, but takes a long option name
|
Like the _ (underscore) command, but takes a long option name
|
||||||
rather than a single option letter.
|
rather than a single option letter.
|
||||||
You must press RETURN after typing the option name.
|
You must press ENTER or RETURN after typing the option name.
|
||||||
.IP +cmd
|
.IP +cmd
|
||||||
Causes the specified cmd to be executed each time a new file is examined.
|
Causes the specified cmd to be executed each time a new file is examined.
|
||||||
For example, +G causes
|
For example, +G causes
|
||||||
|
@ -407,13 +398,13 @@ A pound sign (#) is replaced by the name of the previously examined file.
|
||||||
On Unix systems, the shell is taken from the environment variable SHELL,
|
On Unix systems, the shell is taken from the environment variable SHELL,
|
||||||
or defaults to "sh".
|
or defaults to "sh".
|
||||||
On MS-DOS and OS/2 systems, the shell is the normal command processor.
|
On MS-DOS and OS/2 systems, the shell is the normal command processor.
|
||||||
.IP "| \*[Lt]m\*[Gt] shell-command"
|
.IP "| <m> shell-command"
|
||||||
\*[Lt]m\*[Gt] represents any mark letter.
|
<m> represents any mark letter.
|
||||||
Pipes a section of the input file to the given shell command.
|
Pipes a section of the input file to the given shell command.
|
||||||
The section of the file to be piped is between the first line on
|
The section of the file to be piped is between the first line on
|
||||||
the current screen and the position marked by the letter.
|
the current screen and the position marked by the letter.
|
||||||
\*[Lt]m\*[Gt] may also be ^ or $ to indicate beginning or end of file respectively.
|
<m> may also be ^ or $ to indicate beginning or end of file respectively.
|
||||||
If \*[Lt]m\*[Gt] is . or newline, the current screen is piped.
|
If <m> is . or newline, the current screen is piped.
|
||||||
.IP "s filename"
|
.IP "s filename"
|
||||||
Save the input to a file.
|
Save the input to a file.
|
||||||
This only works if the input is a pipe, not an ordinary file.
|
This only works if the input is a pipe, not an ordinary file.
|
||||||
|
@ -474,11 +465,24 @@ This option displays a summary of the commands accepted by
|
||||||
(Depending on how your shell interprets the question mark,
|
(Depending on how your shell interprets the question mark,
|
||||||
it may be necessary to quote the question mark, thus: "\-\e?".)
|
it may be necessary to quote the question mark, thus: "\-\e?".)
|
||||||
.IP "\-a or \-\-search-skip-screen"
|
.IP "\-a or \-\-search-skip-screen"
|
||||||
Causes searches to start after the last line
|
By default, forward searches start at the top of the displayed screen
|
||||||
displayed on the screen,
|
and backwards searches start at the bottom of the displayed screen
|
||||||
|
(except for repeated searches invoked by the n or N commands,
|
||||||
|
which start after or before the "target" line respectively;
|
||||||
|
see the \-j option for more about the target line).
|
||||||
|
The \-a option causes forward searches to instead start at
|
||||||
|
the bottom of the screen
|
||||||
|
and backward searches to start at the top of the screen,
|
||||||
thus skipping all lines displayed on the screen.
|
thus skipping all lines displayed on the screen.
|
||||||
By default, searches start at the second line on the screen
|
.IP "\-A or \-\-SEARCH-SKIP-SCREEN"
|
||||||
(or after the last found line; see the \-j option).
|
Causes all forward searches (not just non-repeated searches)
|
||||||
|
to start just after the target line, and all backward searches
|
||||||
|
to start just before the target line.
|
||||||
|
Thus, forward searches will skip part of the displayed screen
|
||||||
|
(from the first line up to and including the target line).
|
||||||
|
Similarly backwards searches will skip the displayed screen
|
||||||
|
from the last line up to and including the target line.
|
||||||
|
This was the default behavior in less versions prior to 441.
|
||||||
.IP "\-b\fIn\fP or \-\-buffers=\fIn\fP"
|
.IP "\-b\fIn\fP or \-\-buffers=\fIn\fP"
|
||||||
Specifies the amount of buffer space
|
Specifies the amount of buffer space
|
||||||
.I less
|
.I less
|
||||||
|
@ -488,7 +492,7 @@ By default 64K of buffer space is used for each file
|
||||||
The \-b option specifies instead that \fIn\fP kilobytes of
|
The \-b option specifies instead that \fIn\fP kilobytes of
|
||||||
buffer space should be used for each file.
|
buffer space should be used for each file.
|
||||||
If \fIn\fP is \-1, buffer space is unlimited; that is,
|
If \fIn\fP is \-1, buffer space is unlimited; that is,
|
||||||
the entire file is read into memory.
|
the entire file can be read into memory.
|
||||||
.IP "\-B or \-\-auto-buffers"
|
.IP "\-B or \-\-auto-buffers"
|
||||||
By default, when data is read from a pipe,
|
By default, when data is read from a pipe,
|
||||||
buffers are allocated automatically as needed.
|
buffers are allocated automatically as needed.
|
||||||
|
@ -499,27 +503,21 @@ so that only 64K
|
||||||
(or the amount of space specified by the \-b option)
|
(or the amount of space specified by the \-b option)
|
||||||
is used for the pipe.
|
is used for the pipe.
|
||||||
Warning: use of \-B can result in erroneous display, since only the
|
Warning: use of \-B can result in erroneous display, since only the
|
||||||
most recently viewed part of the file is kept in memory;
|
most recently viewed part of the piped data is kept in memory;
|
||||||
any earlier data is lost.
|
any earlier data is lost.
|
||||||
.IP "\-c or \-\-clear-screen"
|
.IP "\-c or \-\-clear-screen"
|
||||||
Causes full screen repaints to be painted from the top line down.
|
Causes full screen repaints to be painted from the top line down.
|
||||||
By default,
|
By default,
|
||||||
full screen repaints are done by scrolling from the bottom of the screen.
|
full screen repaints are done by scrolling from the bottom of the screen.
|
||||||
.IP "\-C or \-\-CLEAR-SCREEN"
|
.IP "\-C or \-\-CLEAR-SCREEN"
|
||||||
The \-C option is like \-c, but the screen is cleared before it is repainted.
|
Same as \-c, for compatibility with older versions of
|
||||||
.IP "\-d
|
.I less.
|
||||||
The -d option causes the default prompt to include the basic directions
|
.IP "\-d or \-\-dumb"
|
||||||
``[Press space to continue, 'q' to quit.]''. The -d
|
The \-d option suppresses the error message
|
||||||
option also causes the message ``[Press 'h' for instructions.]'' to be
|
|
||||||
displayed when an invalid command is entered (normally, the bell is
|
|
||||||
rung). This option is useful in environments where users may not be
|
|
||||||
experienced with pagers.
|
|
||||||
.IP \-\-dumb"
|
|
||||||
The \-\-dumb option suppresses the error message
|
|
||||||
normally displayed if the terminal is dumb;
|
normally displayed if the terminal is dumb;
|
||||||
that is, lacks some important capability,
|
that is, lacks some important capability,
|
||||||
such as the ability to clear the screen or scroll backward.
|
such as the ability to clear the screen or scroll backward.
|
||||||
The \-\-dumb option does not otherwise change the behavior of
|
The \-d option does not otherwise change the behavior of
|
||||||
.I less
|
.I less
|
||||||
on a dumb terminal.
|
on a dumb terminal.
|
||||||
.IP "\-D\fBx\fP\fIcolor\fP or \-\-color=\fBx\fP\fIcolor\fP"
|
.IP "\-D\fBx\fP\fIcolor\fP or \-\-color=\fBx\fP\fIcolor\fP"
|
||||||
|
@ -530,7 +528,9 @@ being set: n=normal, s=standout, d=bold, u=underlined, k=blink.
|
||||||
\fIcolor\fP is a pair of numbers separated by a period.
|
\fIcolor\fP is a pair of numbers separated by a period.
|
||||||
The first number selects the foreground color and the second selects
|
The first number selects the foreground color and the second selects
|
||||||
the background color of the text.
|
the background color of the text.
|
||||||
A single number \fIN\fP is the same as \fIN.0\fP.
|
A single number \fIN\fP is the same as \fIN.M\fP,
|
||||||
|
where \fIM\fP is the normal background color.
|
||||||
|
|
||||||
.IP "\-e or \-\-quit-at-eof"
|
.IP "\-e or \-\-quit-at-eof"
|
||||||
Causes
|
Causes
|
||||||
.I less
|
.I less
|
||||||
|
@ -550,6 +550,8 @@ Also suppresses the warning message when a binary file is opened.
|
||||||
By default,
|
By default,
|
||||||
.I less
|
.I less
|
||||||
will refuse to open non-regular files.
|
will refuse to open non-regular files.
|
||||||
|
Note that some operating systems will not allow directories
|
||||||
|
to be read, even if \-f is set.
|
||||||
.IP "\-F or \-\-quit-if-one-screen"
|
.IP "\-F or \-\-quit-if-one-screen"
|
||||||
Causes
|
Causes
|
||||||
.I less
|
.I less
|
||||||
|
@ -585,18 +587,26 @@ the pattern contains uppercase letters.
|
||||||
.IP "\-j\fIn\fP or \-\-jump-target=\fIn\fP"
|
.IP "\-j\fIn\fP or \-\-jump-target=\fIn\fP"
|
||||||
Specifies a line on the screen where the "target" line
|
Specifies a line on the screen where the "target" line
|
||||||
is to be positioned.
|
is to be positioned.
|
||||||
A target line is the object of a text search,
|
The target line is the line specified by any command to
|
||||||
tag search, jump to a line number,
|
search for a pattern, jump to a line number,
|
||||||
jump to a file percentage, or jump to a marked position.
|
jump to a file percentage or jump to a tag.
|
||||||
The screen line is specified by a number: the top line on the screen
|
The screen line may be specified by a number: the top line on the screen
|
||||||
is 1, the next is 2, and so on.
|
is 1, the next is 2, and so on.
|
||||||
The number may be negative to specify a line relative to the bottom
|
The number may be negative to specify a line relative to the bottom
|
||||||
of the screen: the bottom line on the screen is \-1, the second
|
of the screen: the bottom line on the screen is \-1, the second
|
||||||
to the bottom is \-2, and so on.
|
to the bottom is \-2, and so on.
|
||||||
If the \-j option is used, searches begin at the line immediately
|
Alternately, the screen line may be specified as a fraction of the height
|
||||||
after the target line.
|
of the screen, starting with a decimal point: .5 is in the middle of the
|
||||||
|
screen, .3 is three tenths down from the first line, and so on.
|
||||||
|
If the line is specified as a fraction, the actual line number
|
||||||
|
is recalculated if the terminal window is resized, so that the
|
||||||
|
target line remains at the specified fraction of the screen height.
|
||||||
|
If any form of the \-j option is used,
|
||||||
|
forward searches begin at the line immediately after the target line,
|
||||||
|
and backward searches begin at the target line,
|
||||||
|
unless changed by \-a or \-A.
|
||||||
For example, if "\-j4" is used, the target line is the
|
For example, if "\-j4" is used, the target line is the
|
||||||
fourth line on the screen, so searches begin at the fifth line
|
fourth line on the screen, so forward searches begin at the fifth line
|
||||||
on the screen.
|
on the screen.
|
||||||
.IP "\-J or \-\-status-column"
|
.IP "\-J or \-\-status-column"
|
||||||
Displays a status column at the left edge of the screen.
|
Displays a status column at the left edge of the screen.
|
||||||
|
@ -617,10 +627,13 @@ file.
|
||||||
.IP "\-K or \-\-quit-on-intr"
|
.IP "\-K or \-\-quit-on-intr"
|
||||||
Causes
|
Causes
|
||||||
.I less
|
.I less
|
||||||
to exit immediately when an interrupt character (usually ^C) is typed.
|
to exit immediately (with status 2)
|
||||||
|
when an interrupt character (usually ^C) is typed.
|
||||||
Normally, an interrupt character causes
|
Normally, an interrupt character causes
|
||||||
.I less
|
.I less
|
||||||
to stop whatever it is doing and return to its command prompt.
|
to stop whatever it is doing and return to its command prompt.
|
||||||
|
Note that use of this option makes it impossible to return to the
|
||||||
|
command prompt from the "F" command.
|
||||||
.IP "\-L or \-\-no-lessopen"
|
.IP "\-L or \-\-no-lessopen"
|
||||||
Ignore the LESSOPEN environment variable
|
Ignore the LESSOPEN environment variable
|
||||||
(see the INPUT PREPROCESSOR section below).
|
(see the INPUT PREPROCESSOR section below).
|
||||||
|
@ -823,11 +836,6 @@ Disables sending the termcap initialization and deinitialization strings
|
||||||
to the terminal.
|
to the terminal.
|
||||||
This is sometimes desirable if the deinitialization string does
|
This is sometimes desirable if the deinitialization string does
|
||||||
something unnecessary, like clearing the screen.
|
something unnecessary, like clearing the screen.
|
||||||
.IP "\-\-no-keypad"
|
|
||||||
Disables sending the keypad initialization and deinitialization strings
|
|
||||||
to the terminal.
|
|
||||||
This is sometimes useful if the keypad strings make the numeric
|
|
||||||
keypad behave in an undesirable manner.
|
|
||||||
.IP "\-y\fIn\fP or \-\-max-forw-scroll=\fIn\fP"
|
.IP "\-y\fIn\fP or \-\-max-forw-scroll=\fIn\fP"
|
||||||
Specifies a maximum number of lines to scroll forward.
|
Specifies a maximum number of lines to scroll forward.
|
||||||
If it is necessary to scroll forward more than \fIn\fP lines,
|
If it is necessary to scroll forward more than \fIn\fP lines,
|
||||||
|
@ -839,7 +847,7 @@ By default, any forward movement causes scrolling.
|
||||||
Changes the default scrolling window size to \fIn\fP lines.
|
Changes the default scrolling window size to \fIn\fP lines.
|
||||||
The default is one screenful.
|
The default is one screenful.
|
||||||
The z and w commands can also be used to change the window size.
|
The z and w commands can also be used to change the window size.
|
||||||
The "z" may be omitted for compatibility with
|
The "z" may be omitted for compatibility with some versions of
|
||||||
.I more.
|
.I more.
|
||||||
If the number
|
If the number
|
||||||
.I n
|
.I n
|
||||||
|
@ -871,6 +879,31 @@ Specifies the default number of positions to scroll horizontally
|
||||||
in the RIGHTARROW and LEFTARROW commands.
|
in the RIGHTARROW and LEFTARROW commands.
|
||||||
If the number specified is zero, it sets the default number of
|
If the number specified is zero, it sets the default number of
|
||||||
positions to one half of the screen width.
|
positions to one half of the screen width.
|
||||||
|
Alternately, the number may be specified as a fraction of the width
|
||||||
|
of the screen, starting with a decimal point: .5 is half of the
|
||||||
|
screen width, .3 is three tenths of the screen width, and so on.
|
||||||
|
If the number is specified as a fraction, the actual number of
|
||||||
|
scroll positions is recalculated if the terminal window is resized,
|
||||||
|
so that the actual scroll remains at the specified fraction
|
||||||
|
of the screen width.
|
||||||
|
.IP "\-\-no-keypad"
|
||||||
|
Disables sending the keypad initialization and deinitialization strings
|
||||||
|
to the terminal.
|
||||||
|
This is sometimes useful if the keypad strings make the numeric
|
||||||
|
keypad behave in an undesirable manner.
|
||||||
|
.IP "\-\-follow-name"
|
||||||
|
Normally, if the input file is renamed while an F command is executing,
|
||||||
|
.I less
|
||||||
|
will continue to display the contents of the original file despite
|
||||||
|
its name change.
|
||||||
|
If \-\-follow-name is specified, during an F command
|
||||||
|
.I less
|
||||||
|
will periodically attempt to reopen the file by name.
|
||||||
|
If the reopen succeeds and the file is a different file from the original
|
||||||
|
(which means that a new file has been created
|
||||||
|
with the same name as the original (now renamed) file),
|
||||||
|
.I less
|
||||||
|
will display the contents of that new file.
|
||||||
.IP \-\-
|
.IP \-\-
|
||||||
A command line argument of "\-\-" marks the end of option arguments.
|
A command line argument of "\-\-" marks the end of option arguments.
|
||||||
Any arguments following this are interpreted as filenames.
|
Any arguments following this are interpreted as filenames.
|
||||||
|
@ -883,7 +916,7 @@ For example, +G tells
|
||||||
.I less
|
.I less
|
||||||
to start at the end of the file rather than the beginning,
|
to start at the end of the file rather than the beginning,
|
||||||
and +/xyz tells it to start at the first occurrence of "xyz" in the file.
|
and +/xyz tells it to start at the first occurrence of "xyz" in the file.
|
||||||
As a special case, +\*[Lt]number\*[Gt] acts like +\*[Lt]number\*[Gt]g;
|
As a special case, +<number> acts like +<number>g;
|
||||||
that is, it starts the display at the specified line number
|
that is, it starts the display at the specified line number
|
||||||
(however, see the caveat under the "g" command above).
|
(however, see the caveat under the "g" command above).
|
||||||
If the option starts with ++, the initial command applies to
|
If the option starts with ++, the initial command applies to
|
||||||
|
@ -898,7 +931,8 @@ or the pattern for a search command),
|
||||||
certain keys can be used to manipulate the command line.
|
certain keys can be used to manipulate the command line.
|
||||||
Most commands have an alternate form in [ brackets ] which can be used if
|
Most commands have an alternate form in [ brackets ] which can be used if
|
||||||
a key does not exist on a particular keyboard.
|
a key does not exist on a particular keyboard.
|
||||||
(The bracketed forms do not work in the MS-DOS version.)
|
(Note that the forms beginning with ESC do not work
|
||||||
|
in some MS-DOS and Windows systems because ESC is the line erase character.)
|
||||||
Any of these special keys may be entered literally by preceding
|
Any of these special keys may be entered literally by preceding
|
||||||
it with the "literal" character, either ^V or ^A.
|
it with the "literal" character, either ^V or ^A.
|
||||||
A backslash itself may also be entered literally by entering two backslashes.
|
A backslash itself may also be entered literally by entering two backslashes.
|
||||||
|
@ -951,6 +985,8 @@ Delete the entire command line,
|
||||||
or cancel the command if the command line is empty.
|
or cancel the command if the command line is empty.
|
||||||
If you have changed your line-kill character in Unix to something
|
If you have changed your line-kill character in Unix to something
|
||||||
other than ^U, that character is used instead of ^U.
|
other than ^U, that character is used instead of ^U.
|
||||||
|
.IP "^G"
|
||||||
|
Delete the entire command line and return to the main prompt.
|
||||||
|
|
||||||
.SH "KEY BINDINGS"
|
.SH "KEY BINDINGS"
|
||||||
You may define your own
|
You may define your own
|
||||||
|
@ -1000,8 +1036,7 @@ uses that as the name of the system-wide lesskey file.
|
||||||
Otherwise,
|
Otherwise,
|
||||||
.I less
|
.I less
|
||||||
looks in a standard place for the system-wide lesskey file:
|
looks in a standard place for the system-wide lesskey file:
|
||||||
On NetBSD, the system-wide lesskey file is in /etc/sysless.
|
On Unix systems, the system-wide lesskey file is /usr/local/etc/sysless.
|
||||||
On other Unix systems, the system-wide lesskey file is /usr/local/etc/sysless.
|
|
||||||
(However, if
|
(However, if
|
||||||
.I less
|
.I less
|
||||||
was built with a different sysconf directory than /usr/local/etc,
|
was built with a different sysconf directory than /usr/local/etc,
|
||||||
|
@ -1066,7 +1101,7 @@ lessopen.sh:
|
||||||
.br
|
.br
|
||||||
case "$1" in
|
case "$1" in
|
||||||
.br
|
.br
|
||||||
*.Z) uncompress \-c $1 \*[Gt]/tmp/less.$$ 2\*[Gt]/dev/null
|
*.Z) uncompress -\c $1 >/tmp/less.$$ 2>/dev/null
|
||||||
.br
|
.br
|
||||||
if [ \-s /tmp/less.$$ ]; then
|
if [ \-s /tmp/less.$$ ]; then
|
||||||
.br
|
.br
|
||||||
|
@ -1135,6 +1170,22 @@ but it is usually not necessary since there is no replacement file
|
||||||
to clean up.
|
to clean up.
|
||||||
In this case, the replacement file name passed to the LESSCLOSE
|
In this case, the replacement file name passed to the LESSCLOSE
|
||||||
postprocessor is "\-".
|
postprocessor is "\-".
|
||||||
|
.PP
|
||||||
|
For compatibility with previous versions of
|
||||||
|
.I less,
|
||||||
|
the input preprocessor or pipe is not used if
|
||||||
|
.I less
|
||||||
|
is viewing standard input.
|
||||||
|
However, if the first character of LESSOPEN is a dash (\-),
|
||||||
|
the input preprocessor is used on standard input as well as other files.
|
||||||
|
In this case, the dash is not considered to be part of
|
||||||
|
the preprocessor command.
|
||||||
|
If standard input is being viewed, the input preprocessor is passed
|
||||||
|
a file name consisting of a single dash.
|
||||||
|
Similarly, if the first two characters of LESSOPEN are vertical bar and dash
|
||||||
|
(|\-), the input pipe is used on standard input as well as other files.
|
||||||
|
Again, in this case the dash is not considered to be part of
|
||||||
|
the input pipe command.
|
||||||
|
|
||||||
.SH "NATIONAL CHARACTER SETS"
|
.SH "NATIONAL CHARACTER SETS"
|
||||||
There are three types of characters in the input file:
|
There are three types of characters in the input file:
|
||||||
|
@ -1178,10 +1229,12 @@ Selects a Russian character set.
|
||||||
Selects a character set appropriate for NeXT computers.
|
Selects a character set appropriate for NeXT computers.
|
||||||
.IP utf-8
|
.IP utf-8
|
||||||
Selects the UTF-8 encoding of the ISO 10646 character set.
|
Selects the UTF-8 encoding of the ISO 10646 character set.
|
||||||
|
UTF-8 is special in that it supports multi-byte characters in the input file.
|
||||||
|
It is the only character set that supports multi-byte characters.
|
||||||
.IP windows
|
.IP windows
|
||||||
Selects a character set appropriate for Microsoft Windows (cp 1251).
|
Selects a character set appropriate for Microsoft Windows (cp 1251).
|
||||||
.PP
|
.PP
|
||||||
In special cases, it may be desired to tailor
|
In rare cases, it may be desired to tailor
|
||||||
.I less
|
.I less
|
||||||
to use a character set other than the ones definable by LESSCHARSET.
|
to use a character set other than the ones definable by LESSCHARSET.
|
||||||
In this case, the environment variable LESSCHARDEF can be used
|
In this case, the environment variable LESSCHARDEF can be used
|
||||||
|
@ -1223,7 +1276,7 @@ to each of the possible values for LESSCHARSET:
|
||||||
.PP
|
.PP
|
||||||
If neither LESSCHARSET nor LESSCHARDEF is set,
|
If neither LESSCHARSET nor LESSCHARDEF is set,
|
||||||
but any of the strings "UTF-8", "UTF8", "utf-8" or "utf8"
|
but any of the strings "UTF-8", "UTF8", "utf-8" or "utf8"
|
||||||
is found in the LC_ALL, LC_TYPE or LANG
|
is found in the LC_ALL, LC_CTYPE or LANG
|
||||||
environment variables, then the default character set is utf-8.
|
environment variables, then the default character set is utf-8.
|
||||||
.PP
|
.PP
|
||||||
If that string is not found, but your system supports the
|
If that string is not found, but your system supports the
|
||||||
|
@ -1254,8 +1307,7 @@ The remainder of LESSBINFMT is a string which may include one
|
||||||
printf-style escape sequence (a % followed by x, X, o, d, etc.).
|
printf-style escape sequence (a % followed by x, X, o, d, etc.).
|
||||||
For example, if LESSBINFMT is "*u[%x]", binary characters
|
For example, if LESSBINFMT is "*u[%x]", binary characters
|
||||||
are displayed in underlined hexadecimal surrounded by brackets.
|
are displayed in underlined hexadecimal surrounded by brackets.
|
||||||
The default if no LESSBINFMT is specified is "*s\*[Lt]%X\*[Gt]".
|
The default if no LESSBINFMT is specified is "*s<%02X>".
|
||||||
The default if no LESSBINFMT is specified is "*s\*[Lt]%02X\*[Gt]".
|
|
||||||
Warning: the result of expanding the character via LESSBINFMT must
|
Warning: the result of expanding the character via LESSBINFMT must
|
||||||
be less than 31 characters.
|
be less than 31 characters.
|
||||||
.PP
|
.PP
|
||||||
|
@ -1263,7 +1315,7 @@ When the character set is utf-8, the LESSUTFBINFMT environment variable
|
||||||
acts similarly to LESSBINFMT but it applies to Unicode code points
|
acts similarly to LESSBINFMT but it applies to Unicode code points
|
||||||
that were successfully decoded but are unsuitable for display (e.g.,
|
that were successfully decoded but are unsuitable for display (e.g.,
|
||||||
unassigned code points).
|
unassigned code points).
|
||||||
Its default value is "\*[Lt]U+%04lX\*[Gt]".
|
Its default value is "<U+%04lX>".
|
||||||
Note that LESSUTFBINFMT and LESSBINFMT share their display attribute
|
Note that LESSUTFBINFMT and LESSBINFMT share their display attribute
|
||||||
setting ("*x") so specifying one will affect both;
|
setting ("*x") so specifying one will affect both;
|
||||||
LESSUTFBINFMT is read after LESSBINFMT so its setting, if any,
|
LESSUTFBINFMT is read after LESSBINFMT so its setting, if any,
|
||||||
|
@ -1311,6 +1363,8 @@ or the EDITOR environment variable if VISUAL is not defined).
|
||||||
See the discussion of the LESSEDIT feature below.
|
See the discussion of the LESSEDIT feature below.
|
||||||
.IP "%f"
|
.IP "%f"
|
||||||
Replaced by the name of the current input file.
|
Replaced by the name of the current input file.
|
||||||
|
.IP "%F"
|
||||||
|
Replaced by the last component of the name of the current input file.
|
||||||
.IP "%i"
|
.IP "%i"
|
||||||
Replaced by the index of the current file in the list of
|
Replaced by the index of the current file in the list of
|
||||||
input files.
|
input files.
|
||||||
|
@ -1480,6 +1534,36 @@ filename completion (TAB, ^L)
|
||||||
.PP
|
.PP
|
||||||
Less can also be compiled to be permanently in "secure" mode.
|
Less can also be compiled to be permanently in "secure" mode.
|
||||||
|
|
||||||
|
.SH "COMPATIBILITY WITH MORE"
|
||||||
|
If the environment variable LESS_IS_MORE is set to 1,
|
||||||
|
or if the program is invoked via a file link named "more",
|
||||||
|
.I less
|
||||||
|
behaves (mostly) in conformance with the POSIX "more" command specification.
|
||||||
|
In this mode, less behaves differently in these ways:
|
||||||
|
.PP
|
||||||
|
The \-e option works differently.
|
||||||
|
If the \-e option is not set,
|
||||||
|
.I less
|
||||||
|
behaves as if the \-E option were set.
|
||||||
|
If the \-e option is set,
|
||||||
|
.I less
|
||||||
|
behaves as if the \-e and \-F options were set.
|
||||||
|
.PP
|
||||||
|
The \-m option works differently.
|
||||||
|
If the \-m option is not set, the medium prompt is used,
|
||||||
|
and it is prefixed with the string "--More--".
|
||||||
|
If the \-m option is set, the short prompt is used.
|
||||||
|
.PP
|
||||||
|
The \-n option acts like the \-z option.
|
||||||
|
The normal behavior of the \-n option is unavailable in this mode.
|
||||||
|
.PP
|
||||||
|
The parameter to the \-p option is taken to be a
|
||||||
|
.I less
|
||||||
|
command rather than a search pattern.
|
||||||
|
.PP
|
||||||
|
The LESS environment variable is ignored,
|
||||||
|
and the MORE environment variable is used in its place.
|
||||||
|
|
||||||
.SH "ENVIRONMENT VARIABLES"
|
.SH "ENVIRONMENT VARIABLES"
|
||||||
Environment variables may be specified either in the system environment
|
Environment variables may be specified either in the system environment
|
||||||
as usual, or in a
|
as usual, or in a
|
||||||
|
@ -1545,7 +1629,7 @@ Normally should be set to "global" if your system has the
|
||||||
Name of the history file used to remember search commands and
|
Name of the history file used to remember search commands and
|
||||||
shell commands between invocations of
|
shell commands between invocations of
|
||||||
.I less.
|
.I less.
|
||||||
If set to "\-", a history file is not used.
|
If set to "\-" or "/dev/null", a history file is not used.
|
||||||
The default is "$HOME/.lesshst" on Unix systems, "$HOME/_lesshst" on
|
The default is "$HOME/.lesshst" on Unix systems, "$HOME/_lesshst" on
|
||||||
DOS and Windows systems, or "$HOME/lesshst.ini" or "$INIT/lesshst.ini"
|
DOS and Windows systems, or "$HOME/lesshst.ini" or "$INIT/lesshst.ini"
|
||||||
on OS/2 systems.
|
on OS/2 systems.
|
||||||
|
@ -1572,12 +1656,20 @@ See discussion under SECURITY.
|
||||||
String to be appended to a directory name in filename completion.
|
String to be appended to a directory name in filename completion.
|
||||||
.IP LESSUTFBINFMT
|
.IP LESSUTFBINFMT
|
||||||
Format for displaying non-printable Unicode code points.
|
Format for displaying non-printable Unicode code points.
|
||||||
|
.IP LESS_IS_MORE
|
||||||
|
Emulate the
|
||||||
|
.I more
|
||||||
|
(1) command.
|
||||||
.IP LINES
|
.IP LINES
|
||||||
Sets the number of lines on the screen.
|
Sets the number of lines on the screen.
|
||||||
Takes precedence over the number of lines specified by the TERM variable.
|
Takes precedence over the number of lines specified by the TERM variable.
|
||||||
(But if you have a windowing system which supports TIOCGWINSZ or WIOCGETD,
|
(But if you have a windowing system which supports TIOCGWINSZ or WIOCGETD,
|
||||||
the window system's idea of the screen size takes precedence over the
|
the window system's idea of the screen size takes precedence over the
|
||||||
LINES and COLUMNS environment variables.)
|
LINES and COLUMNS environment variables.)
|
||||||
|
.IP MORE
|
||||||
|
Options which are passed to
|
||||||
|
.I more
|
||||||
|
automatically.
|
||||||
.IP PATH
|
.IP PATH
|
||||||
User's search path (used to find a lesskey file
|
User's search path (used to find a lesskey file
|
||||||
on MS-DOS and OS/2 systems).
|
on MS-DOS and OS/2 systems).
|
||||||
|
@ -1593,47 +1685,8 @@ The name of the editor (used for the v command).
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
lesskey(1)
|
lesskey(1)
|
||||||
|
|
||||||
.SH WARNINGS
|
|
||||||
The = command and prompts (unless changed by \-P)
|
|
||||||
report the line numbers of the lines at the top and bottom of the screen,
|
|
||||||
but the byte and percent of the line after the one at the bottom of the screen.
|
|
||||||
.PP
|
|
||||||
If the :e command is used to name more than one file,
|
|
||||||
and one of the named files has been viewed previously,
|
|
||||||
the new files may be entered into the list in an unexpected order.
|
|
||||||
.PP
|
|
||||||
On certain older terminals (the so-called "magic cookie" terminals),
|
|
||||||
search highlighting will cause an erroneous display.
|
|
||||||
On such terminals, search highlighting is disabled by default
|
|
||||||
to avoid possible problems.
|
|
||||||
.PP
|
|
||||||
In certain cases, when search highlighting is enabled and
|
|
||||||
a search pattern begins with a ^,
|
|
||||||
more text than the matching string may be highlighted.
|
|
||||||
(This problem does not occur when less is compiled to use the POSIX
|
|
||||||
regular expression package.)
|
|
||||||
.PP
|
|
||||||
When viewing text containing ANSI color escape sequences using the \-R option,
|
|
||||||
searching will not find text containing an embedded escape sequence.
|
|
||||||
Also, search highlighting may change the color of some of the text
|
|
||||||
which follows the highlighted text.
|
|
||||||
.PP
|
|
||||||
On some systems,
|
|
||||||
.I setlocale
|
|
||||||
claims that ASCII characters 0 thru 31 are control characters
|
|
||||||
rather than binary characters.
|
|
||||||
This causes
|
|
||||||
.I less
|
|
||||||
to treat some binary files as ordinary, non-binary files.
|
|
||||||
To workaround this problem, set the environment variable
|
|
||||||
LESSCHARSET to "ascii" (or whatever character set is appropriate).
|
|
||||||
.PP
|
|
||||||
This manual is too long.
|
|
||||||
.PP
|
|
||||||
See http://www.greenwoodsoftware.com/less for the list of known bugs in all versions of less.
|
|
||||||
|
|
||||||
.SH COPYRIGHT
|
.SH COPYRIGHT
|
||||||
Copyright (C) 1984-2005 Mark Nudelman
|
Copyright (C) 1984-2011 Mark Nudelman
|
||||||
.PP
|
.PP
|
||||||
less is part of the GNU project and is free software.
|
less is part of the GNU project and is free software.
|
||||||
You can redistribute it and/or modify it
|
You can redistribute it and/or modify it
|
||||||
|
@ -1656,8 +1709,12 @@ See the GNU General Public License for more details.
|
||||||
|
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
.PP
|
.PP
|
||||||
Mark Nudelman \*[Lt]markn@greenwoodsoftware.com\*[Gt]
|
Mark Nudelman <markn@greenwoodsoftware.com>
|
||||||
.br
|
.br
|
||||||
Send bug reports or comments to the above address or to bug-less@gnu.org.
|
Send bug reports or comments to the above address or to bug-less@gnu.org.
|
||||||
.br
|
.br
|
||||||
For more information, see the less homepage at http://www.greenwoodsoftware.com/less.
|
See http://www.greenwoodsoftware.com/less/bugs.html for the latest list of known bugs in less.
|
||||||
|
.br
|
||||||
|
For more information, see the less homepage at
|
||||||
|
.br
|
||||||
|
http://www.greenwoodsoftware.com/less.
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: less.h,v 1.9 2008/02/16 07:20:54 matt Exp $ */
|
/* $NetBSD: less.h,v 1.3 2011/07/03 20:14:12 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -10,6 +10,7 @@
|
||||||
* contact the author, see the README file.
|
* contact the author, see the README file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define NEWBOT 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Standard include file for "less".
|
* Standard include file for "less".
|
||||||
|
@ -72,6 +73,9 @@
|
||||||
#if HAVE_CTYPE_H
|
#if HAVE_CTYPE_H
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#endif
|
#endif
|
||||||
|
#if HAVE_WCTYPE_H
|
||||||
|
#include <wctype.h>
|
||||||
|
#endif
|
||||||
#if HAVE_LIMITS_H
|
#if HAVE_LIMITS_H
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -126,16 +130,23 @@ void free();
|
||||||
#undef IS_SPACE
|
#undef IS_SPACE
|
||||||
#undef IS_DIGIT
|
#undef IS_DIGIT
|
||||||
|
|
||||||
#if !HAVE_UPPER_LOWER
|
#if HAVE_WCTYPE
|
||||||
#define IS_UPPER(c) ASCII_IS_UPPER(c)
|
#define IS_UPPER(c) iswupper(c)
|
||||||
#define IS_LOWER(c) ASCII_IS_LOWER(c)
|
#define IS_LOWER(c) iswlower(c)
|
||||||
#define TO_UPPER(c) ASCII_TO_UPPER(c)
|
#define TO_UPPER(c) towupper(c)
|
||||||
#define TO_LOWER(c) ASCII_TO_LOWER(c)
|
#define TO_LOWER(c) towlower(c)
|
||||||
#else
|
#else
|
||||||
|
#if HAVE_UPPER_LOWER
|
||||||
#define IS_UPPER(c) isupper((unsigned char) (c))
|
#define IS_UPPER(c) isupper((unsigned char) (c))
|
||||||
#define IS_LOWER(c) islower((unsigned char) (c))
|
#define IS_LOWER(c) islower((unsigned char) (c))
|
||||||
#define TO_UPPER(c) toupper((unsigned char) (c))
|
#define TO_UPPER(c) toupper((unsigned char) (c))
|
||||||
#define TO_LOWER(c) tolower((unsigned char) (c))
|
#define TO_LOWER(c) tolower((unsigned char) (c))
|
||||||
|
#else
|
||||||
|
#define IS_UPPER(c) ASCII_IS_UPPER(c)
|
||||||
|
#define IS_LOWER(c) ASCII_IS_LOWER(c)
|
||||||
|
#define TO_UPPER(c) ASCII_TO_UPPER(c)
|
||||||
|
#define TO_LOWER(c) ASCII_TO_LOWER(c)
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef isspace
|
#ifdef isspace
|
||||||
|
@ -150,6 +161,8 @@ void free();
|
||||||
#define IS_DIGIT(c) ((c) >= '0' && (c) <= '9')
|
#define IS_DIGIT(c) ((c) >= '0' && (c) <= '9')
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define IS_CSI_START(c) (((LWCHAR)(c)) == ESC || (((LWCHAR)(c)) == CSI))
|
||||||
|
|
||||||
#ifndef NULL
|
#ifndef NULL
|
||||||
#define NULL 0
|
#define NULL 0
|
||||||
#endif
|
#endif
|
||||||
|
@ -186,6 +199,13 @@ void free();
|
||||||
|
|
||||||
#define BAD_LSEEK ((off_t)-1)
|
#define BAD_LSEEK ((off_t)-1)
|
||||||
|
|
||||||
|
#ifndef SEEK_SET
|
||||||
|
#define SEEK_SET 0
|
||||||
|
#endif
|
||||||
|
#ifndef SEEK_END
|
||||||
|
#define SEEK_END 2
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef CHAR_BIT
|
#ifndef CHAR_BIT
|
||||||
#define CHAR_BIT 8
|
#define CHAR_BIT 8
|
||||||
#endif
|
#endif
|
||||||
|
@ -297,6 +317,10 @@ struct textlist
|
||||||
|
|
||||||
#define READ_INTR (-2)
|
#define READ_INTR (-2)
|
||||||
|
|
||||||
|
/* A fraction is represented by an int n; the fraction is n/NUM_FRAC_DENOM */
|
||||||
|
#define NUM_FRAC_DENOM 1000000
|
||||||
|
#define NUM_LOG_FRAC_DENOM 6
|
||||||
|
|
||||||
/* How quiet should we be? */
|
/* How quiet should we be? */
|
||||||
#define NOT_QUIET 0 /* Ring bell at eof and for errors */
|
#define NOT_QUIET 0 /* Ring bell at eof and for errors */
|
||||||
#define LITTLE_QUIET 1 /* Ring bell only for errors */
|
#define LITTLE_QUIET 1 /* Ring bell only for errors */
|
||||||
|
@ -313,14 +337,16 @@ struct textlist
|
||||||
#define BS_CONTROL 2 /* \b treated as control char; prints as ^H */
|
#define BS_CONTROL 2 /* \b treated as control char; prints as ^H */
|
||||||
|
|
||||||
/* How should we search? */
|
/* How should we search? */
|
||||||
#define SRCH_FORW (1 << 0) /* Search forward from current position */
|
#define SRCH_FORW (1 << 0) /* Search forward from current position */
|
||||||
#define SRCH_BACK (1 << 1) /* Search backward from current position */
|
#define SRCH_BACK (1 << 1) /* Search backward from current position */
|
||||||
#define SRCH_NO_MOVE (1 << 2) /* Highlight, but don't move */
|
#define SRCH_NO_MOVE (1 << 2) /* Highlight, but don't move */
|
||||||
#define SRCH_FIND_ALL (1 << 4) /* Find and highlight all matches */
|
#define SRCH_FIND_ALL (1 << 4) /* Find and highlight all matches */
|
||||||
#define SRCH_NO_MATCH (1 << 8) /* Search for non-matching lines */
|
#define SRCH_NO_MATCH (1 << 8) /* Search for non-matching lines */
|
||||||
#define SRCH_PAST_EOF (1 << 9) /* Search past end-of-file, into next file */
|
#define SRCH_PAST_EOF (1 << 9) /* Search past end-of-file, into next file */
|
||||||
#define SRCH_FIRST_FILE (1 << 10) /* Search starting at the first file */
|
#define SRCH_FIRST_FILE (1 << 10) /* Search starting at the first file */
|
||||||
#define SRCH_NO_REGEX (1 << 12) /* Don't use regular expressions */
|
#define SRCH_NO_REGEX (1 << 12) /* Don't use regular expressions */
|
||||||
|
#define SRCH_FILTER (1 << 13) /* Search is for '&' (filter) command */
|
||||||
|
#define SRCH_AFTER_TARGET (1 << 14) /* Start search after the target line */
|
||||||
|
|
||||||
#define SRCH_REVERSE(t) (((t) & SRCH_FORW) ? \
|
#define SRCH_REVERSE(t) (((t) & SRCH_FORW) ? \
|
||||||
(((t) & ~SRCH_FORW) | SRCH_BACK) : \
|
(((t) & ~SRCH_FORW) | SRCH_BACK) : \
|
||||||
|
@ -421,6 +447,7 @@ struct textlist
|
||||||
#endif /* IS_EBCDIC_HOST */
|
#endif /* IS_EBCDIC_HOST */
|
||||||
|
|
||||||
#define ESC CONTROL('[')
|
#define ESC CONTROL('[')
|
||||||
|
#define CSI ((unsigned char)'\233')
|
||||||
|
|
||||||
#if _OSK_MWC32
|
#if _OSK_MWC32
|
||||||
#define LSIGNAL(sig,func) os9_signal(sig,func)
|
#define LSIGNAL(sig,func) os9_signal(sig,func)
|
||||||
|
@ -449,8 +476,12 @@ struct textlist
|
||||||
|
|
||||||
#define QUIT_OK 0
|
#define QUIT_OK 0
|
||||||
#define QUIT_ERROR 1
|
#define QUIT_ERROR 1
|
||||||
|
#define QUIT_INTERRUPT 2
|
||||||
#define QUIT_SAVED_STATUS (-1)
|
#define QUIT_SAVED_STATUS (-1)
|
||||||
|
|
||||||
|
#define FOLLOW_DESC 0
|
||||||
|
#define FOLLOW_NAME 1
|
||||||
|
|
||||||
/* filestate flags */
|
/* filestate flags */
|
||||||
#define CH_CANSEEK 001
|
#define CH_CANSEEK 001
|
||||||
#define CH_KEEPOPEN 002
|
#define CH_KEEPOPEN 002
|
||||||
|
@ -461,6 +492,12 @@ struct textlist
|
||||||
|
|
||||||
#define FAKE_HELPFILE "@/\\less/\\help/\\file/\\@"
|
#define FAKE_HELPFILE "@/\\less/\\help/\\file/\\@"
|
||||||
|
|
||||||
|
/* Flags for cvt_text */
|
||||||
|
#define CVT_TO_LC 01 /* Convert upper-case to lower-case */
|
||||||
|
#define CVT_BS 02 /* Do backspace processing */
|
||||||
|
#define CVT_CRLF 04 /* Remove CR after LF */
|
||||||
|
#define CVT_ANSI 010 /* Remove ANSI escape sequences */
|
||||||
|
|
||||||
#include "funcs.h"
|
#include "funcs.h"
|
||||||
|
|
||||||
/* Functions not included in funcs.h */
|
/* Functions not included in funcs.h */
|
231
external/bsd/less/dist/less.hlp
vendored
Normal file
231
external/bsd/less/dist/less.hlp
vendored
Normal file
|
@ -0,0 +1,231 @@
|
||||||
|
|
||||||
|
SSUUMMMMAARRYY OOFF LLEESSSS CCOOMMMMAANNDDSS
|
||||||
|
|
||||||
|
Commands marked with * may be preceded by a number, _N.
|
||||||
|
Notes in parentheses indicate the behavior if _N is given.
|
||||||
|
|
||||||
|
h H Display this help.
|
||||||
|
q :q Q :Q ZZ Exit.
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
MMOOVVIINNGG
|
||||||
|
|
||||||
|
e ^E j ^N CR * Forward one line (or _N lines).
|
||||||
|
y ^Y k ^K ^P * Backward one line (or _N lines).
|
||||||
|
f ^F ^V SPACE * Forward one window (or _N lines).
|
||||||
|
b ^B ESC-v * Backward one window (or _N lines).
|
||||||
|
z * Forward one window (and set window to _N).
|
||||||
|
w * Backward one window (and set window to _N).
|
||||||
|
ESC-SPACE * Forward one window, but don't stop at end-of-file.
|
||||||
|
d ^D * Forward one half-window (and set half-window to _N).
|
||||||
|
u ^U * Backward one half-window (and set half-window to _N).
|
||||||
|
ESC-) RightArrow * Left one half screen width (or _N positions).
|
||||||
|
ESC-( LeftArrow * Right one half screen width (or _N positions).
|
||||||
|
F Forward forever; like "tail -f".
|
||||||
|
r ^R ^L Repaint screen.
|
||||||
|
R Repaint screen, discarding buffered input.
|
||||||
|
---------------------------------------------------
|
||||||
|
Default "window" is the screen height.
|
||||||
|
Default "half-window" is half of the screen height.
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SSEEAARRCCHHIINNGG
|
||||||
|
|
||||||
|
/_p_a_t_t_e_r_n * Search forward for (_N-th) matching line.
|
||||||
|
?_p_a_t_t_e_r_n * Search backward for (_N-th) matching line.
|
||||||
|
n * Repeat previous search (for _N-th occurrence).
|
||||||
|
N * Repeat previous search in reverse direction.
|
||||||
|
ESC-n * Repeat previous search, spanning files.
|
||||||
|
ESC-N * Repeat previous search, reverse dir. & spanning files.
|
||||||
|
ESC-u Undo (toggle) search highlighting.
|
||||||
|
&_p_a_t_t_e_r_n * Display only matching lines
|
||||||
|
---------------------------------------------------
|
||||||
|
Search patterns may be modified by one or more of:
|
||||||
|
^N or ! Search for NON-matching lines.
|
||||||
|
^E or * Search multiple files (pass thru END OF FILE).
|
||||||
|
^F or @ Start search at FIRST file (for /) or last file (for ?).
|
||||||
|
^K Highlight matches, but don't move (KEEP position).
|
||||||
|
^R Don't use REGULAR EXPRESSIONS.
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
JJUUMMPPIINNGG
|
||||||
|
|
||||||
|
g < ESC-< * Go to first line in file (or line _N).
|
||||||
|
G > ESC-> * Go to last line in file (or line _N).
|
||||||
|
p % * Go to beginning of file (or _N percent into file).
|
||||||
|
t * Go to the (_N-th) next tag.
|
||||||
|
T * Go to the (_N-th) previous tag.
|
||||||
|
{ ( [ * Find close bracket } ) ].
|
||||||
|
} ) ] * Find open bracket { ( [.
|
||||||
|
ESC-^F _<_c_1_> _<_c_2_> * Find close bracket _<_c_2_>.
|
||||||
|
ESC-^B _<_c_1_> _<_c_2_> * Find open bracket _<_c_1_>
|
||||||
|
---------------------------------------------------
|
||||||
|
Each "find close bracket" command goes forward to the close bracket
|
||||||
|
matching the (_N-th) open bracket in the top line.
|
||||||
|
Each "find open bracket" command goes backward to the open bracket
|
||||||
|
matching the (_N-th) close bracket in the bottom line.
|
||||||
|
|
||||||
|
m_<_l_e_t_t_e_r_> Mark the current position with <letter>.
|
||||||
|
'_<_l_e_t_t_e_r_> Go to a previously marked position.
|
||||||
|
'' Go to the previous position.
|
||||||
|
^X^X Same as '.
|
||||||
|
---------------------------------------------------
|
||||||
|
A mark is any upper-case or lower-case letter.
|
||||||
|
Certain marks are predefined:
|
||||||
|
^ means beginning of the file
|
||||||
|
$ means end of the file
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
CCHHAANNGGIINNGG FFIILLEESS
|
||||||
|
|
||||||
|
:e [_f_i_l_e] Examine a new file.
|
||||||
|
^X^V Same as :e.
|
||||||
|
:n * Examine the (_N-th) next file from the command line.
|
||||||
|
:p * Examine the (_N-th) previous file from the command line.
|
||||||
|
:x * Examine the first (or _N-th) file from the command line.
|
||||||
|
:d Delete the current file from the command line list.
|
||||||
|
= ^G :f Print current file name.
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
MMIISSCCEELLLLAANNEEOOUUSS CCOOMMMMAANNDDSS
|
||||||
|
|
||||||
|
-_<_f_l_a_g_> Toggle a command line option [see OPTIONS below].
|
||||||
|
--_<_n_a_m_e_> Toggle a command line option, by name.
|
||||||
|
__<_f_l_a_g_> Display the setting of a command line option.
|
||||||
|
___<_n_a_m_e_> Display the setting of an option, by name.
|
||||||
|
+_c_m_d Execute the less cmd each time a new file is examined.
|
||||||
|
|
||||||
|
!_c_o_m_m_a_n_d Execute the shell command with $SHELL.
|
||||||
|
|XX_c_o_m_m_a_n_d Pipe file between current pos & mark XX to shell command.
|
||||||
|
v Edit the current file with $VISUAL or $EDITOR.
|
||||||
|
V Print version number of "less".
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
OOPPTTIIOONNSS
|
||||||
|
|
||||||
|
Most options may be changed either on the command line,
|
||||||
|
or from within less by using the - or -- command.
|
||||||
|
Options may be given in one of two forms: either a single
|
||||||
|
character preceded by a -, or a name preceeded by --.
|
||||||
|
|
||||||
|
-? ........ --help
|
||||||
|
Display help (from command line).
|
||||||
|
-a ........ --search-skip-screen
|
||||||
|
Forward search skips current screen.
|
||||||
|
-A ........ --SEARCH-SKIP-SCREEN
|
||||||
|
Forward search always skips target line.
|
||||||
|
-b [_N] .... --buffers=[_N]
|
||||||
|
Number of buffers.
|
||||||
|
-B ........ --auto-buffers
|
||||||
|
Don't automatically allocate buffers for pipes.
|
||||||
|
-c ........ --clear-screen
|
||||||
|
Repaint by clearing rather than scrolling.
|
||||||
|
-d ........ --dumb
|
||||||
|
Dumb terminal.
|
||||||
|
-D [_x_n_._n] . --color=_x_n_._n
|
||||||
|
Set screen colors. (MS-DOS only)
|
||||||
|
-e -E .... --quit-at-eof --QUIT-AT-EOF
|
||||||
|
Quit at end of file.
|
||||||
|
-f ........ --force
|
||||||
|
Force open non-regular files.
|
||||||
|
-F ........ --quit-if-one-screen
|
||||||
|
Quit if entire file fits on first screen.
|
||||||
|
-g ........ --hilite-search
|
||||||
|
Highlight only last match for searches.
|
||||||
|
-G ........ --HILITE-SEARCH
|
||||||
|
Don't highlight any matches for searches.
|
||||||
|
-h [_N] .... --max-back-scroll=[_N]
|
||||||
|
Backward scroll limit.
|
||||||
|
-i ........ --ignore-case
|
||||||
|
Ignore case in searches that do not contain uppercase.
|
||||||
|
-I ........ --IGNORE-CASE
|
||||||
|
Ignore case in all searches.
|
||||||
|
-j [_N] .... --jump-target=[_N]
|
||||||
|
Screen position of target lines.
|
||||||
|
-J ........ --status-column
|
||||||
|
Display a status column at left edge of screen.
|
||||||
|
-k [_f_i_l_e] . --lesskey-file=[_f_i_l_e]
|
||||||
|
Use a lesskey file.
|
||||||
|
-K --quit-on-intr
|
||||||
|
Exit less in response to ctrl-C.
|
||||||
|
-L ........ --no-lessopen
|
||||||
|
Ignore the LESSOPEN environment variable.
|
||||||
|
-m -M .... --long-prompt --LONG-PROMPT
|
||||||
|
Set prompt style.
|
||||||
|
-n -N .... --line-numbers --LINE-NUMBERS
|
||||||
|
Don't use line numbers.
|
||||||
|
-o [_f_i_l_e] . --log-file=[_f_i_l_e]
|
||||||
|
Copy to log file (standard input only).
|
||||||
|
-O [_f_i_l_e] . --LOG-FILE=[_f_i_l_e]
|
||||||
|
Copy to log file (unconditionally overwrite).
|
||||||
|
-p [_p_a_t_t_e_r_n] --pattern=[_p_a_t_t_e_r_n]
|
||||||
|
Start at pattern (from command line).
|
||||||
|
-P [_p_r_o_m_p_t] --prompt=[_p_r_o_m_p_t]
|
||||||
|
Define new prompt.
|
||||||
|
-q -Q .... --quiet --QUIET --silent --SILENT
|
||||||
|
Quiet the terminal bell.
|
||||||
|
-r -R .... --raw-control-chars --RAW-CONTROL-CHARS
|
||||||
|
Output "raw" control characters.
|
||||||
|
-s ........ --squeeze-blank-lines
|
||||||
|
Squeeze multiple blank lines.
|
||||||
|
-S ........ --chop-long-lines
|
||||||
|
Chop long lines.
|
||||||
|
-t [_t_a_g] .. --tag=[_t_a_g]
|
||||||
|
Find a tag.
|
||||||
|
-T [_t_a_g_s_f_i_l_e] --tag-file=[_t_a_g_s_f_i_l_e]
|
||||||
|
Use an alternate tags file.
|
||||||
|
-u -U .... --underline-special --UNDERLINE-SPECIAL
|
||||||
|
Change handling of backspaces.
|
||||||
|
-V ........ --version
|
||||||
|
Display the version number of "less".
|
||||||
|
-w ........ --hilite-unread
|
||||||
|
Highlight first new line after forward-screen.
|
||||||
|
-W ........ --HILITE-UNREAD
|
||||||
|
Highlight first new line after any forward movement.
|
||||||
|
-x [_N[,...]] --tabs=[_N[,...]]
|
||||||
|
Set tab stops.
|
||||||
|
-X ........ --no-init
|
||||||
|
Don't use termcap init/deinit strings.
|
||||||
|
--no-keypad
|
||||||
|
Don't use termcap keypad init/deinit strings.
|
||||||
|
-y [_N] .... --max-forw-scroll=[_N]
|
||||||
|
Forward scroll limit.
|
||||||
|
-z [_N] .... --window=[_N]
|
||||||
|
Set size of window.
|
||||||
|
-" [_c[_c]] . --quotes=[_c[_c]]
|
||||||
|
Set shell quote characters.
|
||||||
|
-~ ........ --tilde
|
||||||
|
Don't display tildes after end of file.
|
||||||
|
-# [_N] .... --shift=[_N]
|
||||||
|
Horizontal scroll amount (0 = one half screen width)
|
||||||
|
........ --no-keypad
|
||||||
|
Don't send keypad init/deinit sequence.
|
||||||
|
........ --follow-name
|
||||||
|
The F command changes files if the input file is renamed.
|
||||||
|
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
LLIINNEE EEDDIITTIINNGG
|
||||||
|
|
||||||
|
These keys can be used to edit text being entered
|
||||||
|
on the "command line" at the bottom of the screen.
|
||||||
|
|
||||||
|
RightArrow ESC-l Move cursor right one character.
|
||||||
|
LeftArrow ESC-h Move cursor left one character.
|
||||||
|
CNTL-RightArrow ESC-RightArrow ESC-w Move cursor right one word.
|
||||||
|
CNTL-LeftArrow ESC-LeftArrow ESC-b Move cursor left one word.
|
||||||
|
HOME ESC-0 Move cursor to start of line.
|
||||||
|
END ESC-$ Move cursor to end of line.
|
||||||
|
BACKSPACE Delete char to left of cursor.
|
||||||
|
DELETE ESC-x Delete char under cursor.
|
||||||
|
CNTL-BACKSPACE ESC-BACKSPACE Delete word to left of cursor.
|
||||||
|
CNTL-DELETE ESC-DELETE ESC-X Delete word under cursor.
|
||||||
|
CNTL-U ESC (MS-DOS only) Delete entire line.
|
||||||
|
UpArrow ESC-k Retrieve previous command line.
|
||||||
|
DownArrow ESC-j Retrieve next command line.
|
||||||
|
TAB Complete filename & cycle.
|
||||||
|
SHIFT-TAB ESC-TAB Complete filename & reverse cycle.
|
||||||
|
CNTL-L Complete filename, list all.
|
||||||
|
|
||||||
|
|
47
external/bsd/less/dist/lessecho.1
vendored
Normal file
47
external/bsd/less/dist/lessecho.1
vendored
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
.TH LESSECHO 1 "Version 444: 09 Jun 2011"
|
||||||
|
.SH NAME
|
||||||
|
lessecho \- expand metacharacters
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.B lessecho
|
||||||
|
.I "[-ox] [-cx] [-pn] [-dn] [-mx] [-nn] [-ex] [-a] file ..."
|
||||||
|
.SH "DESCRIPTION"
|
||||||
|
.I lessecho
|
||||||
|
is a program that simply echos its arguments on standard output.
|
||||||
|
But any argument containing spaces is enclosed in quotes.
|
||||||
|
.SH OPTIONS
|
||||||
|
A summary of options is included below.
|
||||||
|
.TP
|
||||||
|
.B \-ox
|
||||||
|
Specifies "x" to be the open quote character.
|
||||||
|
.TP
|
||||||
|
.B \-cx
|
||||||
|
Specifies "x" to be the close quote character.
|
||||||
|
.TP
|
||||||
|
.B \-pn
|
||||||
|
Specifies "n" to be the open quote character, as an integer.
|
||||||
|
.TP
|
||||||
|
.B \-dn
|
||||||
|
Specifies "n" to be the close quote character, as an integer.
|
||||||
|
.TP
|
||||||
|
.B \-mx
|
||||||
|
Specifies "x" to be a metachar.
|
||||||
|
.TP
|
||||||
|
.B \-nn
|
||||||
|
Specifies "n" to be a metachar, as an integer.
|
||||||
|
.TP
|
||||||
|
.B \-ex
|
||||||
|
Specifies "x" to be the escape char for metachars.
|
||||||
|
.TP
|
||||||
|
.B \-fn
|
||||||
|
Specifies "n" to be the escape char for metachars, as an integer.
|
||||||
|
.TP
|
||||||
|
.B \-a
|
||||||
|
Specifies that all arguments are to be quoted.
|
||||||
|
The default is that only arguments containing spaces are quoted.
|
||||||
|
.SH "SEE ALSO"
|
||||||
|
less(1)
|
||||||
|
.SH AUTHOR
|
||||||
|
This manual page was written by Thomas Schoepf <schoepf@debian.org>,
|
||||||
|
for the Debian GNU/Linux system (but may be used by others).
|
||||||
|
.PP
|
||||||
|
Send bug reports or comments to bug-less@gnu.org.
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: lessecho.c,v 1.6 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: lessecho.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
#include "less.h"
|
#include "less.h"
|
||||||
|
|
||||||
static char *version = "$Revision: 1.6 $";
|
static char *version = "$Revision: 1.3 $";
|
||||||
|
|
||||||
static int quote_all = 0;
|
static int quote_all = 0;
|
||||||
static char openquote = '"';
|
static char openquote = '"';
|
|
@ -1,6 +1,4 @@
|
||||||
.\" $NetBSD: lesskey.1,v 1.9 2006/10/26 01:33:08 mrg Exp $
|
.TH LESSKEY 1 "Version 444: 09 Jun 2011"
|
||||||
.\"
|
|
||||||
.TH LESSKEY 1 "Version 394: 03 Dec 2005"
|
|
||||||
.SH NAME
|
.SH NAME
|
||||||
lesskey \- specify key bindings for less
|
lesskey \- specify key bindings for less
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
|
@ -15,7 +13,7 @@ lesskey \- specify key bindings for less
|
||||||
.I Lesskey
|
.I Lesskey
|
||||||
is used to specify a set of key bindings to be used by
|
is used to specify a set of key bindings to be used by
|
||||||
.I less.
|
.I less.
|
||||||
The input file is a text file which describes the key bindings,
|
The input file is a text file which describes the key bindings.
|
||||||
If the input file is "-", standard input is read.
|
If the input file is "-", standard input is read.
|
||||||
If no input file is specified, a standard filename is used
|
If no input file is specified, a standard filename is used
|
||||||
as the name of the input file, which depends on the system being used:
|
as the name of the input file, which depends on the system being used:
|
||||||
|
@ -66,7 +64,7 @@ If the command section is the first section in the file,
|
||||||
this line may be omitted.
|
this line may be omitted.
|
||||||
The command section consists of lines of the form:
|
The command section consists of lines of the form:
|
||||||
.sp
|
.sp
|
||||||
\fIstring\fP \*[Lt]whitespace\*[Gt] \fIaction\fP [extra-string] \*[Lt]newline\*[Gt]
|
\fIstring\fP <whitespace> \fIaction\fP [extra-string] <newline>
|
||||||
.sp
|
.sp
|
||||||
Whitespace is any sequence of one or more spaces and/or tabs.
|
Whitespace is any sequence of one or more spaces and/or tabs.
|
||||||
The \fIstring\fP is the command key(s) which invoke the action.
|
The \fIstring\fP is the command key(s) which invoke the action.
|
||||||
|
@ -171,8 +169,8 @@ default command keys used by less:
|
||||||
\eeu undo-hilite
|
\eeu undo-hilite
|
||||||
g goto-line
|
g goto-line
|
||||||
\ekh goto-line
|
\ekh goto-line
|
||||||
\*[Lt] goto-line
|
< goto-line
|
||||||
\ee\*[Lt] goto-line
|
\ee< goto-line
|
||||||
p percent
|
p percent
|
||||||
% percent
|
% percent
|
||||||
\ee[ left-scroll
|
\ee[ left-scroll
|
||||||
|
@ -188,8 +186,8 @@ default command keys used by less:
|
||||||
\ee^F forw-bracket
|
\ee^F forw-bracket
|
||||||
\ee^B back-bracket
|
\ee^B back-bracket
|
||||||
G goto-end
|
G goto-end
|
||||||
\ee\*[Gt] goto-end
|
\ee> goto-end
|
||||||
\*[Gt] goto-end
|
> goto-end
|
||||||
\eke goto-end
|
\eke goto-end
|
||||||
= status
|
= status
|
||||||
^G status
|
^G status
|
||||||
|
@ -202,6 +200,7 @@ default command keys used by less:
|
||||||
\een repeat-search-all
|
\een repeat-search-all
|
||||||
N reverse-search
|
N reverse-search
|
||||||
\eeN reverse-search-all
|
\eeN reverse-search-all
|
||||||
|
& filter
|
||||||
m set-mark
|
m set-mark
|
||||||
' goto-mark
|
' goto-mark
|
||||||
^X^X goto-mark
|
^X^X goto-mark
|
||||||
|
@ -312,6 +311,7 @@ default line-editing keys used by less:
|
||||||
\eek up
|
\eek up
|
||||||
\eku up
|
\eku up
|
||||||
\eej down
|
\eej down
|
||||||
|
^G abort
|
||||||
.fi
|
.fi
|
||||||
.sp
|
.sp
|
||||||
|
|
||||||
|
@ -350,17 +350,12 @@ is run, and specifies the character set to be "latin1":
|
||||||
less(1)
|
less(1)
|
||||||
|
|
||||||
.SH WARNINGS
|
.SH WARNINGS
|
||||||
It is not possible to specify special keys, such as uparrow,
|
|
||||||
in a keyboard-independent manner.
|
|
||||||
The only way to specify such keys is to specify the escape sequence
|
|
||||||
which a particular keyboard sends when such a key is pressed.
|
|
||||||
.PP
|
|
||||||
On MS-DOS and OS/2 systems, certain keys send a sequence of characters
|
On MS-DOS and OS/2 systems, certain keys send a sequence of characters
|
||||||
which start with a NUL character (0).
|
which start with a NUL character (0).
|
||||||
This NUL character should be represented as \e340 in a lesskey file.
|
This NUL character should be represented as \e340 in a lesskey file.
|
||||||
|
|
||||||
.SH COPYRIGHT
|
.SH COPYRIGHT
|
||||||
Copyright (C) 2004 Mark Nudelman
|
Copyright (C) 2000-2011 Mark Nudelman
|
||||||
.PP
|
.PP
|
||||||
lesskey is part of the GNU project and is free software;
|
lesskey is part of the GNU project and is free software;
|
||||||
you can redistribute it and/or modify it
|
you can redistribute it and/or modify it
|
||||||
|
@ -380,7 +375,7 @@ Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
.SH AUTHOR
|
.SH AUTHOR
|
||||||
.PP
|
.PP
|
||||||
Mark Nudelman \*[Lt]markn@greenwoodsoftware.com\*[Gt]
|
Mark Nudelman <markn@greenwoodsoftware.com>
|
||||||
.br
|
.br
|
||||||
Send bug reports or comments to the above address or to bug-less@gnu.org.
|
Send bug reports or comments to the above address or to bug-less@gnu.org.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: lesskey.c,v 1.9 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: lesskey.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -95,63 +95,64 @@ struct cmdname
|
||||||
|
|
||||||
struct cmdname cmdnames[] =
|
struct cmdname cmdnames[] =
|
||||||
{
|
{
|
||||||
{ "back-bracket", A_B_BRACKET },
|
{ "back-bracket", A_B_BRACKET },
|
||||||
{ "back-line", A_B_LINE },
|
{ "back-line", A_B_LINE },
|
||||||
{ "back-line-force", A_BF_LINE },
|
{ "back-line-force", A_BF_LINE },
|
||||||
{ "back-screen", A_B_SCREEN },
|
{ "back-screen", A_B_SCREEN },
|
||||||
{ "back-scroll", A_B_SCROLL },
|
{ "back-scroll", A_B_SCROLL },
|
||||||
{ "back-search", A_B_SEARCH },
|
{ "back-search", A_B_SEARCH },
|
||||||
{ "back-window", A_B_WINDOW },
|
{ "back-window", A_B_WINDOW },
|
||||||
{ "debug", A_DEBUG },
|
{ "debug", A_DEBUG },
|
||||||
{ "digit", A_DIGIT },
|
{ "digit", A_DIGIT },
|
||||||
{ "display-flag", A_DISP_OPTION },
|
{ "display-flag", A_DISP_OPTION },
|
||||||
{ "display-option", A_DISP_OPTION },
|
{ "display-option", A_DISP_OPTION },
|
||||||
{ "end", A_GOEND },
|
{ "end", A_GOEND },
|
||||||
{ "examine", A_EXAMINE },
|
{ "examine", A_EXAMINE },
|
||||||
{ "first-cmd", A_FIRSTCMD },
|
{ "filter", A_FILTER },
|
||||||
{ "firstcmd", A_FIRSTCMD },
|
{ "first-cmd", A_FIRSTCMD },
|
||||||
{ "flush-repaint", A_FREPAINT },
|
{ "firstcmd", A_FIRSTCMD },
|
||||||
{ "forw-bracket", A_F_BRACKET },
|
{ "flush-repaint", A_FREPAINT },
|
||||||
{ "forw-forever", A_F_FOREVER },
|
{ "forw-bracket", A_F_BRACKET },
|
||||||
{ "forw-line", A_F_LINE },
|
{ "forw-forever", A_F_FOREVER },
|
||||||
{ "forw-line-force", A_FF_LINE },
|
{ "forw-line", A_F_LINE },
|
||||||
{ "forw-screen", A_F_SCREEN },
|
{ "forw-line-force", A_FF_LINE },
|
||||||
{ "forw-screen-force", A_FF_SCREEN },
|
{ "forw-screen", A_F_SCREEN },
|
||||||
{ "forw-scroll", A_F_SCROLL },
|
{ "forw-screen-force", A_FF_SCREEN },
|
||||||
{ "forw-search", A_F_SEARCH },
|
{ "forw-scroll", A_F_SCROLL },
|
||||||
{ "forw-window", A_F_WINDOW },
|
{ "forw-search", A_F_SEARCH },
|
||||||
{ "goto-end", A_GOEND },
|
{ "forw-window", A_F_WINDOW },
|
||||||
{ "goto-line", A_GOLINE },
|
{ "goto-end", A_GOEND },
|
||||||
{ "goto-mark", A_GOMARK },
|
{ "goto-line", A_GOLINE },
|
||||||
{ "help", A_HELP },
|
{ "goto-mark", A_GOMARK },
|
||||||
{ "index-file", A_INDEX_FILE },
|
{ "help", A_HELP },
|
||||||
{ "invalid", A_UINVALID },
|
{ "index-file", A_INDEX_FILE },
|
||||||
{ "left-scroll", A_LSHIFT },
|
{ "invalid", A_UINVALID },
|
||||||
{ "next-file", A_NEXT_FILE },
|
{ "left-scroll", A_LSHIFT },
|
||||||
{ "next-tag", A_NEXT_TAG },
|
{ "next-file", A_NEXT_FILE },
|
||||||
{ "noaction", A_NOACTION },
|
{ "next-tag", A_NEXT_TAG },
|
||||||
{ "percent", A_PERCENT },
|
{ "noaction", A_NOACTION },
|
||||||
{ "pipe", A_PIPE },
|
{ "percent", A_PERCENT },
|
||||||
{ "prev-file", A_PREV_FILE },
|
{ "pipe", A_PIPE },
|
||||||
{ "prev-tag", A_PREV_TAG },
|
{ "prev-file", A_PREV_FILE },
|
||||||
{ "quit", A_QUIT },
|
{ "prev-tag", A_PREV_TAG },
|
||||||
{ "remove-file", A_REMOVE_FILE },
|
{ "quit", A_QUIT },
|
||||||
{ "repaint", A_REPAINT },
|
{ "remove-file", A_REMOVE_FILE },
|
||||||
{ "repaint-flush", A_FREPAINT },
|
{ "repaint", A_REPAINT },
|
||||||
{ "repeat-search", A_AGAIN_SEARCH },
|
{ "repaint-flush", A_FREPAINT },
|
||||||
{ "repeat-search-all", A_T_AGAIN_SEARCH },
|
{ "repeat-search", A_AGAIN_SEARCH },
|
||||||
{ "reverse-search", A_REVERSE_SEARCH },
|
{ "repeat-search-all", A_T_AGAIN_SEARCH },
|
||||||
{ "reverse-search-all", A_T_REVERSE_SEARCH },
|
{ "reverse-search", A_REVERSE_SEARCH },
|
||||||
{ "right-scroll", A_RSHIFT },
|
{ "reverse-search-all", A_T_REVERSE_SEARCH },
|
||||||
{ "set-mark", A_SETMARK },
|
{ "right-scroll", A_RSHIFT },
|
||||||
{ "shell", A_SHELL },
|
{ "set-mark", A_SETMARK },
|
||||||
{ "status", A_STAT },
|
{ "shell", A_SHELL },
|
||||||
{ "toggle-flag", A_OPT_TOGGLE },
|
{ "status", A_STAT },
|
||||||
{ "toggle-option", A_OPT_TOGGLE },
|
{ "toggle-flag", A_OPT_TOGGLE },
|
||||||
{ "undo-hilite", A_UNDO_SEARCH },
|
{ "toggle-option", A_OPT_TOGGLE },
|
||||||
{ "version", A_VERSION },
|
{ "undo-hilite", A_UNDO_SEARCH },
|
||||||
{ "visual", A_VISUAL },
|
{ "version", A_VERSION },
|
||||||
{ NULL, 0 }
|
{ "visual", A_VISUAL },
|
||||||
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
struct cmdname editnames[] =
|
struct cmdname editnames[] =
|
||||||
|
@ -167,6 +168,7 @@ struct cmdname editnames[] =
|
||||||
{ "insert", EC_INSERT },
|
{ "insert", EC_INSERT },
|
||||||
{ "invalid", EC_UINVALID },
|
{ "invalid", EC_UINVALID },
|
||||||
{ "kill-line", EC_LINEKILL },
|
{ "kill-line", EC_LINEKILL },
|
||||||
|
{ "abort", EC_ABORT },
|
||||||
{ "left", EC_LEFT },
|
{ "left", EC_LEFT },
|
||||||
{ "literal", EC_LITERAL },
|
{ "literal", EC_LITERAL },
|
||||||
{ "right", EC_RIGHT },
|
{ "right", EC_RIGHT },
|
||||||
|
@ -543,7 +545,7 @@ add_cmd_str(s)
|
||||||
control_line(s)
|
control_line(s)
|
||||||
char *s;
|
char *s;
|
||||||
{
|
{
|
||||||
#define PREFIX(str,pat) (strncmp(str,pat,strlen(pat)-1) == 0)
|
#define PREFIX(str,pat) (strncmp(str,pat,strlen(pat)) == 0)
|
||||||
|
|
||||||
if (PREFIX(s, "#line-edit"))
|
if (PREFIX(s, "#line-edit"))
|
||||||
{
|
{
|
|
@ -1,5 +1,7 @@
|
||||||
|
/* $NetBSD: lesskey.h,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
|
@ -1,5 +1,7 @@
|
||||||
|
/* $NetBSD: lglob.h,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: line.c,v 1.11 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: line.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -37,7 +37,6 @@ static int overstrike; /* Next char should overstrike previous char */
|
||||||
static int last_overstrike = AT_NORMAL;
|
static int last_overstrike = AT_NORMAL;
|
||||||
static int is_null_line; /* There is no current line */
|
static int is_null_line; /* There is no current line */
|
||||||
static int lmargin; /* Left margin */
|
static int lmargin; /* Left margin */
|
||||||
static int line_matches; /* Number of search matches in this line */
|
|
||||||
static char pendc;
|
static char pendc;
|
||||||
static POSITION pendpos;
|
static POSITION pendpos;
|
||||||
static char *end_ansi_chars;
|
static char *end_ansi_chars;
|
||||||
|
@ -162,9 +161,6 @@ prewind()
|
||||||
lmargin = 0;
|
lmargin = 0;
|
||||||
if (status_col)
|
if (status_col)
|
||||||
lmargin += 1;
|
lmargin += 1;
|
||||||
#if HILITE_SEARCH
|
|
||||||
line_matches = 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -268,7 +264,7 @@ pshift(shift)
|
||||||
while (shifted <= shift && from < curr)
|
while (shifted <= shift && from < curr)
|
||||||
{
|
{
|
||||||
c = linebuf[from];
|
c = linebuf[from];
|
||||||
if (c == ESC && ctldisp == OPT_ONPLUS)
|
if (ctldisp == OPT_ONPLUS && IS_CSI_START(c))
|
||||||
{
|
{
|
||||||
/* Keep cumulative effect. */
|
/* Keep cumulative effect. */
|
||||||
linebuf[to] = c;
|
linebuf[to] = c;
|
||||||
|
@ -523,7 +519,7 @@ in_ansi_esc_seq()
|
||||||
for (p = &linebuf[curr]; p > linebuf; )
|
for (p = &linebuf[curr]; p > linebuf; )
|
||||||
{
|
{
|
||||||
LWCHAR ch = step_char(&p, -1, linebuf);
|
LWCHAR ch = step_char(&p, -1, linebuf);
|
||||||
if (ch == ESC)
|
if (IS_CSI_START(ch))
|
||||||
return (1);
|
return (1);
|
||||||
if (!is_ansi_middle(ch))
|
if (!is_ansi_middle(ch))
|
||||||
return (0);
|
return (0);
|
||||||
|
@ -592,7 +588,6 @@ store_char(ch, a, rep, pos)
|
||||||
if (a != AT_ANSI)
|
if (a != AT_ANSI)
|
||||||
a |= AT_HILITE;
|
a |= AT_HILITE;
|
||||||
}
|
}
|
||||||
line_matches += matches;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -600,15 +595,18 @@ store_char(ch, a, rep, pos)
|
||||||
{
|
{
|
||||||
if (!is_ansi_end(ch) && !is_ansi_middle(ch)) {
|
if (!is_ansi_end(ch) && !is_ansi_middle(ch)) {
|
||||||
/* Remove whole unrecognized sequence. */
|
/* Remove whole unrecognized sequence. */
|
||||||
|
char *p = &linebuf[curr];
|
||||||
|
LWCHAR bch;
|
||||||
do {
|
do {
|
||||||
--curr;
|
bch = step_char(&p, -1, linebuf);
|
||||||
} while (linebuf[curr] != ESC);
|
} while (p > linebuf && !IS_CSI_START(bch));
|
||||||
|
curr = p - linebuf;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
a = AT_ANSI; /* Will force re-AT_'ing around it. */
|
a = AT_ANSI; /* Will force re-AT_'ing around it. */
|
||||||
w = 0;
|
w = 0;
|
||||||
}
|
}
|
||||||
else if (ctldisp == OPT_ONPLUS && ch == ESC)
|
else if (ctldisp == OPT_ONPLUS && IS_CSI_START(ch))
|
||||||
{
|
{
|
||||||
a = AT_ANSI; /* Will force re-AT_'ing around it. */
|
a = AT_ANSI; /* Will force re-AT_'ing around it. */
|
||||||
w = 0;
|
w = 0;
|
||||||
|
@ -942,7 +940,7 @@ do_append(ch, rep, pos)
|
||||||
} else if ((!utf_mode || is_ascii_char(ch)) && control_char((char)ch))
|
} else if ((!utf_mode || is_ascii_char(ch)) && control_char((char)ch))
|
||||||
{
|
{
|
||||||
do_control_char:
|
do_control_char:
|
||||||
if (ctldisp == OPT_ON || (ctldisp == OPT_ONPLUS && ch == ESC))
|
if (ctldisp == OPT_ON || (ctldisp == OPT_ONPLUS && IS_CSI_START(ch)))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Output as a normal character.
|
* Output as a normal character.
|
||||||
|
@ -992,8 +990,9 @@ pflushmbc()
|
||||||
* Terminate the line in the line buffer.
|
* Terminate the line in the line buffer.
|
||||||
*/
|
*/
|
||||||
public void
|
public void
|
||||||
pdone(endline)
|
pdone(endline, forw)
|
||||||
int endline;
|
int endline;
|
||||||
|
int forw;
|
||||||
{
|
{
|
||||||
(void) pflushmbc();
|
(void) pflushmbc();
|
||||||
|
|
||||||
|
@ -1025,23 +1024,56 @@ pdone(endline)
|
||||||
/*
|
/*
|
||||||
* Add a newline if necessary,
|
* Add a newline if necessary,
|
||||||
* and append a '\0' to the end of the line.
|
* and append a '\0' to the end of the line.
|
||||||
|
* We output a newline if we're not at the right edge of the screen,
|
||||||
|
* or if the terminal doesn't auto wrap,
|
||||||
|
* or if this is really the end of the line AND the terminal ignores
|
||||||
|
* a newline at the right edge.
|
||||||
|
* (In the last case we don't want to output a newline if the terminal
|
||||||
|
* doesn't ignore it since that would produce an extra blank line.
|
||||||
|
* But we do want to output a newline if the terminal ignores it in case
|
||||||
|
* the next line is blank. In that case the single newline output for
|
||||||
|
* that blank line would be ignored!)
|
||||||
*/
|
*/
|
||||||
if (column < sc_width || !auto_wrap || ignaw || ctldisp == OPT_ON)
|
if (column < sc_width || !auto_wrap || (endline && ignaw) || ctldisp == OPT_ON)
|
||||||
{
|
{
|
||||||
linebuf[curr] = '\n';
|
linebuf[curr] = '\n';
|
||||||
attr[curr] = AT_NORMAL;
|
attr[curr] = AT_NORMAL;
|
||||||
curr++;
|
curr++;
|
||||||
}
|
}
|
||||||
|
else if (ignaw && column >= sc_width && forw)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Terminals with "ignaw" don't wrap until they *really* need
|
||||||
|
* to, i.e. when the character *after* the last one to fit on a
|
||||||
|
* line is output. But they are too hard to deal with when they
|
||||||
|
* get in the state where a full screen width of characters
|
||||||
|
* have been output but the cursor is sitting on the right edge
|
||||||
|
* instead of at the start of the next line.
|
||||||
|
* So we nudge them into wrapping by outputting a space
|
||||||
|
* character plus a backspace. But do this only if moving
|
||||||
|
* forward; if we're moving backward and drawing this line at
|
||||||
|
* the top of the screen, the space would overwrite the first
|
||||||
|
* char on the next line. We don't need to do this "nudge"
|
||||||
|
* at the top of the screen anyway.
|
||||||
|
*/
|
||||||
|
linebuf[curr] = ' ';
|
||||||
|
attr[curr++] = AT_NORMAL;
|
||||||
|
linebuf[curr] = '\b';
|
||||||
|
attr[curr++] = AT_NORMAL;
|
||||||
|
}
|
||||||
linebuf[curr] = '\0';
|
linebuf[curr] = '\0';
|
||||||
attr[curr] = AT_NORMAL;
|
attr[curr] = AT_NORMAL;
|
||||||
|
}
|
||||||
|
|
||||||
#if HILITE_SEARCH
|
/*
|
||||||
if (status_col && line_matches > 0)
|
*
|
||||||
{
|
*/
|
||||||
linebuf[0] = '*';
|
public void
|
||||||
attr[0] = AT_NORMAL|AT_HILITE;
|
set_status_col(c)
|
||||||
}
|
char c;
|
||||||
#endif
|
{
|
||||||
|
linebuf[0] = c;
|
||||||
|
attr[0] = AT_NORMAL|AT_HILITE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1094,9 +1126,10 @@ null_line()
|
||||||
* {{ This is supposed to be more efficient than forw_line(). }}
|
* {{ This is supposed to be more efficient than forw_line(). }}
|
||||||
*/
|
*/
|
||||||
public POSITION
|
public POSITION
|
||||||
forw_raw_line(curr_pos, linep)
|
forw_raw_line(curr_pos, linep, line_lenp)
|
||||||
POSITION curr_pos;
|
POSITION curr_pos;
|
||||||
char **linep;
|
char **linep;
|
||||||
|
int *line_lenp;
|
||||||
{
|
{
|
||||||
register int n;
|
register int n;
|
||||||
register int c;
|
register int c;
|
||||||
|
@ -1132,6 +1165,8 @@ forw_raw_line(curr_pos, linep)
|
||||||
linebuf[n] = '\0';
|
linebuf[n] = '\0';
|
||||||
if (linep != NULL)
|
if (linep != NULL)
|
||||||
*linep = linebuf;
|
*linep = linebuf;
|
||||||
|
if (line_lenp != NULL)
|
||||||
|
*line_lenp = n;
|
||||||
return (new_pos);
|
return (new_pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1140,9 +1175,10 @@ forw_raw_line(curr_pos, linep)
|
||||||
* {{ This is supposed to be more efficient than back_line(). }}
|
* {{ This is supposed to be more efficient than back_line(). }}
|
||||||
*/
|
*/
|
||||||
public POSITION
|
public POSITION
|
||||||
back_raw_line(curr_pos, linep)
|
back_raw_line(curr_pos, linep, line_lenp)
|
||||||
POSITION curr_pos;
|
POSITION curr_pos;
|
||||||
char **linep;
|
char **linep;
|
||||||
|
int *line_lenp;
|
||||||
{
|
{
|
||||||
register int n;
|
register int n;
|
||||||
register int c;
|
register int c;
|
||||||
|
@ -1203,5 +1239,7 @@ back_raw_line(curr_pos, linep)
|
||||||
}
|
}
|
||||||
if (linep != NULL)
|
if (linep != NULL)
|
||||||
*linep = &linebuf[n];
|
*linep = &linebuf[n];
|
||||||
|
if (line_lenp != NULL)
|
||||||
|
*line_lenp = size_linebuf - 1 - n;
|
||||||
return (new_pos);
|
return (new_pos);
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: linenum.c,v 1.8 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: linenum.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -58,12 +58,10 @@ struct linenum_info
|
||||||
* when we have a new one to insert and the table is full.
|
* when we have a new one to insert and the table is full.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define NPOOL 50 /* Size of line number pool */
|
#define NPOOL 200 /* Size of line number pool */
|
||||||
|
|
||||||
#define LONGTIME (2) /* In seconds */
|
#define LONGTIME (2) /* In seconds */
|
||||||
|
|
||||||
public int lnloop = 0; /* Are we in the line num loop? */
|
|
||||||
|
|
||||||
static struct linenum_info anchor; /* Anchor of the list */
|
static struct linenum_info anchor; /* Anchor of the list */
|
||||||
static struct linenum_info *freelist; /* Anchor of the unused entries */
|
static struct linenum_info *freelist; /* Anchor of the unused entries */
|
||||||
static struct linenum_info pool[NPOOL]; /* The pool itself */
|
static struct linenum_info pool[NPOOL]; /* The pool itself */
|
||||||
|
@ -72,6 +70,7 @@ static struct linenum_info *spare; /* We always keep one spare entry */
|
||||||
extern int linenums;
|
extern int linenums;
|
||||||
extern int sigs;
|
extern int sigs;
|
||||||
extern int sc_height;
|
extern int sc_height;
|
||||||
|
extern int screen_trashed;
|
||||||
|
|
||||||
static void calcgap __P((struct linenum_info *));
|
static void calcgap __P((struct linenum_info *));
|
||||||
static void longloopmessage __P((void));
|
static void longloopmessage __P((void));
|
||||||
|
@ -220,12 +219,6 @@ add_lnum(linenum, pos)
|
||||||
longloopmessage()
|
longloopmessage()
|
||||||
{
|
{
|
||||||
ierror("Calculating line numbers", NULL_PARG);
|
ierror("Calculating line numbers", NULL_PARG);
|
||||||
/*
|
|
||||||
* Set the lnloop flag here, so if the user interrupts while
|
|
||||||
* we are calculating line numbers, the signal handler will
|
|
||||||
* turn off line numbers (linenums=0).
|
|
||||||
*/
|
|
||||||
lnloop = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int loopcount;
|
static int loopcount;
|
||||||
|
@ -255,6 +248,22 @@ longish()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Turn off line numbers because the user has interrupted
|
||||||
|
* a lengthy line number calculation.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
abort_long()
|
||||||
|
{
|
||||||
|
if (linenums == OPT_ONPLUS)
|
||||||
|
/*
|
||||||
|
* We were displaying line numbers, so need to repaint.
|
||||||
|
*/
|
||||||
|
screen_trashed = 1;
|
||||||
|
linenums = 0;
|
||||||
|
error("Line numbers turned off", NULL_PARG);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the line number associated with a given position.
|
* Find the line number associated with a given position.
|
||||||
* Return 0 if we can't figure it out.
|
* Return 0 if we can't figure it out.
|
||||||
|
@ -320,12 +329,15 @@ find_linenum(pos)
|
||||||
/*
|
/*
|
||||||
* Allow a signal to abort this loop.
|
* Allow a signal to abort this loop.
|
||||||
*/
|
*/
|
||||||
cpos = forw_raw_line(cpos, (char **)NULL);
|
cpos = forw_raw_line(cpos, (char **)NULL, (int *)NULL);
|
||||||
if (ABORT_SIGS() || cpos == NULL_POSITION)
|
if (ABORT_SIGS()) {
|
||||||
|
abort_long();
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
if (cpos == NULL_POSITION)
|
||||||
return (0);
|
return (0);
|
||||||
longish();
|
longish();
|
||||||
}
|
}
|
||||||
lnloop = 0;
|
|
||||||
/*
|
/*
|
||||||
* We might as well cache it.
|
* We might as well cache it.
|
||||||
*/
|
*/
|
||||||
|
@ -349,12 +361,15 @@ find_linenum(pos)
|
||||||
/*
|
/*
|
||||||
* Allow a signal to abort this loop.
|
* Allow a signal to abort this loop.
|
||||||
*/
|
*/
|
||||||
cpos = back_raw_line(cpos, (char **)NULL);
|
cpos = back_raw_line(cpos, (char **)NULL, (int *)NULL);
|
||||||
if (ABORT_SIGS() || cpos == NULL_POSITION)
|
if (ABORT_SIGS()) {
|
||||||
|
abort_long();
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
if (cpos == NULL_POSITION)
|
||||||
return (0);
|
return (0);
|
||||||
longish();
|
longish();
|
||||||
}
|
}
|
||||||
lnloop = 0;
|
|
||||||
/*
|
/*
|
||||||
* We might as well cache it.
|
* We might as well cache it.
|
||||||
*/
|
*/
|
||||||
|
@ -404,8 +419,10 @@ find_pos(linenum)
|
||||||
/*
|
/*
|
||||||
* Allow a signal to abort this loop.
|
* Allow a signal to abort this loop.
|
||||||
*/
|
*/
|
||||||
cpos = forw_raw_line(cpos, (char **)NULL);
|
cpos = forw_raw_line(cpos, (char **)NULL, (int *)NULL);
|
||||||
if (ABORT_SIGS() || cpos == NULL_POSITION)
|
if (ABORT_SIGS())
|
||||||
|
return (NULL_POSITION);
|
||||||
|
if (cpos == NULL_POSITION)
|
||||||
return (NULL_POSITION);
|
return (NULL_POSITION);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
|
@ -420,8 +437,10 @@ find_pos(linenum)
|
||||||
/*
|
/*
|
||||||
* Allow a signal to abort this loop.
|
* Allow a signal to abort this loop.
|
||||||
*/
|
*/
|
||||||
cpos = back_raw_line(cpos, (char **)NULL);
|
cpos = back_raw_line(cpos, (char **)NULL, (int *)NULL);
|
||||||
if (ABORT_SIGS() || cpos == NULL_POSITION)
|
if (ABORT_SIGS())
|
||||||
|
return (NULL_POSITION);
|
||||||
|
if (cpos == NULL_POSITION)
|
||||||
return (NULL_POSITION);
|
return (NULL_POSITION);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: lsystem.c,v 1.8 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: lsystem.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -51,7 +51,7 @@ lsystem(cmd, donemsg)
|
||||||
register char *p;
|
register char *p;
|
||||||
#endif
|
#endif
|
||||||
IFILE save_ifile;
|
IFILE save_ifile;
|
||||||
#if MSDOS_COMPILER
|
#if MSDOS_COMPILER && MSDOS_COMPILER!=WIN32C
|
||||||
char cwd[FILENAME_MAX+1];
|
char cwd[FILENAME_MAX+1];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -70,6 +70,10 @@ lsystem(cmd, donemsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
#if MSDOS_COMPILER
|
#if MSDOS_COMPILER
|
||||||
|
#if MSDOS_COMPILER==WIN32C
|
||||||
|
if (*cmd == '\0')
|
||||||
|
cmd = getenv("COMSPEC");
|
||||||
|
#else
|
||||||
/*
|
/*
|
||||||
* Working directory is global on MSDOS.
|
* Working directory is global on MSDOS.
|
||||||
* The child might change the working directory, so we
|
* The child might change the working directory, so we
|
||||||
|
@ -78,6 +82,7 @@ lsystem(cmd, donemsg)
|
||||||
* try to "reedit_ifile" it.
|
* try to "reedit_ifile" it.
|
||||||
*/
|
*/
|
||||||
getcwd(cwd, FILENAME_MAX);
|
getcwd(cwd, FILENAME_MAX);
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -194,7 +199,7 @@ lsystem(cmd, donemsg)
|
||||||
init();
|
init();
|
||||||
screen_trashed = 1;
|
screen_trashed = 1;
|
||||||
|
|
||||||
#if MSDOS_COMPILER
|
#if MSDOS_COMPILER && MSDOS_COMPILER!=WIN32C
|
||||||
/*
|
/*
|
||||||
* Restore the previous directory (possibly
|
* Restore the previous directory (possibly
|
||||||
* changed by the child program we just ran).
|
* changed by the child program we just ran).
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: main.c,v 1.14 2008/08/28 07:20:20 mrg Exp $ */
|
/* $NetBSD: main.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -57,8 +57,11 @@ extern int jump_sline;
|
||||||
static char consoleTitle[256];
|
static char consoleTitle[256];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern int less_is_more;
|
||||||
extern int missing_cap;
|
extern int missing_cap;
|
||||||
extern int know_dumb;
|
extern int know_dumb;
|
||||||
|
extern int quit_if_one_screen;
|
||||||
|
extern int pr_type;
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -117,20 +120,27 @@ main(argc, argv)
|
||||||
is_tty = isatty(1);
|
is_tty = isatty(1);
|
||||||
get_term();
|
get_term();
|
||||||
init_cmds();
|
init_cmds();
|
||||||
init_prompt();
|
|
||||||
init_charset();
|
init_charset();
|
||||||
init_line();
|
init_line();
|
||||||
init_cmdhist();
|
init_cmdhist();
|
||||||
init_option();
|
init_option();
|
||||||
|
init_search();
|
||||||
|
|
||||||
if (more_mode) {
|
/*
|
||||||
scan_option("-E");
|
* If the name of the executable program is "more",
|
||||||
scan_option("-m");
|
* act like LESS_IS_MORE is set.
|
||||||
scan_option("-G");
|
*/
|
||||||
scan_option("-f");
|
for (s = progname + strlen(progname); s > progname; s--)
|
||||||
s = lgetenv("MORE");
|
{
|
||||||
} else
|
if (s[-1] == PATHNAME_SEP[0])
|
||||||
s = lgetenv("LESS");
|
break;
|
||||||
|
}
|
||||||
|
if (strcmp(s, "more") == 0)
|
||||||
|
less_is_more = 1;
|
||||||
|
|
||||||
|
init_prompt();
|
||||||
|
|
||||||
|
s = lgetenv(less_is_more ? "MORE" : "LESS");
|
||||||
if (s != NULL)
|
if (s != NULL)
|
||||||
scan_option(save(s));
|
scan_option(save(s));
|
||||||
|
|
||||||
|
@ -155,6 +165,9 @@ main(argc, argv)
|
||||||
quit(QUIT_OK);
|
quit(QUIT_OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (less_is_more && get_quit_at_eof())
|
||||||
|
quit_if_one_screen = TRUE;
|
||||||
|
|
||||||
#if EDITOR
|
#if EDITOR
|
||||||
editor = lgetenv("VISUAL");
|
editor = lgetenv("VISUAL");
|
||||||
if (editor == NULL || *editor == '\0')
|
if (editor == NULL || *editor == '\0')
|
||||||
|
@ -399,7 +412,7 @@ quit(status)
|
||||||
*/
|
*/
|
||||||
close(2);
|
close(2);
|
||||||
#endif
|
#endif
|
||||||
#if WIN32
|
#ifdef WIN32
|
||||||
SetConsoleTitle(consoleTitle);
|
SetConsoleTitle(consoleTitle);
|
||||||
#endif
|
#endif
|
||||||
close_getchr();
|
close_getchr();
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: mark.c,v 1.6 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: mark.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
9
external/bsd/less/dist/mkfuncs.awk
vendored
Normal file
9
external/bsd/less/dist/mkfuncs.awk
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
BEGIN { FS="("; state = 0 }
|
||||||
|
|
||||||
|
/^ public/ { ftype = $0; state = 1 }
|
||||||
|
|
||||||
|
{ if (state == 1)
|
||||||
|
state = 2
|
||||||
|
else if (state == 2)
|
||||||
|
{ print ftype,$1,"();"; state = 0 }
|
||||||
|
}
|
71
external/bsd/less/dist/mkhelp.c
vendored
Normal file
71
external/bsd/less/dist/mkhelp.c
vendored
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
/* $NetBSD: mkhelp.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
|
*
|
||||||
|
* You may distribute under the terms of either the GNU General Public
|
||||||
|
* License or the Less License, as specified in the README file.
|
||||||
|
*
|
||||||
|
* For more information about less, or for information on how to
|
||||||
|
* contact the author, see the README file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Silly little program to generate the help.c source file
|
||||||
|
* from the less.hlp text file.
|
||||||
|
* help.c just contains a char array whose contents are
|
||||||
|
* the contents of less.hlp.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
int ch;
|
||||||
|
int prevch;
|
||||||
|
|
||||||
|
printf("/* This file was generated by mkhelp from less.hlp */\n");
|
||||||
|
printf("#include \"less.h\"\n");
|
||||||
|
printf("constant char helpdata[] = {\n");
|
||||||
|
ch = 0;
|
||||||
|
while (prevch = ch, (ch = getchar()) != EOF)
|
||||||
|
{
|
||||||
|
switch (ch)
|
||||||
|
{
|
||||||
|
case '\'':
|
||||||
|
printf("'\\'',");
|
||||||
|
break;
|
||||||
|
case '\\':
|
||||||
|
printf("'\\\\',");
|
||||||
|
break;
|
||||||
|
case '\b':
|
||||||
|
printf("'\\b',");
|
||||||
|
break;
|
||||||
|
case '\t':
|
||||||
|
printf("'\\t',");
|
||||||
|
break;
|
||||||
|
case '\n':
|
||||||
|
if (prevch != '\r')
|
||||||
|
printf("'\\n',\n");
|
||||||
|
break;
|
||||||
|
case '\r':
|
||||||
|
if (prevch != '\n')
|
||||||
|
printf("'\\n',\n");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (ch >= ' ' && ch < 0x7f)
|
||||||
|
printf("'%c',", ch);
|
||||||
|
else
|
||||||
|
printf("0x%02x,", ch);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* Add an extra null char to avoid having a trailing comma. */
|
||||||
|
printf(" 0 };\n");
|
||||||
|
printf("constant int size_helpdata = sizeof(helpdata) - 1;\n");
|
||||||
|
return (0);
|
||||||
|
}
|
32
external/bsd/less/dist/mkinstalldirs
vendored
Normal file
32
external/bsd/less/dist/mkinstalldirs
vendored
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# mkinstalldirs --- make directory hierarchy
|
||||||
|
# Author: Noah Friedman <friedman@prep.ai.mit.edu>
|
||||||
|
# Created: 1993-05-16
|
||||||
|
# Last modified: 1994-03-25
|
||||||
|
# Public domain
|
||||||
|
|
||||||
|
errstatus=0
|
||||||
|
|
||||||
|
for file in ${1+"$@"} ; do
|
||||||
|
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
|
||||||
|
shift
|
||||||
|
|
||||||
|
pathcomp=
|
||||||
|
for d in ${1+"$@"} ; do
|
||||||
|
pathcomp="$pathcomp$d"
|
||||||
|
case "$pathcomp" in
|
||||||
|
-* ) pathcomp=./$pathcomp ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test ! -d "$pathcomp"; then
|
||||||
|
echo "mkdir $pathcomp" 1>&2
|
||||||
|
mkdir "$pathcomp" || errstatus=$?
|
||||||
|
fi
|
||||||
|
|
||||||
|
pathcomp="$pathcomp/"
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $errstatus
|
||||||
|
|
||||||
|
# mkinstalldirs ends here
|
|
@ -1,5 +1,7 @@
|
||||||
|
/* $NetBSD: optfunc.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -33,19 +35,24 @@ extern int bufspace;
|
||||||
extern int pr_type;
|
extern int pr_type;
|
||||||
extern int plusoption;
|
extern int plusoption;
|
||||||
extern int swindow;
|
extern int swindow;
|
||||||
|
extern int sc_width;
|
||||||
extern int sc_height;
|
extern int sc_height;
|
||||||
extern int secure;
|
extern int secure;
|
||||||
extern int dohelp;
|
extern int dohelp;
|
||||||
extern int any_display;
|
extern int any_display;
|
||||||
extern int less_is_more;
|
|
||||||
extern char openquote;
|
extern char openquote;
|
||||||
extern char closequote;
|
extern char closequote;
|
||||||
extern char constant *prproto[];
|
extern char *prproto[];
|
||||||
extern char constant *eqproto;
|
extern char *eqproto;
|
||||||
extern char constant *hproto;
|
extern char *hproto;
|
||||||
extern char constant *wproto;
|
extern char *wproto;
|
||||||
extern IFILE curr_ifile;
|
extern IFILE curr_ifile;
|
||||||
extern char version[];
|
extern char version[];
|
||||||
|
extern int jump_sline;
|
||||||
|
extern int jump_sline_fraction;
|
||||||
|
extern int shift_count;
|
||||||
|
extern int shift_count_fraction;
|
||||||
|
extern int less_is_more;
|
||||||
#if LOGFILE
|
#if LOGFILE
|
||||||
extern char *namelogfile;
|
extern char *namelogfile;
|
||||||
extern int force_logfile;
|
extern int force_logfile;
|
||||||
|
@ -54,7 +61,6 @@ extern int logfile;
|
||||||
#if TAGS
|
#if TAGS
|
||||||
public char *tagoption = NULL;
|
public char *tagoption = NULL;
|
||||||
extern char *tags;
|
extern char *tags;
|
||||||
extern int jump_sline;
|
|
||||||
#endif
|
#endif
|
||||||
#if MSDOS_COMPILER
|
#if MSDOS_COMPILER
|
||||||
extern int nm_fg_color, nm_bg_color;
|
extern int nm_fg_color, nm_bg_color;
|
||||||
|
@ -128,33 +134,134 @@ opt__O(type, s)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handlers for -l option.
|
* Handlers for -j option.
|
||||||
*/
|
*/
|
||||||
public void
|
public void
|
||||||
opt_l(type, s)
|
opt_j(type, s)
|
||||||
int type;
|
int type;
|
||||||
char *s;
|
char *s;
|
||||||
{
|
{
|
||||||
|
PARG parg;
|
||||||
|
char buf[16];
|
||||||
|
int len;
|
||||||
int err;
|
int err;
|
||||||
int n;
|
|
||||||
char *t;
|
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case INIT:
|
case INIT:
|
||||||
t = s;
|
case TOGGLE:
|
||||||
n = getnum(&t, "l", &err);
|
if (*s == '.')
|
||||||
if (err || n <= 0)
|
|
||||||
{
|
{
|
||||||
error("Line number is required after -l", NULL_PARG);
|
s++;
|
||||||
return;
|
jump_sline_fraction = getfraction(&s, "j", &err);
|
||||||
|
if (err)
|
||||||
|
error("Invalid line fraction", NULL_PARG);
|
||||||
|
else
|
||||||
|
calc_jump_sline();
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
int sline = getnum(&s, "j", &err);
|
||||||
|
if (err)
|
||||||
|
error("Invalid line number", NULL_PARG);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
jump_sline = sline;
|
||||||
|
jump_sline_fraction = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case QUERY:
|
||||||
|
if (jump_sline_fraction < 0)
|
||||||
|
{
|
||||||
|
parg.p_int = jump_sline;
|
||||||
|
error("Position target at screen line %d", &parg);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
|
||||||
|
sprintf(buf, ".%06d", jump_sline_fraction);
|
||||||
|
len = strlen(buf);
|
||||||
|
while (len > 2 && buf[len-1] == '0')
|
||||||
|
len--;
|
||||||
|
buf[len] = '\0';
|
||||||
|
parg.p_string = buf;
|
||||||
|
error("Position target at screen position %s", &parg);
|
||||||
}
|
}
|
||||||
plusoption = TRUE;
|
|
||||||
ungetsc(s);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void
|
||||||
|
calc_jump_sline()
|
||||||
|
{
|
||||||
|
if (jump_sline_fraction < 0)
|
||||||
|
return;
|
||||||
|
jump_sline = sc_height * jump_sline_fraction / NUM_FRAC_DENOM;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Handlers for -# option.
|
||||||
|
*/
|
||||||
|
public void
|
||||||
|
opt_shift(type, s)
|
||||||
|
int type;
|
||||||
|
char *s;
|
||||||
|
{
|
||||||
|
PARG parg;
|
||||||
|
char buf[16];
|
||||||
|
int len;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case INIT:
|
||||||
|
case TOGGLE:
|
||||||
|
if (*s == '.')
|
||||||
|
{
|
||||||
|
s++;
|
||||||
|
shift_count_fraction = getfraction(&s, "#", &err);
|
||||||
|
if (err)
|
||||||
|
error("Invalid column fraction", NULL_PARG);
|
||||||
|
else
|
||||||
|
calc_shift_count();
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
int hs = getnum(&s, "#", &err);
|
||||||
|
if (err)
|
||||||
|
error("Invalid column number", NULL_PARG);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
shift_count = hs;
|
||||||
|
shift_count_fraction = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case QUERY:
|
||||||
|
if (shift_count_fraction < 0)
|
||||||
|
{
|
||||||
|
parg.p_int = shift_count;
|
||||||
|
error("Horizontal shift %d columns", &parg);
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
|
||||||
|
sprintf(buf, ".%06d", shift_count_fraction);
|
||||||
|
len = strlen(buf);
|
||||||
|
while (len > 2 && buf[len-1] == '0')
|
||||||
|
len--;
|
||||||
|
buf[len] = '\0';
|
||||||
|
parg.p_string = buf;
|
||||||
|
error("Horizontal shift %s of screen width", &parg);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void
|
||||||
|
calc_shift_count()
|
||||||
|
{
|
||||||
|
if (shift_count_fraction < 0)
|
||||||
|
return;
|
||||||
|
shift_count = sc_width * shift_count_fraction / NUM_FRAC_DENOM;
|
||||||
|
}
|
||||||
|
|
||||||
#if USERFILE
|
#if USERFILE
|
||||||
public void
|
public void
|
||||||
opt_k(type, s)
|
opt_k(type, s)
|
||||||
|
@ -267,7 +374,7 @@ opt_p(type, s)
|
||||||
* In "more" mode, the -p argument is a command,
|
* In "more" mode, the -p argument is a command,
|
||||||
* not a search string, so we don't need a slash.
|
* not a search string, so we don't need a slash.
|
||||||
*/
|
*/
|
||||||
if (!less_is_more);
|
if (!less_is_more)
|
||||||
ungetsc("/");
|
ungetsc("/");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -281,7 +388,7 @@ opt__P(type, s)
|
||||||
int type;
|
int type;
|
||||||
register char *s;
|
register char *s;
|
||||||
{
|
{
|
||||||
register constant char **proto;
|
register char **proto;
|
||||||
PARG parg;
|
PARG parg;
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
|
@ -301,7 +408,7 @@ opt__P(type, s)
|
||||||
case 'w': proto = &wproto; s++; break;
|
case 'w': proto = &wproto; s++; break;
|
||||||
default: proto = &prproto[PR_SHORT]; break;
|
default: proto = &prproto[PR_SHORT]; break;
|
||||||
}
|
}
|
||||||
free((void *)*proto);
|
free(*proto);
|
||||||
*proto = save(s);
|
*proto = save(s);
|
||||||
break;
|
break;
|
||||||
case QUERY:
|
case QUERY:
|
||||||
|
@ -376,7 +483,7 @@ opt__V(type, s)
|
||||||
any_display = 1;
|
any_display = 1;
|
||||||
putstr("less ");
|
putstr("less ");
|
||||||
putstr(version);
|
putstr(version);
|
||||||
putstr("\nCopyright (C) 1984-2005 Mark Nudelman\n\n");
|
putstr("\nCopyright (C) 1984-2009 Mark Nudelman\n\n");
|
||||||
putstr("less comes with NO WARRANTY, to the extent permitted by law.\n");
|
putstr("less comes with NO WARRANTY, to the extent permitted by law.\n");
|
||||||
putstr("For information about the terms of redistribution,\n");
|
putstr("For information about the terms of redistribution,\n");
|
||||||
putstr("see the file named README in the less distribution.\n");
|
putstr("see the file named README in the less distribution.\n");
|
||||||
|
@ -406,14 +513,14 @@ colordesc(s, fg_color, bg_color)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (*s != '.')
|
if (*s != '.')
|
||||||
bg = 0;
|
bg = nm_bg_color;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
s++;
|
s++;
|
||||||
bg = getnum(&s, "D", &err);
|
bg = getnum(&s, "D", &err);
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
error("Missing fg color in -D", NULL_PARG);
|
error("Missing bg color in -D", NULL_PARG);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: option.c,v 1.8 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: option.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -26,14 +26,44 @@
|
||||||
static struct loption *pendopt;
|
static struct loption *pendopt;
|
||||||
public int plusoption = FALSE;
|
public int plusoption = FALSE;
|
||||||
|
|
||||||
static int flip_triple __P((int, int));
|
|
||||||
static char *propt __P((int));
|
|
||||||
static void nostring __P((char *));
|
|
||||||
static char *optstring __P((char *, char **, char *, char *));
|
static char *optstring __P((char *, char **, char *, char *));
|
||||||
|
static int flip_triple __P((int, int));
|
||||||
|
static void nostring __P((char *));
|
||||||
|
|
||||||
extern int screen_trashed;
|
extern int screen_trashed;
|
||||||
|
extern int less_is_more;
|
||||||
|
extern int quit_at_eof;
|
||||||
extern char *every_first_cmd;
|
extern char *every_first_cmd;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return a printable description of an option.
|
||||||
|
*/
|
||||||
|
static char *
|
||||||
|
opt_desc(o)
|
||||||
|
struct loption *o;
|
||||||
|
{
|
||||||
|
static char buf[OPTNAME_MAX + 10];
|
||||||
|
if (o->oletter == OLETTER_NONE)
|
||||||
|
SNPRINTF1(buf, sizeof(buf), "--%s", o->onames->oname);
|
||||||
|
else
|
||||||
|
SNPRINTF2(buf, sizeof(buf), "-%c (--%s)", o->oletter, o->onames->oname);
|
||||||
|
return (buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return a string suitable for printing as the "name" of an option.
|
||||||
|
* For example, if the option letter is 'x', just return "-x".
|
||||||
|
*/
|
||||||
|
public char *
|
||||||
|
propt(c)
|
||||||
|
int c;
|
||||||
|
{
|
||||||
|
static char buf[8];
|
||||||
|
|
||||||
|
sprintf(buf, "-%s", prchar(c));
|
||||||
|
return (buf);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Scan an argument (either from the command line or from the
|
* Scan an argument (either from the command line or from the
|
||||||
* LESS environment variable) and process it.
|
* LESS environment variable) and process it.
|
||||||
|
@ -70,7 +100,7 @@ scan_option(s)
|
||||||
(*pendopt->ofunc)(INIT, s);
|
(*pendopt->ofunc)(INIT, s);
|
||||||
break;
|
break;
|
||||||
case NUMBER:
|
case NUMBER:
|
||||||
printopt = propt(pendopt->oletter);
|
printopt = opt_desc(pendopt);
|
||||||
*(pendopt->ovar) = getnum(&s, printopt, (int*)NULL);
|
*(pendopt->ovar) = getnum(&s, printopt, (int*)NULL);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -135,6 +165,10 @@ scan_option(s)
|
||||||
s--;
|
s--;
|
||||||
optc = 'z';
|
optc = 'z';
|
||||||
break;
|
break;
|
||||||
|
case 'n':
|
||||||
|
if (less_is_more)
|
||||||
|
optc = 'z';
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -258,12 +292,12 @@ scan_option(s)
|
||||||
* OPT_SET set to the inverse of the default value
|
* OPT_SET set to the inverse of the default value
|
||||||
*/
|
*/
|
||||||
public void
|
public void
|
||||||
toggle_option(c, s, how_toggle)
|
toggle_option(o, lower, s, how_toggle)
|
||||||
int c;
|
struct loption *o;
|
||||||
|
int lower;
|
||||||
char *s;
|
char *s;
|
||||||
int how_toggle;
|
int how_toggle;
|
||||||
{
|
{
|
||||||
register struct loption *o;
|
|
||||||
register int num;
|
register int num;
|
||||||
int no_prompt;
|
int no_prompt;
|
||||||
int err;
|
int err;
|
||||||
|
@ -272,27 +306,22 @@ toggle_option(c, s, how_toggle)
|
||||||
no_prompt = (how_toggle & OPT_NO_PROMPT);
|
no_prompt = (how_toggle & OPT_NO_PROMPT);
|
||||||
how_toggle &= ~OPT_NO_PROMPT;
|
how_toggle &= ~OPT_NO_PROMPT;
|
||||||
|
|
||||||
/*
|
|
||||||
* Look up the option letter in the option table.
|
|
||||||
*/
|
|
||||||
o = findopt(c);
|
|
||||||
if (o == NULL)
|
if (o == NULL)
|
||||||
{
|
{
|
||||||
parg.p_string = propt(c);
|
error("No such option", NULL_PARG);
|
||||||
error("There is no %s option", &parg);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (how_toggle == OPT_TOGGLE && (o->otype & NO_TOGGLE))
|
if (how_toggle == OPT_TOGGLE && (o->otype & NO_TOGGLE))
|
||||||
{
|
{
|
||||||
parg.p_string = propt(c);
|
parg.p_string = opt_desc(o);
|
||||||
error("Cannot change the %s option", &parg);
|
error("Cannot change the %s option", &parg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (how_toggle == OPT_NO_TOGGLE && (o->otype & NO_QUERY))
|
if (how_toggle == OPT_NO_TOGGLE && (o->otype & NO_QUERY))
|
||||||
{
|
{
|
||||||
parg.p_string = propt(c);
|
parg.p_string = opt_desc(o);
|
||||||
error("Cannot query the %s option", &parg);
|
error("Cannot query the %s option", &parg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -352,15 +381,13 @@ toggle_option(c, s, how_toggle)
|
||||||
switch (how_toggle)
|
switch (how_toggle)
|
||||||
{
|
{
|
||||||
case OPT_TOGGLE:
|
case OPT_TOGGLE:
|
||||||
*(o->ovar) = flip_triple(*(o->ovar),
|
*(o->ovar) = flip_triple(*(o->ovar), lower);
|
||||||
ASCII_IS_LOWER(c));
|
|
||||||
break;
|
break;
|
||||||
case OPT_UNSET:
|
case OPT_UNSET:
|
||||||
*(o->ovar) = o->odefault;
|
*(o->ovar) = o->odefault;
|
||||||
break;
|
break;
|
||||||
case OPT_SET:
|
case OPT_SET:
|
||||||
*(o->ovar) = flip_triple(o->odefault,
|
*(o->ovar) = flip_triple(o->odefault, lower);
|
||||||
ASCII_IS_LOWER(c));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -464,33 +491,17 @@ flip_triple(val, lc)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return a string suitable for printing as the "name" of an option.
|
* Determine if an option takes a parameter.
|
||||||
* For example, if the option letter is 'x', just return "-x".
|
|
||||||
*/
|
|
||||||
static char *
|
|
||||||
propt(c)
|
|
||||||
int c;
|
|
||||||
{
|
|
||||||
static char buf[8];
|
|
||||||
|
|
||||||
sprintf(buf, "-%s", prchar(c));
|
|
||||||
return (buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Determine if an option is a single character option (BOOL or TRIPLE),
|
|
||||||
* or if it a multi-character option (NUMBER).
|
|
||||||
*/
|
*/
|
||||||
public int
|
public int
|
||||||
single_char_option(c)
|
opt_has_param(o)
|
||||||
int c;
|
struct loption *o;
|
||||||
{
|
{
|
||||||
register struct loption *o;
|
|
||||||
|
|
||||||
o = findopt(c);
|
|
||||||
if (o == NULL)
|
if (o == NULL)
|
||||||
return (TRUE);
|
return (0);
|
||||||
return ((o->otype & (BOOL|TRIPLE|NOVAR|NO_TOGGLE)) != 0);
|
if (o->otype & (BOOL|TRIPLE|NOVAR|NO_TOGGLE))
|
||||||
|
return (0);
|
||||||
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -498,14 +509,11 @@ single_char_option(c)
|
||||||
* Only string and number valued options have prompts.
|
* Only string and number valued options have prompts.
|
||||||
*/
|
*/
|
||||||
public char *
|
public char *
|
||||||
opt_prompt(c)
|
opt_prompt(o)
|
||||||
int c;
|
struct loption *o;
|
||||||
{
|
{
|
||||||
register struct loption *o;
|
|
||||||
|
|
||||||
o = findopt(c);
|
|
||||||
if (o == NULL || (o->otype & (STRING|NUMBER)) == 0)
|
if (o == NULL || (o->otype & (STRING|NUMBER)) == 0)
|
||||||
return (NULL);
|
return ("?");
|
||||||
return (o->odesc[0]);
|
return (o->odesc[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -540,7 +548,7 @@ nostring(printopt)
|
||||||
public void
|
public void
|
||||||
nopendopt()
|
nopendopt()
|
||||||
{
|
{
|
||||||
nostring(propt(pendopt->oletter));
|
nostring(opt_desc(pendopt));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -588,6 +596,30 @@ optstring(s, p_str, printopt, validchars)
|
||||||
return (p);
|
return (p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
num_error(printopt, errp)
|
||||||
|
char *printopt;
|
||||||
|
int *errp;
|
||||||
|
{
|
||||||
|
PARG parg;
|
||||||
|
|
||||||
|
if (errp != NULL)
|
||||||
|
{
|
||||||
|
*errp = TRUE;
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
if (printopt != NULL)
|
||||||
|
{
|
||||||
|
parg.p_string = printopt;
|
||||||
|
error("Number is required after %s", &parg);
|
||||||
|
}
|
||||||
|
quit(QUIT_ERROR);
|
||||||
|
/* NOTREACHED */
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Translate a string into a number.
|
* Translate a string into a number.
|
||||||
* Like atoi(), but takes a pointer to a char *, and updates
|
* Like atoi(), but takes a pointer to a char *, and updates
|
||||||
|
@ -602,7 +634,6 @@ getnum(sp, printopt, errp)
|
||||||
register char *s;
|
register char *s;
|
||||||
register int n;
|
register int n;
|
||||||
register int neg;
|
register int neg;
|
||||||
PARG parg;
|
|
||||||
|
|
||||||
s = skipsp(*sp);
|
s = skipsp(*sp);
|
||||||
neg = FALSE;
|
neg = FALSE;
|
||||||
|
@ -612,19 +643,7 @@ getnum(sp, printopt, errp)
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
if (*s < '0' || *s > '9')
|
if (*s < '0' || *s > '9')
|
||||||
{
|
return (num_error(printopt, errp));
|
||||||
if (errp != NULL)
|
|
||||||
{
|
|
||||||
*errp = TRUE;
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
if (printopt != NULL)
|
|
||||||
{
|
|
||||||
parg.p_string = printopt;
|
|
||||||
error("Number is required after %s", &parg);
|
|
||||||
}
|
|
||||||
quit(QUIT_ERROR);
|
|
||||||
}
|
|
||||||
|
|
||||||
n = 0;
|
n = 0;
|
||||||
while (*s >= '0' && *s <= '9')
|
while (*s >= '0' && *s <= '9')
|
||||||
|
@ -636,3 +655,53 @@ getnum(sp, printopt, errp)
|
||||||
n = -n;
|
n = -n;
|
||||||
return (n);
|
return (n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Translate a string into a fraction, represented by the part of a
|
||||||
|
* number which would follow a decimal point.
|
||||||
|
* The value of the fraction is returned as parts per NUM_FRAC_DENOM.
|
||||||
|
* That is, if "n" is returned, the fraction intended is n/NUM_FRAC_DENOM.
|
||||||
|
*/
|
||||||
|
public long
|
||||||
|
getfraction(sp, printopt, errp)
|
||||||
|
char **sp;
|
||||||
|
char *printopt;
|
||||||
|
int *errp;
|
||||||
|
{
|
||||||
|
register char *s;
|
||||||
|
long frac = 0;
|
||||||
|
int fraclen = 0;
|
||||||
|
|
||||||
|
s = skipsp(*sp);
|
||||||
|
if (*s < '0' || *s > '9')
|
||||||
|
return (num_error(printopt, errp));
|
||||||
|
|
||||||
|
for ( ; *s >= '0' && *s <= '9'; s++)
|
||||||
|
{
|
||||||
|
frac = (frac * 10) + (*s - '0');
|
||||||
|
fraclen++;
|
||||||
|
}
|
||||||
|
if (fraclen > NUM_LOG_FRAC_DENOM)
|
||||||
|
while (fraclen-- > NUM_LOG_FRAC_DENOM)
|
||||||
|
frac /= 10;
|
||||||
|
else
|
||||||
|
while (fraclen++ < NUM_LOG_FRAC_DENOM)
|
||||||
|
frac *= 10;
|
||||||
|
*sp = s;
|
||||||
|
if (errp != NULL)
|
||||||
|
*errp = FALSE;
|
||||||
|
return (frac);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the value of the -e flag.
|
||||||
|
*/
|
||||||
|
public int
|
||||||
|
get_quit_at_eof()
|
||||||
|
{
|
||||||
|
if (!less_is_more)
|
||||||
|
return quit_at_eof;
|
||||||
|
/* When less_is_more is set, the -e flag semantics are different. */
|
||||||
|
return quit_at_eof ? OPT_ON : OPT_ONPLUS;
|
||||||
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: option.h,v 1.7 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: option.h,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -29,6 +29,8 @@
|
||||||
|
|
||||||
#define OTYPE (BOOL|TRIPLE|NUMBER|STRING|NOVAR)
|
#define OTYPE (BOOL|TRIPLE|NUMBER|STRING|NOVAR)
|
||||||
|
|
||||||
|
#define OLETTER_NONE '\1' /* Invalid option letter */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Argument to a handling function tells what type of activity:
|
* Argument to a handling function tells what type of activity:
|
||||||
*/
|
*/
|
||||||
|
@ -52,6 +54,8 @@ struct optname
|
||||||
struct optname *onext; /* List of synonymous option names */
|
struct optname *onext; /* List of synonymous option names */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define OPTNAME_MAX 32 /* Max length of long option name */
|
||||||
|
|
||||||
struct loption
|
struct loption
|
||||||
{
|
{
|
||||||
char oletter; /* The controlling letter (a-z) */
|
char oletter; /* The controlling letter (a-z) */
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: opttbl.c,v 1.12 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: opttbl.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -43,6 +43,8 @@ public int ctldisp; /* Send control chars to screen untranslated */
|
||||||
public int force_open; /* Open the file even if not regular file */
|
public int force_open; /* Open the file even if not regular file */
|
||||||
public int swindow; /* Size of scrolling window */
|
public int swindow; /* Size of scrolling window */
|
||||||
public int jump_sline; /* Screen line of "jump target" */
|
public int jump_sline; /* Screen line of "jump target" */
|
||||||
|
public long jump_sline_fraction = -1;
|
||||||
|
public long shift_count_fraction = -1;
|
||||||
public int chopline; /* Truncate displayed lines at screen width */
|
public int chopline; /* Truncate displayed lines at screen width */
|
||||||
public int no_init; /* Disable sending ti/te termcap strings */
|
public int no_init; /* Disable sending ti/te termcap strings */
|
||||||
public int no_keypad; /* Disable sending ks/ke termcap strings */
|
public int no_keypad; /* Disable sending ks/ke termcap strings */
|
||||||
|
@ -52,6 +54,8 @@ public int shift_count; /* Number of positions to shift horizontally */
|
||||||
public int status_col; /* Display a status column */
|
public int status_col; /* Display a status column */
|
||||||
public int use_lessopen; /* Use the LESSOPEN filter */
|
public int use_lessopen; /* Use the LESSOPEN filter */
|
||||||
public int quit_on_intr; /* Quit on interrupt */
|
public int quit_on_intr; /* Quit on interrupt */
|
||||||
|
public int follow_mode; /* F cmd Follows file desc or file name? */
|
||||||
|
public int oldbot; /* Old bottom of screen behavior {{REMOVE}} */
|
||||||
#if HILITE_SEARCH
|
#if HILITE_SEARCH
|
||||||
public int hilite_search; /* Highlight matched search patterns? */
|
public int hilite_search; /* Highlight matched search patterns? */
|
||||||
#endif
|
#endif
|
||||||
|
@ -113,6 +117,8 @@ static struct optname tilde_optname = { "tilde", NULL };
|
||||||
static struct optname query_optname = { "help", NULL };
|
static struct optname query_optname = { "help", NULL };
|
||||||
static struct optname pound_optname = { "shift", NULL };
|
static struct optname pound_optname = { "shift", NULL };
|
||||||
static struct optname keypad_optname = { "no-keypad", NULL };
|
static struct optname keypad_optname = { "no-keypad", NULL };
|
||||||
|
static struct optname oldbot_optname = { "old-bot", NULL };
|
||||||
|
static struct optname follow_optname = { "follow-name", NULL };
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -130,11 +136,11 @@ static struct optname keypad_optname = { "no-keypad", NULL };
|
||||||
static struct loption option[] =
|
static struct loption option[] =
|
||||||
{
|
{
|
||||||
{ 'a', &a_optname,
|
{ 'a', &a_optname,
|
||||||
BOOL, OPT_OFF, &how_search, NULL,
|
TRIPLE, OPT_ONPLUS, &how_search, NULL,
|
||||||
{
|
{
|
||||||
"Search includes displayed screen",
|
"Search includes displayed screen",
|
||||||
"Search skips displayed screen",
|
"Search skips displayed screen",
|
||||||
NULL
|
"Search includes all of displayed screen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -158,7 +164,7 @@ static struct loption option[] =
|
||||||
TRIPLE, OPT_OFF, &top_scroll, NULL,
|
TRIPLE, OPT_OFF, &top_scroll, NULL,
|
||||||
{
|
{
|
||||||
"Repaint by scrolling from bottom of screen",
|
"Repaint by scrolling from bottom of screen",
|
||||||
"Repaint by clearing each line",
|
"Repaint by painting from top of screen",
|
||||||
"Repaint by painting from top of screen"
|
"Repaint by painting from top of screen"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -239,10 +245,10 @@ static struct loption option[] =
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ 'j', &j_optname,
|
{ 'j', &j_optname,
|
||||||
NUMBER, 1, &jump_sline, NULL,
|
STRING, 0, NULL, opt_j,
|
||||||
{
|
{
|
||||||
"Target line: ",
|
"Target line: ",
|
||||||
"Position target at screen line %d",
|
"0123456789.-",
|
||||||
NULL
|
NULL
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -268,10 +274,6 @@ static struct loption option[] =
|
||||||
NULL
|
NULL
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ 'l', NULL,
|
|
||||||
STRING|NO_TOGGLE|NO_QUERY, 0, NULL, opt_l,
|
|
||||||
{ NULL, NULL, NULL }
|
|
||||||
},
|
|
||||||
{ 'L', &L__optname,
|
{ 'L', &L__optname,
|
||||||
BOOL, OPT_ON, &use_lessopen, NULL,
|
BOOL, OPT_ON, &use_lessopen, NULL,
|
||||||
{
|
{
|
||||||
|
@ -425,14 +427,14 @@ static struct loption option[] =
|
||||||
{ NULL, NULL, NULL }
|
{ NULL, NULL, NULL }
|
||||||
},
|
},
|
||||||
{ '#', £_optname,
|
{ '#', £_optname,
|
||||||
NUMBER, 0, &shift_count, NULL,
|
STRING, 0, NULL, opt_shift,
|
||||||
{
|
{
|
||||||
"Horizontal shift: ",
|
"Horizontal shift: ",
|
||||||
"Horizontal shift %d positions",
|
"0123456789.",
|
||||||
NULL
|
NULL
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ '.', &keypad_optname,
|
{ OLETTER_NONE, &keypad_optname,
|
||||||
BOOL|NO_TOGGLE, OPT_OFF, &no_keypad, NULL,
|
BOOL|NO_TOGGLE, OPT_OFF, &no_keypad, NULL,
|
||||||
{
|
{
|
||||||
"Use keypad mode",
|
"Use keypad mode",
|
||||||
|
@ -440,6 +442,22 @@ static struct loption option[] =
|
||||||
NULL
|
NULL
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{ OLETTER_NONE, &oldbot_optname,
|
||||||
|
BOOL, OPT_OFF, &oldbot, NULL,
|
||||||
|
{
|
||||||
|
"Use new bottom of screen behavior",
|
||||||
|
"Use old bottom of screen behavior",
|
||||||
|
NULL
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ OLETTER_NONE, &follow_optname,
|
||||||
|
BOOL, FOLLOW_DESC, &follow_mode, NULL,
|
||||||
|
{
|
||||||
|
"F command follows file descriptor",
|
||||||
|
"F command follows file name",
|
||||||
|
NULL
|
||||||
|
}
|
||||||
|
},
|
||||||
{ '\0', NULL, NOVAR, 0, NULL, NULL, { NULL, NULL, NULL } }
|
{ '\0', NULL, NOVAR, 0, NULL, NULL, { NULL, NULL, NULL } }
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: os.c,v 1.9 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: os.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -80,6 +80,7 @@ iread(fd, buf, len)
|
||||||
{
|
{
|
||||||
register int n;
|
register int n;
|
||||||
|
|
||||||
|
start:
|
||||||
#if MSDOS_COMPILER==WIN32C
|
#if MSDOS_COMPILER==WIN32C
|
||||||
if (ABORT_SIGS())
|
if (ABORT_SIGS())
|
||||||
return (READ_INTR);
|
return (READ_INTR);
|
||||||
|
@ -162,7 +163,25 @@ iread(fd, buf, len)
|
||||||
#endif
|
#endif
|
||||||
reading = 0;
|
reading = 0;
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
|
{
|
||||||
|
#if HAVE_ERRNO
|
||||||
|
/*
|
||||||
|
* Certain values of errno indicate we should just retry the read.
|
||||||
|
*/
|
||||||
|
#if MUST_DEFINE_ERRNO
|
||||||
|
extern int errno;
|
||||||
|
#endif
|
||||||
|
#ifdef EINTR
|
||||||
|
if (errno == EINTR)
|
||||||
|
goto start;
|
||||||
|
#endif
|
||||||
|
#ifdef EAGAIN
|
||||||
|
if (errno == EAGAIN)
|
||||||
|
goto start;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
return (-1);
|
return (-1);
|
||||||
|
}
|
||||||
return (n);
|
return (n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,6 +256,28 @@ errno_message(filename)
|
||||||
return (m);
|
return (m);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* #define HAVE_FLOAT 0 */
|
||||||
|
|
||||||
|
static POSITION
|
||||||
|
muldiv(val, num, den)
|
||||||
|
POSITION val, num, den;
|
||||||
|
{
|
||||||
|
#if HAVE_FLOAT
|
||||||
|
double v = (((double) val) * num) / den;
|
||||||
|
return ((POSITION) (v + 0.5));
|
||||||
|
#else
|
||||||
|
POSITION v = ((POSITION) val) * num;
|
||||||
|
|
||||||
|
if (v / num == val)
|
||||||
|
/* No overflow */
|
||||||
|
return (POSITION) (v / den);
|
||||||
|
else
|
||||||
|
/* Above calculation overflows;
|
||||||
|
* use a method that is less precise but won't overflow. */
|
||||||
|
return (POSITION) (val / (den / num));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the ratio of two POSITIONS, as a percentage.
|
* Return the ratio of two POSITIONS, as a percentage.
|
||||||
* {{ Assumes a POSITION is a long int. }}
|
* {{ Assumes a POSITION is a long int. }}
|
||||||
|
@ -245,30 +286,24 @@ errno_message(filename)
|
||||||
percentage(num, den)
|
percentage(num, den)
|
||||||
POSITION num, den;
|
POSITION num, den;
|
||||||
{
|
{
|
||||||
POSITION num100 = num * 100;
|
return (int) muldiv(num, (POSITION) 100, den);
|
||||||
|
|
||||||
if (num100 / 100 == num)
|
|
||||||
return (num100 / den);
|
|
||||||
else
|
|
||||||
return (num / (den / 100));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the specified percentage of a POSITION.
|
* Return the specified percentage of a POSITION.
|
||||||
*/
|
*/
|
||||||
public POSITION
|
public POSITION
|
||||||
percent_pos(pos, percent)
|
percent_pos(pos, percent, fraction)
|
||||||
POSITION pos;
|
POSITION pos;
|
||||||
int percent;
|
int percent;
|
||||||
|
long fraction;
|
||||||
{
|
{
|
||||||
POSITION result100;
|
/* Change percent (parts per 100) to perden (parts per NUM_FRAC_DENOM). */
|
||||||
|
POSITION perden = (percent * (NUM_FRAC_DENOM / 100)) + (fraction / 100);
|
||||||
|
|
||||||
if (percent == 0)
|
if (perden == 0)
|
||||||
return (0);
|
return (0);
|
||||||
else if ((result100 = pos * percent) / percent == pos)
|
return (POSITION) muldiv(pos, perden, (POSITION) NUM_FRAC_DENOM);
|
||||||
return (result100 / 100);
|
|
||||||
else
|
|
||||||
return (percent * (pos / 100));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !HAVE_STRCHR
|
#if !HAVE_STRCHR
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: output.c,v 1.10 2008/02/16 07:20:54 matt Exp $ */
|
/* $NetBSD: output.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -23,6 +23,7 @@
|
||||||
public int errmsgs; /* Count of messages displayed by error() */
|
public int errmsgs; /* Count of messages displayed by error() */
|
||||||
public int need_clr;
|
public int need_clr;
|
||||||
public int final_attr;
|
public int final_attr;
|
||||||
|
public int at_prompt;
|
||||||
|
|
||||||
extern int sigs;
|
extern int sigs;
|
||||||
extern int sc_width;
|
extern int sc_width;
|
||||||
|
@ -30,8 +31,9 @@ extern int so_s_width, so_e_width;
|
||||||
extern int screen_trashed;
|
extern int screen_trashed;
|
||||||
extern int any_display;
|
extern int any_display;
|
||||||
extern int is_tty;
|
extern int is_tty;
|
||||||
|
extern int oldbot;
|
||||||
|
|
||||||
#if MSDOS_COMPILER==BORLANDC || MSDOS_COMPILER==DJGPPC
|
#if MSDOS_COMPILER==WIN32C || MSDOS_COMPILER==BORLANDC || MSDOS_COMPILER==DJGPPC
|
||||||
extern int ctldisp;
|
extern int ctldisp;
|
||||||
extern int nm_fg_color, nm_bg_color;
|
extern int nm_fg_color, nm_bg_color;
|
||||||
extern int bo_fg_color, bo_bg_color;
|
extern int bo_fg_color, bo_bg_color;
|
||||||
|
@ -102,53 +104,7 @@ flush()
|
||||||
n = ob - obuf;
|
n = ob - obuf;
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
return;
|
return;
|
||||||
#if MSDOS_COMPILER==WIN32C
|
|
||||||
if (is_tty && any_display)
|
|
||||||
{
|
|
||||||
char *op;
|
|
||||||
DWORD nwritten = 0;
|
|
||||||
CONSOLE_SCREEN_BUFFER_INFO scr;
|
|
||||||
int row;
|
|
||||||
int col;
|
|
||||||
int olen;
|
|
||||||
extern HANDLE con_out;
|
|
||||||
|
|
||||||
olen = ob - obuf;
|
|
||||||
/*
|
|
||||||
* There is a bug in Win32 WriteConsole() if we're
|
|
||||||
* writing in the last cell with a different color.
|
|
||||||
* To avoid color problems in the bottom line,
|
|
||||||
* we scroll the screen manually, before writing.
|
|
||||||
*/
|
|
||||||
GetConsoleScreenBufferInfo(con_out, &scr);
|
|
||||||
col = scr.dwCursorPosition.X;
|
|
||||||
row = scr.dwCursorPosition.Y;
|
|
||||||
for (op = obuf; op < obuf + olen; op++)
|
|
||||||
{
|
|
||||||
if (*op == '\n')
|
|
||||||
{
|
|
||||||
col = 0;
|
|
||||||
row++;
|
|
||||||
} else if (*op == '\r')
|
|
||||||
{
|
|
||||||
col = 0;
|
|
||||||
} else
|
|
||||||
{
|
|
||||||
col++;
|
|
||||||
if (col >= sc_width)
|
|
||||||
{
|
|
||||||
col = 0;
|
|
||||||
row++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (row > scr.srWindow.Bottom)
|
|
||||||
win32_scroll_up(row - scr.srWindow.Bottom);
|
|
||||||
WriteConsole(con_out, obuf, olen, &nwritten, NULL);
|
|
||||||
ob = obuf;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
#if MSDOS_COMPILER==MSOFTC
|
#if MSDOS_COMPILER==MSOFTC
|
||||||
if (is_tty && any_display)
|
if (is_tty && any_display)
|
||||||
{
|
{
|
||||||
|
@ -158,12 +114,12 @@ flush()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
#if MSDOS_COMPILER==BORLANDC || MSDOS_COMPILER==DJGPPC
|
#if MSDOS_COMPILER==WIN32C || MSDOS_COMPILER==BORLANDC || MSDOS_COMPILER==DJGPPC
|
||||||
if (is_tty && any_display)
|
if (is_tty && any_display)
|
||||||
{
|
{
|
||||||
*ob = '\0';
|
*ob = '\0';
|
||||||
if (ctldisp != OPT_ONPLUS)
|
if (ctldisp != OPT_ONPLUS)
|
||||||
cputs(obuf);
|
WIN32textout(obuf, ob - obuf);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -173,64 +129,70 @@ flush()
|
||||||
* the -D command-line option.
|
* the -D command-line option.
|
||||||
*/
|
*/
|
||||||
char *anchor, *p, *p_next;
|
char *anchor, *p, *p_next;
|
||||||
int buflen = ob - obuf;
|
unsigned char fg, bg;
|
||||||
unsigned char fg, bg, norm_attr;
|
static unsigned char at;
|
||||||
/*
|
#if MSDOS_COMPILER==WIN32C
|
||||||
* Only dark colors mentioned here, so that
|
/* Screen colors used by 3x and 4x SGR commands. */
|
||||||
* bold has visible effect.
|
static unsigned char screen_color[] = {
|
||||||
*/
|
0, /* BLACK */
|
||||||
|
FOREGROUND_RED,
|
||||||
|
FOREGROUND_GREEN,
|
||||||
|
FOREGROUND_RED|FOREGROUND_GREEN,
|
||||||
|
FOREGROUND_BLUE,
|
||||||
|
FOREGROUND_BLUE|FOREGROUND_RED,
|
||||||
|
FOREGROUND_BLUE|FOREGROUND_GREEN,
|
||||||
|
FOREGROUND_BLUE|FOREGROUND_GREEN|FOREGROUND_RED
|
||||||
|
};
|
||||||
|
#else
|
||||||
static enum COLORS screen_color[] = {
|
static enum COLORS screen_color[] = {
|
||||||
BLACK, RED, GREEN, BROWN,
|
BLACK, RED, GREEN, BROWN,
|
||||||
BLUE, MAGENTA, CYAN, LIGHTGRAY
|
BLUE, MAGENTA, CYAN, LIGHTGRAY
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Normal text colors are used as baseline. */
|
|
||||||
bg = nm_bg_color & 0xf;
|
|
||||||
fg = nm_fg_color & 0xf;
|
|
||||||
norm_attr = (bg << 4) | fg;
|
|
||||||
for (anchor = p_next = obuf;
|
for (anchor = p_next = obuf;
|
||||||
(p_next = memchr (p_next, ESC,
|
(p_next = memchr(p_next, ESC, ob - p_next)) != NULL; )
|
||||||
buflen - (p_next - obuf)))
|
|
||||||
!= NULL; )
|
|
||||||
{
|
{
|
||||||
p = p_next;
|
p = p_next;
|
||||||
|
if (p[1] == '[') /* "ESC-[" sequence */
|
||||||
/*
|
|
||||||
* Handle the null escape sequence
|
|
||||||
* (ESC-[m), which is used to restore
|
|
||||||
* the original color.
|
|
||||||
*/
|
|
||||||
if (p[1] == '[' && is_ansi_end(p[2]))
|
|
||||||
{
|
{
|
||||||
textattr(norm_attr);
|
|
||||||
p += 3;
|
|
||||||
anchor = p_next = p;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (p[1] == '[') /* "Esc-[" sequence */
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* If some chars seen since
|
|
||||||
* the last escape sequence,
|
|
||||||
* write it out to the screen
|
|
||||||
* using current text attributes.
|
|
||||||
*/
|
|
||||||
if (p > anchor)
|
if (p > anchor)
|
||||||
{
|
{
|
||||||
*p = '\0';
|
/*
|
||||||
cputs (anchor);
|
* If some chars seen since
|
||||||
*p = ESC;
|
* the last escape sequence,
|
||||||
|
* write them out to the screen.
|
||||||
|
*/
|
||||||
|
WIN32textout(anchor, p-anchor);
|
||||||
anchor = p;
|
anchor = p;
|
||||||
}
|
}
|
||||||
p += 2;
|
p += 2; /* Skip the "ESC-[" */
|
||||||
|
if (is_ansi_end(*p))
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Handle null escape sequence
|
||||||
|
* "ESC[m", which restores
|
||||||
|
* the normal color.
|
||||||
|
*/
|
||||||
|
p++;
|
||||||
|
anchor = p_next = p;
|
||||||
|
WIN32setcolors(nm_fg_color, nm_bg_color);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
p_next = p;
|
p_next = p;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Select foreground/background colors
|
||||||
|
* based on the escape sequence.
|
||||||
|
*/
|
||||||
|
fg = nm_fg_color;
|
||||||
|
bg = nm_bg_color;
|
||||||
while (!is_ansi_end(*p))
|
while (!is_ansi_end(*p))
|
||||||
{
|
{
|
||||||
char *q;
|
char *q;
|
||||||
long code = strtol(p, &q, 10);
|
long code = strtol(p, &q, 10);
|
||||||
|
|
||||||
if (!*q)
|
if (*q == '\0')
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Incomplete sequence.
|
* Incomplete sequence.
|
||||||
|
@ -238,15 +200,15 @@ flush()
|
||||||
* in the buffer.
|
* in the buffer.
|
||||||
*/
|
*/
|
||||||
int slop = q - anchor;
|
int slop = q - anchor;
|
||||||
|
/* {{ strcpy args overlap! }} */
|
||||||
strcpy(obuf, anchor);
|
strcpy(obuf, anchor);
|
||||||
ob = &obuf[slop];
|
ob = &obuf[slop];
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (q == p
|
if (q == p ||
|
||||||
|| code > 49 || code < 0
|
code > 49 || code < 0 ||
|
||||||
|| (!is_ansi_end(*q)
|
(!is_ansi_end(*q) && *q != ';'))
|
||||||
&& *q != ';'))
|
|
||||||
{
|
{
|
||||||
p_next = q;
|
p_next = q;
|
||||||
break;
|
break;
|
||||||
|
@ -256,27 +218,38 @@ flush()
|
||||||
|
|
||||||
switch (code)
|
switch (code)
|
||||||
{
|
{
|
||||||
|
default:
|
||||||
|
/* case 0: all attrs off */
|
||||||
|
fg = nm_fg_color;
|
||||||
|
bg = nm_bg_color;
|
||||||
|
at = 0;
|
||||||
|
break;
|
||||||
case 1: /* bold on */
|
case 1: /* bold on */
|
||||||
fg = bo_fg_color;
|
at |= 1;
|
||||||
bg = bo_bg_color;
|
|
||||||
break;
|
break;
|
||||||
case 3: /* italic on */
|
case 3: /* italic on */
|
||||||
fg = so_fg_color;
|
case 7: /* inverse on */
|
||||||
bg = so_bg_color;
|
at |= 2;
|
||||||
break;
|
break;
|
||||||
case 4: /* underline on */
|
case 4: /* underline on */
|
||||||
fg = ul_fg_color;
|
at |= 4;
|
||||||
bg = ul_bg_color;
|
break;
|
||||||
|
case 5: /* slow blink on */
|
||||||
|
case 6: /* fast blink on */
|
||||||
|
at |= 8;
|
||||||
break;
|
break;
|
||||||
case 8: /* concealed on */
|
case 8: /* concealed on */
|
||||||
fg = (bg & 7) | 8;
|
fg = (bg & 7) | 8;
|
||||||
break;
|
break;
|
||||||
case 0: /* all attrs off */
|
case 22: /* bold off */
|
||||||
case 22:/* bold off */
|
at &= ~1;
|
||||||
case 23:/* italic off */
|
break;
|
||||||
case 24:/* underline off */
|
case 23: /* italic off */
|
||||||
fg = nm_fg_color;
|
case 27: /* inverse off */
|
||||||
bg = nm_bg_color;
|
at &= ~2;
|
||||||
|
break;
|
||||||
|
case 24: /* underline off */
|
||||||
|
at &= ~4;
|
||||||
break;
|
break;
|
||||||
case 30: case 31: case 32:
|
case 30: case 31: case 32:
|
||||||
case 33: case 34: case 35:
|
case 33: case 34: case 35:
|
||||||
|
@ -297,26 +270,40 @@ flush()
|
||||||
}
|
}
|
||||||
p = q;
|
p = q;
|
||||||
}
|
}
|
||||||
if (is_ansi_end(*p) && p > p_next)
|
if (!is_ansi_end(*p) || p == p_next)
|
||||||
{
|
|
||||||
bg &= 15;
|
|
||||||
fg &= 15;
|
|
||||||
textattr ((bg << 4)| fg);
|
|
||||||
p_next = anchor = p + 1;
|
|
||||||
} else
|
|
||||||
break;
|
break;
|
||||||
|
if (at & 1)
|
||||||
|
{
|
||||||
|
fg = bo_fg_color;
|
||||||
|
bg = bo_bg_color;
|
||||||
|
} else if (at & 2)
|
||||||
|
{
|
||||||
|
fg = so_fg_color;
|
||||||
|
bg = so_bg_color;
|
||||||
|
} else if (at & 4)
|
||||||
|
{
|
||||||
|
fg = ul_fg_color;
|
||||||
|
bg = ul_bg_color;
|
||||||
|
} else if (at & 8)
|
||||||
|
{
|
||||||
|
fg = bl_fg_color;
|
||||||
|
bg = bl_bg_color;
|
||||||
|
}
|
||||||
|
fg &= 0xf;
|
||||||
|
bg &= 0xf;
|
||||||
|
WIN32setcolors(fg, bg);
|
||||||
|
p_next = anchor = p + 1;
|
||||||
} else
|
} else
|
||||||
p_next++;
|
p_next++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Output what's left in the buffer. */
|
/* Output what's left in the buffer. */
|
||||||
cputs (anchor);
|
WIN32textout(anchor, ob - anchor);
|
||||||
}
|
}
|
||||||
ob = obuf;
|
ob = obuf;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
fd = (any_display) ? 1 : 2;
|
fd = (any_display) ? 1 : 2;
|
||||||
if (write(fd, obuf, n) != n)
|
if (write(fd, obuf, n) != n)
|
||||||
|
@ -374,6 +361,7 @@ putchr(c)
|
||||||
if (ob >= &obuf[sizeof(obuf)-1])
|
if (ob >= &obuf[sizeof(obuf)-1])
|
||||||
flush();
|
flush();
|
||||||
*ob++ = c;
|
*ob++ = c;
|
||||||
|
at_prompt = 0;
|
||||||
return (c);
|
return (c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -524,6 +512,8 @@ error(fmt, parg)
|
||||||
|
|
||||||
if (any_display && is_tty)
|
if (any_display && is_tty)
|
||||||
{
|
{
|
||||||
|
if (!oldbot)
|
||||||
|
squish_check();
|
||||||
at_exit();
|
at_exit();
|
||||||
clear_bot();
|
clear_bot();
|
||||||
at_enter(AT_STANDOUT);
|
at_enter(AT_STANDOUT);
|
||||||
|
@ -544,6 +534,7 @@ error(fmt, parg)
|
||||||
|
|
||||||
get_return();
|
get_return();
|
||||||
lower_left();
|
lower_left();
|
||||||
|
clear_eol();
|
||||||
|
|
||||||
if (col >= sc_width)
|
if (col >= sc_width)
|
||||||
/*
|
/*
|
324
external/bsd/less/dist/pattern.c
vendored
Normal file
324
external/bsd/less/dist/pattern.c
vendored
Normal file
|
@ -0,0 +1,324 @@
|
||||||
|
/* $NetBSD: pattern.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
|
*
|
||||||
|
* You may distribute under the terms of either the GNU General Public
|
||||||
|
* License or the Less License, as specified in the README file.
|
||||||
|
*
|
||||||
|
* For more information about less, or for information on how to
|
||||||
|
* contact the author, see the README file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Routines to do pattern matching.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "less.h"
|
||||||
|
#include "pattern.h"
|
||||||
|
|
||||||
|
extern int caseless;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compile a search pattern, for future use by match_pattern.
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
compile_pattern2(pattern, search_type, comp_pattern)
|
||||||
|
char *pattern;
|
||||||
|
int search_type;
|
||||||
|
void **comp_pattern;
|
||||||
|
{
|
||||||
|
if ((search_type & SRCH_NO_REGEX) == 0)
|
||||||
|
{
|
||||||
|
#if HAVE_POSIX_REGCOMP
|
||||||
|
regex_t *comp = (regex_t *) ecalloc(1, sizeof(regex_t));
|
||||||
|
regex_t **pcomp = (regex_t **) comp_pattern;
|
||||||
|
if (regcomp(comp, pattern, REGCOMP_FLAG))
|
||||||
|
{
|
||||||
|
free(comp);
|
||||||
|
error("Invalid pattern", NULL_PARG);
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
if (*pcomp != NULL)
|
||||||
|
regfree(*pcomp);
|
||||||
|
*pcomp = comp;
|
||||||
|
#endif
|
||||||
|
#if HAVE_PCRE
|
||||||
|
pcre *comp;
|
||||||
|
pcre **pcomp = (pcre **) comp_pattern;
|
||||||
|
const char *errstring;
|
||||||
|
int erroffset;
|
||||||
|
PARG parg;
|
||||||
|
comp = pcre_compile(pattern, 0,
|
||||||
|
&errstring, &erroffset, NULL);
|
||||||
|
if (comp == NULL)
|
||||||
|
{
|
||||||
|
parg.p_string = (char *) errstring;
|
||||||
|
error("%s", &parg);
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
*pcomp = comp;
|
||||||
|
#endif
|
||||||
|
#if HAVE_RE_COMP
|
||||||
|
PARG parg;
|
||||||
|
int *pcomp = (int *) comp_pattern;
|
||||||
|
if ((parg.p_string = re_comp(pattern)) != NULL)
|
||||||
|
{
|
||||||
|
error("%s", &parg);
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
*pcomp = 1;
|
||||||
|
#endif
|
||||||
|
#if HAVE_REGCMP
|
||||||
|
char *comp;
|
||||||
|
char **pcomp = (char **) comp_pattern;
|
||||||
|
if ((comp = regcmp(pattern, 0)) == NULL)
|
||||||
|
{
|
||||||
|
error("Invalid pattern", NULL_PARG);
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
if (pcomp != NULL)
|
||||||
|
free(*pcomp);
|
||||||
|
*pcomp = comp;
|
||||||
|
#endif
|
||||||
|
#if HAVE_V8_REGCOMP
|
||||||
|
struct regexp *comp;
|
||||||
|
struct regexp **pcomp = (struct regexp **) comp_pattern;
|
||||||
|
if ((comp = regcomp(pattern)) == NULL)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* regcomp has already printed an error message
|
||||||
|
* via regerror().
|
||||||
|
*/
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
if (*pcomp != NULL)
|
||||||
|
free(*pcomp);
|
||||||
|
*pcomp = comp;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Like compile_pattern2, but convert the pattern to lowercase if necessary.
|
||||||
|
*/
|
||||||
|
public int
|
||||||
|
compile_pattern(pattern, search_type, comp_pattern)
|
||||||
|
char *pattern;
|
||||||
|
int search_type;
|
||||||
|
void **comp_pattern;
|
||||||
|
{
|
||||||
|
char *cvt_pattern;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
if (caseless != OPT_ONPLUS)
|
||||||
|
cvt_pattern = pattern;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cvt_pattern = (char*) ecalloc(1, cvt_length(strlen(pattern), CVT_TO_LC));
|
||||||
|
cvt_text(cvt_pattern, pattern, (int *)NULL, (int *)NULL, CVT_TO_LC);
|
||||||
|
}
|
||||||
|
result = compile_pattern2(cvt_pattern, search_type, comp_pattern);
|
||||||
|
if (cvt_pattern != pattern)
|
||||||
|
free(cvt_pattern);
|
||||||
|
return (result);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Forget that we have a compiled pattern.
|
||||||
|
*/
|
||||||
|
public void
|
||||||
|
uncompile_pattern(pattern)
|
||||||
|
void **pattern;
|
||||||
|
{
|
||||||
|
#if HAVE_POSIX_REGCOMP
|
||||||
|
regex_t **pcomp = (regex_t **) pattern;
|
||||||
|
if (*pcomp != NULL)
|
||||||
|
regfree(*pcomp);
|
||||||
|
*pcomp = NULL;
|
||||||
|
#endif
|
||||||
|
#if HAVE_PCRE
|
||||||
|
pcre **pcomp = (pcre **) pattern;
|
||||||
|
if (*pcomp != NULL)
|
||||||
|
pcre_free(*pcomp);
|
||||||
|
*pcomp = NULL;
|
||||||
|
#endif
|
||||||
|
#if HAVE_RE_COMP
|
||||||
|
int *pcomp = (int *) pattern;
|
||||||
|
*pcomp = 0;
|
||||||
|
#endif
|
||||||
|
#if HAVE_REGCMP
|
||||||
|
char **pcomp = (char **) pattern;
|
||||||
|
if (*pcomp != NULL)
|
||||||
|
free(*pcomp);
|
||||||
|
*pcomp = NULL;
|
||||||
|
#endif
|
||||||
|
#if HAVE_V8_REGCOMP
|
||||||
|
struct regexp **pcomp = (struct regexp **) pattern;
|
||||||
|
if (*pcomp != NULL)
|
||||||
|
free(*pcomp);
|
||||||
|
*pcomp = NULL;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Is a compiled pattern null?
|
||||||
|
*/
|
||||||
|
public int
|
||||||
|
is_null_pattern(pattern)
|
||||||
|
void *pattern;
|
||||||
|
{
|
||||||
|
#if HAVE_POSIX_REGCOMP
|
||||||
|
return (pattern == NULL);
|
||||||
|
#endif
|
||||||
|
#if HAVE_PCRE
|
||||||
|
return (pattern == NULL);
|
||||||
|
#endif
|
||||||
|
#if HAVE_RE_COMP
|
||||||
|
return (pattern == 0);
|
||||||
|
#endif
|
||||||
|
#if HAVE_REGCMP
|
||||||
|
return (pattern == NULL);
|
||||||
|
#endif
|
||||||
|
#if HAVE_V8_REGCOMP
|
||||||
|
return (pattern == NULL);
|
||||||
|
#endif
|
||||||
|
#if NO_REGEX
|
||||||
|
return (search_pattern != NULL);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Simple pattern matching function.
|
||||||
|
* It supports no metacharacters like *, etc.
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
match(pattern, pattern_len, buf, buf_len, pfound, pend)
|
||||||
|
char *pattern;
|
||||||
|
int pattern_len;
|
||||||
|
char *buf;
|
||||||
|
int buf_len;
|
||||||
|
char **pfound, **pend;
|
||||||
|
{
|
||||||
|
register char *pp, *lp;
|
||||||
|
register char *pattern_end = pattern + pattern_len;
|
||||||
|
register char *buf_end = buf + buf_len;
|
||||||
|
|
||||||
|
for ( ; buf < buf_end; buf++)
|
||||||
|
{
|
||||||
|
for (pp = pattern, lp = buf; *pp == *lp; pp++, lp++)
|
||||||
|
if (pp == pattern_end || lp == buf_end)
|
||||||
|
break;
|
||||||
|
if (pp == pattern_end)
|
||||||
|
{
|
||||||
|
if (pfound != NULL)
|
||||||
|
*pfound = buf;
|
||||||
|
if (pend != NULL)
|
||||||
|
*pend = lp;
|
||||||
|
return (1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Perform a pattern match with the previously compiled pattern.
|
||||||
|
* Set sp and ep to the start and end of the matched string.
|
||||||
|
*/
|
||||||
|
public int
|
||||||
|
match_pattern(pattern, tpattern, line, line_len, sp, ep, notbol, search_type)
|
||||||
|
void *pattern;
|
||||||
|
char *tpattern;
|
||||||
|
char *line;
|
||||||
|
int line_len;
|
||||||
|
char **sp;
|
||||||
|
char **ep;
|
||||||
|
int notbol;
|
||||||
|
int search_type;
|
||||||
|
{
|
||||||
|
int matched;
|
||||||
|
#if HAVE_POSIX_REGCOMP
|
||||||
|
regex_t *spattern = (regex_t *) pattern;
|
||||||
|
#endif
|
||||||
|
#if HAVE_PCRE
|
||||||
|
pcre *spattern = (pcre *) pattern;
|
||||||
|
#endif
|
||||||
|
#if HAVE_RE_COMP
|
||||||
|
int spattern = (int) pattern;
|
||||||
|
#endif
|
||||||
|
#if HAVE_REGCMP
|
||||||
|
char *spattern = (char *) pattern;
|
||||||
|
#endif
|
||||||
|
#if HAVE_V8_REGCOMP
|
||||||
|
struct regexp *spattern = (struct regexp *) pattern;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (search_type & SRCH_NO_REGEX)
|
||||||
|
matched = match(tpattern, strlen(tpattern), line, line_len, sp, ep);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#if HAVE_POSIX_REGCOMP
|
||||||
|
{
|
||||||
|
regmatch_t rm;
|
||||||
|
int flags = (notbol) ? REG_NOTBOL : 0;
|
||||||
|
matched = !regexec(spattern, line, 1, &rm, flags);
|
||||||
|
if (matched)
|
||||||
|
{
|
||||||
|
#ifndef __WATCOMC__
|
||||||
|
*sp = line + rm.rm_so;
|
||||||
|
*ep = line + rm.rm_eo;
|
||||||
|
#else
|
||||||
|
*sp = rm.rm_sp;
|
||||||
|
*ep = rm.rm_ep;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if HAVE_PCRE
|
||||||
|
{
|
||||||
|
int flags = (notbol) ? PCRE_NOTBOL : 0;
|
||||||
|
int ovector[3];
|
||||||
|
matched = pcre_exec(spattern, NULL, line, line_len,
|
||||||
|
0, flags, ovector, 3) >= 0;
|
||||||
|
if (matched)
|
||||||
|
{
|
||||||
|
*sp = line + ovector[0];
|
||||||
|
*ep = line + ovector[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if HAVE_RE_COMP
|
||||||
|
matched = (re_exec(line) == 1);
|
||||||
|
/*
|
||||||
|
* re_exec doesn't seem to provide a way to get the matched string.
|
||||||
|
*/
|
||||||
|
*sp = *ep = NULL;
|
||||||
|
#endif
|
||||||
|
#if HAVE_REGCMP
|
||||||
|
*ep = regex(spattern, line);
|
||||||
|
matched = (*ep != NULL);
|
||||||
|
if (matched)
|
||||||
|
*sp = __loc1;
|
||||||
|
#endif
|
||||||
|
#if HAVE_V8_REGCOMP
|
||||||
|
#if HAVE_REGEXEC2
|
||||||
|
matched = regexec2(spattern, line, notbol);
|
||||||
|
#else
|
||||||
|
matched = regexec(spattern, line);
|
||||||
|
#endif
|
||||||
|
if (matched)
|
||||||
|
{
|
||||||
|
*sp = spattern->startp[0];
|
||||||
|
*ep = spattern->endp[0];
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if NO_REGEX
|
||||||
|
matched = match(tpattern, strlen(tpattern), line, line_len, sp, ep);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
matched = (!(search_type & SRCH_NO_MATCH) && matched) ||
|
||||||
|
((search_type & SRCH_NO_MATCH) && !matched);
|
||||||
|
return (matched);
|
||||||
|
}
|
||||||
|
|
51
external/bsd/less/dist/pattern.h
vendored
Normal file
51
external/bsd/less/dist/pattern.h
vendored
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
/* $NetBSD: pattern.h,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
|
*
|
||||||
|
* You may distribute under the terms of either the GNU General Public
|
||||||
|
* License or the Less License, as specified in the README file.
|
||||||
|
*
|
||||||
|
* For more information about less, or for information on how to
|
||||||
|
* contact the author, see the README file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if HAVE_POSIX_REGCOMP
|
||||||
|
#include <regex.h>
|
||||||
|
#ifdef REG_EXTENDED
|
||||||
|
extern int more_mode;
|
||||||
|
#define REGCOMP_FLAG (more_mode ? 0 : REG_EXTENDED)
|
||||||
|
#else
|
||||||
|
#define REGCOMP_FLAG 0
|
||||||
|
#endif
|
||||||
|
#define DEFINE_PATTERN(name) regex_t *name
|
||||||
|
#define CLEAR_PATTERN(name) name = NULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_PCRE
|
||||||
|
#include <pcre.h>
|
||||||
|
#define DEFINE_PATTERN(name) pcre *name
|
||||||
|
#define CLEAR_PATTERN(name) name = NULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_RE_COMP
|
||||||
|
char *re_comp();
|
||||||
|
int re_exec();
|
||||||
|
#define DEFINE_PATTERN(name) int name
|
||||||
|
#define CLEAR_PATTERN(name) name = 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_REGCMP
|
||||||
|
char *regcmp();
|
||||||
|
char *regex();
|
||||||
|
extern char *__loc1;
|
||||||
|
#define DEFINE_PATTERN(name) char *name
|
||||||
|
#define CLEAR_PATTERN(name) name = NULL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if HAVE_V8_REGCOMP
|
||||||
|
#include "regexp.h"
|
||||||
|
#define DEFINE_PATTERN(name) struct regexp *name
|
||||||
|
#define CLEAR_PATTERN(name) name = NULL
|
||||||
|
#endif
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
|
/* $NetBSD: pckeys.h,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
|
@ -1,5 +1,7 @@
|
||||||
|
/* $NetBSD: position.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
|
@ -1,5 +1,7 @@
|
||||||
|
/* $NetBSD: position.h,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: prompt.c,v 1.13 2008/02/16 07:20:54 matt Exp $ */
|
/* $NetBSD: prompt.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -24,7 +24,6 @@
|
||||||
#include "position.h"
|
#include "position.h"
|
||||||
|
|
||||||
extern int pr_type;
|
extern int pr_type;
|
||||||
extern int hit_eof;
|
|
||||||
extern int new_file;
|
extern int new_file;
|
||||||
extern int sc_width;
|
extern int sc_width;
|
||||||
extern int so_s_width, so_e_width;
|
extern int so_s_width, so_e_width;
|
||||||
|
@ -32,6 +31,7 @@ extern int linenums;
|
||||||
extern int hshift;
|
extern int hshift;
|
||||||
extern int sc_height;
|
extern int sc_height;
|
||||||
extern int jump_sline;
|
extern int jump_sline;
|
||||||
|
extern int less_is_more;
|
||||||
extern IFILE curr_ifile;
|
extern IFILE curr_ifile;
|
||||||
#if EDITOR
|
#if EDITOR
|
||||||
extern char *editor;
|
extern char *editor;
|
||||||
|
@ -54,6 +54,8 @@ static constant char h_proto[] =
|
||||||
"HELP -- ?eEND -- Press g to see it again:Press RETURN for more., or q when done";
|
"HELP -- ?eEND -- Press g to see it again:Press RETURN for more., or q when done";
|
||||||
static constant char w_proto[] =
|
static constant char w_proto[] =
|
||||||
"Waiting for data";
|
"Waiting for data";
|
||||||
|
static constant char more_proto[] =
|
||||||
|
"--More--(?eEND ?x- Next\\: %x.:?pB%pB\\%:byte %bB?s/%s...%t)";
|
||||||
|
|
||||||
public char constant *prproto[3];
|
public char constant *prproto[3];
|
||||||
public char constant *eqproto = e_proto;
|
public char constant *eqproto = e_proto;
|
||||||
|
@ -71,8 +73,8 @@ static void ap_quest __P((void));
|
||||||
static POSITION curr_byte __P((int));
|
static POSITION curr_byte __P((int));
|
||||||
static int cond __P((int, int));
|
static int cond __P((int, int));
|
||||||
static void protochar __P((int, int, int));
|
static void protochar __P((int, int, int));
|
||||||
static char *skipcond __P((char *));
|
static const char *skipcond __P((const char *));
|
||||||
static char *wherechar __P((char *, int *));
|
static const char *wherechar __P((const char *, int *));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize the prompt prototype strings.
|
* Initialize the prompt prototype strings.
|
||||||
|
@ -81,7 +83,7 @@ static char *wherechar __P((char *, int *));
|
||||||
init_prompt()
|
init_prompt()
|
||||||
{
|
{
|
||||||
prproto[0] = save(s_proto);
|
prproto[0] = save(s_proto);
|
||||||
prproto[1] = save(m_proto);
|
prproto[1] = save(less_is_more ? more_proto : m_proto);
|
||||||
prproto[2] = save(M_proto);
|
prproto[2] = save(M_proto);
|
||||||
eqproto = save(e_proto);
|
eqproto = save(e_proto);
|
||||||
hproto = save(h_proto);
|
hproto = save(h_proto);
|
||||||
|
@ -207,7 +209,7 @@ cond(c, where)
|
||||||
case 'c':
|
case 'c':
|
||||||
return (hshift != 0);
|
return (hshift != 0);
|
||||||
case 'e': /* At end of file? */
|
case 'e': /* At end of file? */
|
||||||
return (hit_eof);
|
return (eof_displayed());
|
||||||
case 'f': /* Filename known? */
|
case 'f': /* Filename known? */
|
||||||
return (strcmp(get_filename(curr_ifile), "-") != 0);
|
return (strcmp(get_filename(curr_ifile), "-") != 0);
|
||||||
case 'l': /* Line number known? */
|
case 'l': /* Line number known? */
|
||||||
|
@ -315,6 +317,9 @@ protochar(c, where, iseditproto)
|
||||||
case 'f': /* File name */
|
case 'f': /* File name */
|
||||||
ap_str(get_filename(curr_ifile));
|
ap_str(get_filename(curr_ifile));
|
||||||
break;
|
break;
|
||||||
|
case 'F': /* Last component of file name */
|
||||||
|
ap_str(last_component(get_filename(curr_ifile)));
|
||||||
|
break;
|
||||||
case 'i': /* Index into list of files */
|
case 'i': /* Index into list of files */
|
||||||
#if TAGS
|
#if TAGS
|
||||||
if (ntags())
|
if (ntags())
|
||||||
|
@ -375,6 +380,7 @@ protochar(c, where, iseditproto)
|
||||||
case 't': /* Truncate trailing spaces in the message */
|
case 't': /* Truncate trailing spaces in the message */
|
||||||
while (mp > message && mp[-1] == ' ')
|
while (mp > message && mp[-1] == ' ')
|
||||||
mp--;
|
mp--;
|
||||||
|
*mp = '\0';
|
||||||
break;
|
break;
|
||||||
case 'T': /* Type of list */
|
case 'T': /* Type of list */
|
||||||
#if TAGS
|
#if TAGS
|
||||||
|
@ -401,9 +407,9 @@ protochar(c, where, iseditproto)
|
||||||
* where to resume parsing the string.
|
* where to resume parsing the string.
|
||||||
* We must keep track of nested IFs and skip them properly.
|
* We must keep track of nested IFs and skip them properly.
|
||||||
*/
|
*/
|
||||||
static char *
|
static const char *
|
||||||
skipcond(p)
|
skipcond(p)
|
||||||
register char *p;
|
register const char *p;
|
||||||
{
|
{
|
||||||
register int iflevel;
|
register int iflevel;
|
||||||
|
|
||||||
|
@ -459,9 +465,9 @@ skipcond(p)
|
||||||
/*
|
/*
|
||||||
* Decode a char that represents a position on the screen.
|
* Decode a char that represents a position on the screen.
|
||||||
*/
|
*/
|
||||||
static char *
|
static const char *
|
||||||
wherechar(p, wp)
|
wherechar(p, wp)
|
||||||
char *p;
|
const char *p;
|
||||||
int *wp;
|
int *wp;
|
||||||
{
|
{
|
||||||
switch (*p)
|
switch (*p)
|
||||||
|
@ -485,10 +491,10 @@ wherechar(p, wp)
|
||||||
*/
|
*/
|
||||||
public char *
|
public char *
|
||||||
pr_expand(proto, maxwidth)
|
pr_expand(proto, maxwidth)
|
||||||
char *proto;
|
const char *proto;
|
||||||
int maxwidth;
|
int maxwidth;
|
||||||
{
|
{
|
||||||
register char *p;
|
register const char *p;
|
||||||
register int c;
|
register int c;
|
||||||
int where;
|
int where;
|
||||||
|
|
||||||
|
@ -575,9 +581,11 @@ eq_message()
|
||||||
pr_string()
|
pr_string()
|
||||||
{
|
{
|
||||||
char *prompt;
|
char *prompt;
|
||||||
|
int type;
|
||||||
|
|
||||||
|
type = (!less_is_more) ? pr_type : pr_type ? 0 : 1;
|
||||||
prompt = pr_expand((ch_getflags() & CH_HELPFILE) ?
|
prompt = pr_expand((ch_getflags() & CH_HELPFILE) ?
|
||||||
hproto : prproto[pr_type],
|
hproto : prproto[type],
|
||||||
sc_width-so_s_width-so_e_width-2);
|
sc_width-so_s_width-so_e_width-2);
|
||||||
new_file = 0;
|
new_file = 0;
|
||||||
return (prompt);
|
return (prompt);
|
1252
external/bsd/less/dist/regexp.c
vendored
Normal file
1252
external/bsd/less/dist/regexp.c
vendored
Normal file
File diff suppressed because it is too large
Load diff
36
external/bsd/less/dist/regexp.h
vendored
Normal file
36
external/bsd/less/dist/regexp.h
vendored
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/* $NetBSD: regexp.h,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Definitions etc. for regexp(3) routines.
|
||||||
|
*
|
||||||
|
* Caveat: this is V8 regexp(3) [actually, a reimplementation thereof],
|
||||||
|
* not the System V one.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _REGEXP
|
||||||
|
#define _REGEXP 1
|
||||||
|
|
||||||
|
#define NSUBEXP 10
|
||||||
|
typedef struct regexp {
|
||||||
|
char *startp[NSUBEXP];
|
||||||
|
char *endp[NSUBEXP];
|
||||||
|
char regstart; /* Internal use only. */
|
||||||
|
char reganch; /* Internal use only. */
|
||||||
|
char *regmust; /* Internal use only. */
|
||||||
|
int regmlen; /* Internal use only. */
|
||||||
|
char program[1]; /* Unwarranted chumminess with compiler. */
|
||||||
|
} regexp;
|
||||||
|
|
||||||
|
#if defined(__STDC__) || defined(__cplusplus)
|
||||||
|
# define _ANSI_ARGS_(x) x
|
||||||
|
#else
|
||||||
|
# define _ANSI_ARGS_(x) ()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern regexp *regcomp _ANSI_ARGS_((char *exp));
|
||||||
|
extern int regexec _ANSI_ARGS_((regexp *prog, char *string));
|
||||||
|
extern int regexec2 _ANSI_ARGS_((regexp *prog, char *string, int notbol));
|
||||||
|
extern void regsub _ANSI_ARGS_((regexp *prog, char *source, char *dest));
|
||||||
|
extern void regerror _ANSI_ARGS_((char *msg));
|
||||||
|
|
||||||
|
#endif /* REGEXP */
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: screen.c,v 1.15 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: screen.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2005 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -165,6 +165,7 @@ static char
|
||||||
*sc_home, /* Cursor home */
|
*sc_home, /* Cursor home */
|
||||||
*sc_addline, /* Add line, scroll down following lines */
|
*sc_addline, /* Add line, scroll down following lines */
|
||||||
*sc_lower_left, /* Cursor to last line, first column */
|
*sc_lower_left, /* Cursor to last line, first column */
|
||||||
|
*sc_return, /* Cursor to beginning of current line */
|
||||||
*sc_move, /* General cursor positioning */
|
*sc_move, /* General cursor positioning */
|
||||||
*sc_clear, /* Clear screen */
|
*sc_clear, /* Clear screen */
|
||||||
*sc_eol_clear, /* Clear to end of line */
|
*sc_eol_clear, /* Clear to end of line */
|
||||||
|
@ -236,6 +237,7 @@ extern int wscroll;
|
||||||
extern int screen_trashed;
|
extern int screen_trashed;
|
||||||
extern int tty;
|
extern int tty;
|
||||||
extern int top_scroll;
|
extern int top_scroll;
|
||||||
|
extern int oldbot;
|
||||||
#if HILITE_SEARCH
|
#if HILITE_SEARCH
|
||||||
extern int hilite_search;
|
extern int hilite_search;
|
||||||
#endif
|
#endif
|
||||||
|
@ -627,7 +629,25 @@ ltget_env(capname)
|
||||||
char *capname;
|
char *capname;
|
||||||
{
|
{
|
||||||
char name[16];
|
char name[16];
|
||||||
|
char *s;
|
||||||
|
|
||||||
|
s = lgetenv("LESS_TERMCAP_DEBUG");
|
||||||
|
if (s != NULL && *s != '\0')
|
||||||
|
{
|
||||||
|
struct env { struct env *next; char *name; char *value; };
|
||||||
|
static struct env *envs = NULL;
|
||||||
|
struct env *p;
|
||||||
|
for (p = envs; p != NULL; p = p->next)
|
||||||
|
if (strcmp(p->name, capname) == 0)
|
||||||
|
return p->value;
|
||||||
|
p = (struct env *) ecalloc(1, sizeof(struct env));
|
||||||
|
p->name = save(capname);
|
||||||
|
p->value = (char *) ecalloc(strlen(capname)+3, sizeof(char));
|
||||||
|
sprintf(p->value, "<%s>", capname);
|
||||||
|
p->next = envs;
|
||||||
|
envs = p;
|
||||||
|
return p->value;
|
||||||
|
}
|
||||||
strcpy(name, "LESS_TERMCAP_");
|
strcpy(name, "LESS_TERMCAP_");
|
||||||
strcat(name, capname);
|
strcat(name, capname);
|
||||||
return (lgetenv(name));
|
return (lgetenv(name));
|
||||||
|
@ -1133,7 +1153,7 @@ get_term()
|
||||||
if ((term = lgetenv("TERM")) == NULL)
|
if ((term = lgetenv("TERM")) == NULL)
|
||||||
term = DEFAULT_TERM;
|
term = DEFAULT_TERM;
|
||||||
hardcopy = 0;
|
hardcopy = 0;
|
||||||
if (tgetent(termbuf, term) <= 0)
|
if (tgetent(termbuf, term) != TGETENT_OK)
|
||||||
hardcopy = 1;
|
hardcopy = 1;
|
||||||
if (ltgetflag("hc"))
|
if (ltgetflag("hc"))
|
||||||
hardcopy = 1;
|
hardcopy = 1;
|
||||||
|
@ -1298,6 +1318,13 @@ get_term()
|
||||||
}
|
}
|
||||||
sc_lower_left = cheaper(t1, t2, "\r");
|
sc_lower_left = cheaper(t1, t2, "\r");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get carriage return string.
|
||||||
|
*/
|
||||||
|
sc_return = ltgetstr("cr", &sp);
|
||||||
|
if (sc_return == NULL)
|
||||||
|
sc_return = "\r";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Choose between using "al" or "sr" ("add line" or "scroll reverse")
|
* Choose between using "al" or "sr" ("add line" or "scroll reverse")
|
||||||
* to add a line at the top of the screen.
|
* to add a line at the top of the screen.
|
||||||
|
@ -1337,8 +1364,6 @@ get_term()
|
||||||
*/
|
*/
|
||||||
static int costcount;
|
static int costcount;
|
||||||
|
|
||||||
typedef int (*tputfunc)(int);
|
|
||||||
|
|
||||||
/*ARGSUSED*/
|
/*ARGSUSED*/
|
||||||
static int
|
static int
|
||||||
inc_costcount(c)
|
inc_costcount(c)
|
||||||
|
@ -1353,7 +1378,7 @@ cost(t)
|
||||||
char *t;
|
char *t;
|
||||||
{
|
{
|
||||||
costcount = 0;
|
costcount = 0;
|
||||||
tputs(t, sc_height, (tputfunc) inc_costcount);
|
tputs(t, sc_height, inc_costcount);
|
||||||
return (costcount);
|
return (costcount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1526,9 +1551,9 @@ init()
|
||||||
{
|
{
|
||||||
#if !MSDOS_COMPILER
|
#if !MSDOS_COMPILER
|
||||||
if (!no_init)
|
if (!no_init)
|
||||||
tputs(sc_init, sc_height, (tputfunc) putchr);
|
tputs(sc_init, sc_height, putchr);
|
||||||
if (!no_keypad)
|
if (!no_keypad)
|
||||||
tputs(sc_s_keypad, sc_height, (tputfunc) putchr);
|
tputs(sc_s_keypad, sc_height, putchr);
|
||||||
if (top_scroll)
|
if (top_scroll)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -1541,7 +1566,8 @@ init()
|
||||||
*/
|
*/
|
||||||
for (i = 1; i < sc_height; i++)
|
for (i = 1; i < sc_height; i++)
|
||||||
putchr('\n');
|
putchr('\n');
|
||||||
}
|
} else
|
||||||
|
line_left();
|
||||||
#else
|
#else
|
||||||
#if MSDOS_COMPILER==WIN32C
|
#if MSDOS_COMPILER==WIN32C
|
||||||
if (!no_init)
|
if (!no_init)
|
||||||
|
@ -1563,9 +1589,9 @@ deinit()
|
||||||
return;
|
return;
|
||||||
#if !MSDOS_COMPILER
|
#if !MSDOS_COMPILER
|
||||||
if (!no_keypad)
|
if (!no_keypad)
|
||||||
tputs(sc_e_keypad, sc_height, (tputfunc) putchr);
|
tputs(sc_e_keypad, sc_height, putchr);
|
||||||
if (!no_init)
|
if (!no_init)
|
||||||
tputs(sc_deinit, sc_height, (tputfunc) putchr);
|
tputs(sc_deinit, sc_height, putchr);
|
||||||
#else
|
#else
|
||||||
/* Restore system colors. */
|
/* Restore system colors. */
|
||||||
SETCOLORS(sy_fg_color, sy_bg_color);
|
SETCOLORS(sy_fg_color, sy_bg_color);
|
||||||
|
@ -1587,7 +1613,7 @@ deinit()
|
||||||
home()
|
home()
|
||||||
{
|
{
|
||||||
#if !MSDOS_COMPILER
|
#if !MSDOS_COMPILER
|
||||||
tputs(sc_home, 1, (tputfunc) putchr);
|
tputs(sc_home, 1, putchr);
|
||||||
#else
|
#else
|
||||||
flush();
|
flush();
|
||||||
_settextposition(1,1);
|
_settextposition(1,1);
|
||||||
|
@ -1602,7 +1628,7 @@ home()
|
||||||
add_line()
|
add_line()
|
||||||
{
|
{
|
||||||
#if !MSDOS_COMPILER
|
#if !MSDOS_COMPILER
|
||||||
tputs(sc_addline, sc_height, (tputfunc) putchr);
|
tputs(sc_addline, sc_height, putchr);
|
||||||
#else
|
#else
|
||||||
flush();
|
flush();
|
||||||
#if MSDOS_COMPILER==MSOFTC
|
#if MSDOS_COMPILER==MSOFTC
|
||||||
|
@ -1778,7 +1804,7 @@ win32_scroll_up(n)
|
||||||
|
|
||||||
/* Move the source text to the top of the screen. */
|
/* Move the source text to the top of the screen. */
|
||||||
new_org.X = rcSrc.Left;
|
new_org.X = rcSrc.Left;
|
||||||
new_org.Y = 0;
|
new_org.Y = rcClip.Top;
|
||||||
|
|
||||||
/* Fill the right character and attributes. */
|
/* Fill the right character and attributes. */
|
||||||
fillchar.Char.AsciiChar = ' ';
|
fillchar.Char.AsciiChar = ' ';
|
||||||
|
@ -1811,13 +1837,44 @@ win32_scroll_up(n)
|
||||||
lower_left()
|
lower_left()
|
||||||
{
|
{
|
||||||
#if !MSDOS_COMPILER
|
#if !MSDOS_COMPILER
|
||||||
tputs(sc_lower_left, 1, (tputfunc) putchr);
|
tputs(sc_lower_left, 1, putchr);
|
||||||
#else
|
#else
|
||||||
flush();
|
flush();
|
||||||
_settextposition(sc_height, 1);
|
_settextposition(sc_height, 1);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Move cursor to left position of current line.
|
||||||
|
*/
|
||||||
|
public void
|
||||||
|
line_left()
|
||||||
|
{
|
||||||
|
#if !MSDOS_COMPILER
|
||||||
|
tputs(sc_return, 1, putchr);
|
||||||
|
#else
|
||||||
|
int row;
|
||||||
|
flush();
|
||||||
|
#if MSDOS_COMPILER==WIN32C
|
||||||
|
{
|
||||||
|
CONSOLE_SCREEN_BUFFER_INFO scr;
|
||||||
|
GetConsoleScreenBufferInfo(con_out, &scr);
|
||||||
|
row = scr.dwCursorPosition.Y - scr.srWindow.Top + 1;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#if MSDOS_COMPILER==BORLANDC || MSDOS_COMPILER==DJGPPC
|
||||||
|
row = wherey();
|
||||||
|
#else
|
||||||
|
{
|
||||||
|
struct rccoord tpos = _gettextposition();
|
||||||
|
row = tpos.row;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
_settextposition(row, 1);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check if the console size has changed and reset internals
|
* Check if the console size has changed and reset internals
|
||||||
* (in lieu of SIGWINCH for WIN32).
|
* (in lieu of SIGWINCH for WIN32).
|
||||||
|
@ -1857,7 +1914,7 @@ goto_line(slinenum)
|
||||||
int slinenum;
|
int slinenum;
|
||||||
{
|
{
|
||||||
#if !MSDOS_COMPILER
|
#if !MSDOS_COMPILER
|
||||||
tputs(tgoto(sc_move, 0, slinenum), 1, (tputfunc) putchr);
|
tputs(tgoto(sc_move, 0, slinenum), 1, putchr);
|
||||||
#else
|
#else
|
||||||
flush();
|
flush();
|
||||||
_settextposition(slinenum+1, 1);
|
_settextposition(slinenum+1, 1);
|
||||||
|
@ -1936,7 +1993,7 @@ vbell()
|
||||||
#if !MSDOS_COMPILER
|
#if !MSDOS_COMPILER
|
||||||
if (*sc_visual_bell == '\0')
|
if (*sc_visual_bell == '\0')
|
||||||
return;
|
return;
|
||||||
tputs(sc_visual_bell, sc_height, (tputfunc) putchr);
|
tputs(sc_visual_bell, sc_height, putchr);
|
||||||
#else
|
#else
|
||||||
#if MSDOS_COMPILER==DJGPPC
|
#if MSDOS_COMPILER==DJGPPC
|
||||||
ScreenVisualBell();
|
ScreenVisualBell();
|
||||||
|
@ -2027,7 +2084,7 @@ bell()
|
||||||
clear()
|
clear()
|
||||||
{
|
{
|
||||||
#if !MSDOS_COMPILER
|
#if !MSDOS_COMPILER
|
||||||
tputs(sc_clear, sc_height, (tputfunc) putchr);
|
tputs(sc_clear, sc_height, putchr);
|
||||||
#else
|
#else
|
||||||
flush();
|
flush();
|
||||||
#if MSDOS_COMPILER==WIN32C
|
#if MSDOS_COMPILER==WIN32C
|
||||||
|
@ -2046,7 +2103,7 @@ clear()
|
||||||
clear_eol()
|
clear_eol()
|
||||||
{
|
{
|
||||||
#if !MSDOS_COMPILER
|
#if !MSDOS_COMPILER
|
||||||
tputs(sc_eol_clear, 1, (tputfunc) putchr);
|
tputs(sc_eol_clear, 1, putchr);
|
||||||
#else
|
#else
|
||||||
#if MSDOS_COMPILER==MSOFTC
|
#if MSDOS_COMPILER==MSOFTC
|
||||||
short top, left;
|
short top, left;
|
||||||
|
@ -2108,9 +2165,9 @@ clear_eol_bot()
|
||||||
clear_eol();
|
clear_eol();
|
||||||
#else
|
#else
|
||||||
if (below_mem)
|
if (below_mem)
|
||||||
tputs(sc_eos_clear, 1, (tputfunc) putchr);
|
tputs(sc_eos_clear, 1, putchr);
|
||||||
else
|
else
|
||||||
tputs(sc_eol_clear, 1, (tputfunc) putchr);
|
tputs(sc_eol_clear, 1, putchr);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2126,7 +2183,11 @@ clear_bot()
|
||||||
* the mode while we do the clear. Some terminals fill the
|
* the mode while we do the clear. Some terminals fill the
|
||||||
* cleared area with the current attribute.
|
* cleared area with the current attribute.
|
||||||
*/
|
*/
|
||||||
lower_left();
|
if (oldbot)
|
||||||
|
lower_left();
|
||||||
|
else
|
||||||
|
line_left();
|
||||||
|
|
||||||
if (attrmode == AT_NORMAL)
|
if (attrmode == AT_NORMAL)
|
||||||
clear_eol_bot();
|
clear_eol_bot();
|
||||||
else
|
else
|
||||||
|
@ -2148,13 +2209,13 @@ at_enter(attr)
|
||||||
#if !MSDOS_COMPILER
|
#if !MSDOS_COMPILER
|
||||||
/* The one with the most priority is last. */
|
/* The one with the most priority is last. */
|
||||||
if (attr & AT_UNDERLINE)
|
if (attr & AT_UNDERLINE)
|
||||||
tputs(sc_u_in, 1, (tputfunc) putchr);
|
tputs(sc_u_in, 1, putchr);
|
||||||
if (attr & AT_BOLD)
|
if (attr & AT_BOLD)
|
||||||
tputs(sc_b_in, 1, (tputfunc) putchr);
|
tputs(sc_b_in, 1, putchr);
|
||||||
if (attr & AT_BLINK)
|
if (attr & AT_BLINK)
|
||||||
tputs(sc_bl_in, 1, (tputfunc) putchr);
|
tputs(sc_bl_in, 1, putchr);
|
||||||
if (attr & AT_STANDOUT)
|
if (attr & AT_STANDOUT)
|
||||||
tputs(sc_s_in, 1, (tputfunc) putchr);
|
tputs(sc_s_in, 1, putchr);
|
||||||
#else
|
#else
|
||||||
flush();
|
flush();
|
||||||
/* The one with the most priority is first. */
|
/* The one with the most priority is first. */
|
||||||
|
@ -2184,13 +2245,13 @@ at_exit()
|
||||||
#if !MSDOS_COMPILER
|
#if !MSDOS_COMPILER
|
||||||
/* Undo things in the reverse order we did them. */
|
/* Undo things in the reverse order we did them. */
|
||||||
if (attrmode & AT_STANDOUT)
|
if (attrmode & AT_STANDOUT)
|
||||||
tputs(sc_s_out, 1, (tputfunc) putchr);
|
tputs(sc_s_out, 1, putchr);
|
||||||
if (attrmode & AT_BLINK)
|
if (attrmode & AT_BLINK)
|
||||||
tputs(sc_bl_out, 1, (tputfunc) putchr);
|
tputs(sc_bl_out, 1, putchr);
|
||||||
if (attrmode & AT_BOLD)
|
if (attrmode & AT_BOLD)
|
||||||
tputs(sc_b_out, 1, (tputfunc) putchr);
|
tputs(sc_b_out, 1, putchr);
|
||||||
if (attrmode & AT_UNDERLINE)
|
if (attrmode & AT_UNDERLINE)
|
||||||
tputs(sc_u_out, 1, (tputfunc) putchr);
|
tputs(sc_u_out, 1, putchr);
|
||||||
#else
|
#else
|
||||||
flush();
|
flush();
|
||||||
SETCOLORS(nm_fg_color, nm_bg_color);
|
SETCOLORS(nm_fg_color, nm_bg_color);
|
||||||
|
@ -2203,7 +2264,10 @@ at_exit()
|
||||||
at_switch(attr)
|
at_switch(attr)
|
||||||
int attr;
|
int attr;
|
||||||
{
|
{
|
||||||
if (apply_at_specials(attr) != attrmode)
|
int new_attrmode = apply_at_specials(attr);
|
||||||
|
int ignore_modes = AT_ANSI;
|
||||||
|
|
||||||
|
if ((new_attrmode & ~ignore_modes) != (attrmode & ~ignore_modes))
|
||||||
{
|
{
|
||||||
at_exit();
|
at_exit();
|
||||||
at_enter(attr);
|
at_enter(attr);
|
||||||
|
@ -2246,9 +2310,9 @@ backspace()
|
||||||
/*
|
/*
|
||||||
* Erase the previous character by overstriking with a space.
|
* Erase the previous character by overstriking with a space.
|
||||||
*/
|
*/
|
||||||
tputs(sc_backspace, 1, (tputfunc) putchr);
|
tputs(sc_backspace, 1, putchr);
|
||||||
putchr(' ');
|
putchr(' ');
|
||||||
tputs(sc_backspace, 1, (tputfunc) putchr);
|
tputs(sc_backspace, 1, putchr);
|
||||||
#else
|
#else
|
||||||
#if MSDOS_COMPILER==MSOFTC
|
#if MSDOS_COMPILER==MSOFTC
|
||||||
struct rccoord tpos;
|
struct rccoord tpos;
|
||||||
|
@ -2292,7 +2356,7 @@ backspace()
|
||||||
putbs()
|
putbs()
|
||||||
{
|
{
|
||||||
#if !MSDOS_COMPILER
|
#if !MSDOS_COMPILER
|
||||||
tputs(sc_backspace, 1, (tputfunc) putchr);
|
tputs(sc_backspace, 1, putchr);
|
||||||
#else
|
#else
|
||||||
int row, col;
|
int row, col;
|
||||||
|
|
||||||
|
@ -2422,3 +2486,33 @@ WIN32getch(tty)
|
||||||
return ((char)ascii);
|
return ((char)ascii);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if MSDOS_COMPILER
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
public void
|
||||||
|
WIN32setcolors(fg, bg)
|
||||||
|
int fg;
|
||||||
|
int bg;
|
||||||
|
{
|
||||||
|
SETCOLORS(fg, bg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
public void
|
||||||
|
WIN32textout(text, len)
|
||||||
|
char *text;
|
||||||
|
int len;
|
||||||
|
{
|
||||||
|
#if MSDOS_COMPILER==WIN32C
|
||||||
|
DWORD written;
|
||||||
|
WriteConsole(con_out, text, len, &written, NULL);
|
||||||
|
#else
|
||||||
|
char c = text[len];
|
||||||
|
text[len] = '\0';
|
||||||
|
cputs(text);
|
||||||
|
text[len] = c;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
106
external/bsd/less/dist/scrsize.c
vendored
Normal file
106
external/bsd/less/dist/scrsize.c
vendored
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
/* $NetBSD: scrsize.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
|
*
|
||||||
|
* You may distribute under the terms of either the GNU General Public
|
||||||
|
* License or the Less License, as specified in the README file.
|
||||||
|
*
|
||||||
|
* For more information about less, or for information on how to
|
||||||
|
* contact the author, see the README file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This program is used to determine the screen dimensions on OS/2 systems.
|
||||||
|
* Adapted from code written by Kyosuke Tokoro (NBG01720@nifty.ne.jp).
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* When I wrote this routine, I consulted some part of the source code
|
||||||
|
* of the xwininfo utility by X Consortium.
|
||||||
|
*
|
||||||
|
* Copyright (c) 1987, X Consortium
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to
|
||||||
|
* deal in the Software without restriction, including without limitation the
|
||||||
|
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
* sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in
|
||||||
|
* all copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||||
|
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
* Except as contained in this notice, the name of the X Consortium shall not
|
||||||
|
* be used in advertising or otherwise to promote the sale, use or other
|
||||||
|
* dealings in this Software without prior written authorization from the X
|
||||||
|
* Consortium.
|
||||||
|
*/
|
||||||
|
#include <X11/Xlib.h>
|
||||||
|
#include <X11/Xutil.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
static int get_winsize(dpy, window, p_width, p_height)
|
||||||
|
Display *dpy;
|
||||||
|
Window window;
|
||||||
|
int *p_width;
|
||||||
|
int *p_height;
|
||||||
|
{
|
||||||
|
XWindowAttributes win_attributes;
|
||||||
|
XSizeHints hints;
|
||||||
|
long longjunk;
|
||||||
|
|
||||||
|
if (!XGetWindowAttributes(dpy, window, &win_attributes))
|
||||||
|
return 1;
|
||||||
|
if (!XGetWMNormalHints(dpy, window, &hints, &longjunk))
|
||||||
|
return 1;
|
||||||
|
if (!(hints.flags & PResizeInc))
|
||||||
|
return 1;
|
||||||
|
if (hints.width_inc == 0 || hints.height_inc == 0)
|
||||||
|
return 1;
|
||||||
|
if (!(hints.flags & (PBaseSize|PMinSize)))
|
||||||
|
return 1;
|
||||||
|
if (hints.flags & PBaseSize)
|
||||||
|
{
|
||||||
|
win_attributes.width -= hints.base_width;
|
||||||
|
win_attributes.height -= hints.base_height;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
win_attributes.width -= hints.min_width;
|
||||||
|
win_attributes.height -= hints.min_height;
|
||||||
|
}
|
||||||
|
*p_width = win_attributes.width / hints.width_inc;
|
||||||
|
*p_height = win_attributes.height / hints.height_inc;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(argc, argv)
|
||||||
|
int argc;
|
||||||
|
char *argv[];
|
||||||
|
{
|
||||||
|
char *cp;
|
||||||
|
Display *dpy;
|
||||||
|
int size[2];
|
||||||
|
|
||||||
|
_scrsize(size);
|
||||||
|
cp = getenv("WINDOWID");
|
||||||
|
if (cp != NULL)
|
||||||
|
{
|
||||||
|
dpy = XOpenDisplay(NULL);
|
||||||
|
if (dpy != NULL)
|
||||||
|
{
|
||||||
|
get_winsize(dpy, (Window) atol(cp), &size[0], &size[1]);
|
||||||
|
XCloseDisplay(dpy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("%i %i\n", size[0], size[1]);
|
||||||
|
return (0);
|
||||||
|
}
|
File diff suppressed because it is too large
Load diff
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: signal.c,v 1.6 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: signal.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -42,6 +42,7 @@ extern int linenums;
|
||||||
extern int wscroll;
|
extern int wscroll;
|
||||||
extern int reading;
|
extern int reading;
|
||||||
extern int quit_on_intr;
|
extern int quit_on_intr;
|
||||||
|
extern long jump_sline_fraction;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Interrupt signal handler.
|
* Interrupt signal handler.
|
||||||
|
@ -51,6 +52,7 @@ extern int quit_on_intr;
|
||||||
u_interrupt(type)
|
u_interrupt(type)
|
||||||
int type;
|
int type;
|
||||||
{
|
{
|
||||||
|
bell();
|
||||||
#if OS2
|
#if OS2
|
||||||
LSIGNAL(SIGINT, SIG_ACK);
|
LSIGNAL(SIGINT, SIG_ACK);
|
||||||
#endif
|
#endif
|
||||||
|
@ -66,7 +68,7 @@ u_interrupt(type)
|
||||||
getkey();
|
getkey();
|
||||||
#endif
|
#endif
|
||||||
if (reading)
|
if (reading)
|
||||||
intread();
|
intread(); /* May longjmp */
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SIGTSTP
|
#ifdef SIGTSTP
|
||||||
|
@ -161,13 +163,12 @@ init_signals(on)
|
||||||
#endif
|
#endif
|
||||||
#ifdef SIGWINCH
|
#ifdef SIGWINCH
|
||||||
(void) LSIGNAL(SIGWINCH, winch);
|
(void) LSIGNAL(SIGWINCH, winch);
|
||||||
#else
|
#endif
|
||||||
#ifdef SIGWIND
|
#ifdef SIGWIND
|
||||||
(void) LSIGNAL(SIGWIND, winch);
|
(void) LSIGNAL(SIGWIND, winch);
|
||||||
#endif
|
#endif
|
||||||
#ifdef SIGQUIT
|
#ifdef SIGQUIT
|
||||||
(void) LSIGNAL(SIGQUIT, SIG_IGN);
|
(void) LSIGNAL(SIGQUIT, SIG_IGN);
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
|
@ -250,6 +251,8 @@ psignals()
|
||||||
if (sc_width != old_width || sc_height != old_height)
|
if (sc_width != old_width || sc_height != old_height)
|
||||||
{
|
{
|
||||||
wscroll = (sc_height + 1) / 2;
|
wscroll = (sc_height + 1) / 2;
|
||||||
|
calc_jump_sline();
|
||||||
|
calc_shift_count();
|
||||||
screen_trashed = 1;
|
screen_trashed = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -257,25 +260,6 @@ psignals()
|
||||||
if (tsignals & S_INTERRUPT)
|
if (tsignals & S_INTERRUPT)
|
||||||
{
|
{
|
||||||
if (quit_on_intr)
|
if (quit_on_intr)
|
||||||
quit(QUIT_OK);
|
quit(QUIT_INTERRUPT);
|
||||||
bell();
|
|
||||||
/*
|
|
||||||
* {{ You may wish to replace the bell() with
|
|
||||||
* error("Interrupt", NULL_PARG); }}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If we were interrupted while in the "calculating
|
|
||||||
* line numbers" loop, turn off line numbers.
|
|
||||||
*/
|
|
||||||
if (lnloop)
|
|
||||||
{
|
|
||||||
lnloop = 0;
|
|
||||||
if (linenums == 2)
|
|
||||||
screen_trashed = 1;
|
|
||||||
linenums = 0;
|
|
||||||
error("Line numbers turned off", NULL_PARG);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,7 +1,7 @@
|
||||||
/* $NetBSD: tags.c,v 1.8 2006/10/26 01:33:08 mrg Exp $ */
|
/* $NetBSD: tags.c,v 1.3 2011/07/03 20:14:13 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -58,7 +58,7 @@ static int getentry();
|
||||||
*
|
*
|
||||||
* Use either pattern or line number.
|
* Use either pattern or line number.
|
||||||
* findgtag() always uses line number, so pattern is always NULL.
|
* findgtag() always uses line number, so pattern is always NULL.
|
||||||
* findctag() usually either pattern (in which case line number is 0),
|
* findctag() uses either pattern (in which case line number is 0),
|
||||||
* or line number (in which case pattern is NULL).
|
* or line number (in which case pattern is NULL).
|
||||||
*/
|
*/
|
||||||
struct tag {
|
struct tag {
|
||||||
|
@ -77,10 +77,10 @@ static struct taglist taglist = { TAG_END, TAG_END };
|
||||||
static struct tag *curtag;
|
static struct tag *curtag;
|
||||||
|
|
||||||
#define TAG_INS(tp) \
|
#define TAG_INS(tp) \
|
||||||
(tp)->next = taglist.tl_first; \
|
(tp)->next = TAG_END; \
|
||||||
(tp)->prev = TAG_END; \
|
(tp)->prev = taglist.tl_last; \
|
||||||
taglist.tl_first->prev = (tp); \
|
taglist.tl_last->next = (tp); \
|
||||||
taglist.tl_first = (tp);
|
taglist.tl_last = (tp);
|
||||||
|
|
||||||
#define TAG_RM(tp) \
|
#define TAG_RM(tp) \
|
||||||
(tp)->next->prev = (tp)->prev; \
|
(tp)->next->prev = (tp)->prev; \
|
||||||
|
@ -420,7 +420,7 @@ ctagsearch()
|
||||||
* starting position of that line in linepos.
|
* starting position of that line in linepos.
|
||||||
*/
|
*/
|
||||||
linepos = pos;
|
linepos = pos;
|
||||||
pos = forw_raw_line(pos, &line);
|
pos = forw_raw_line(pos, &line, (int *)NULL);
|
||||||
if (linenum != 0)
|
if (linenum != 0)
|
||||||
linenum++;
|
linenum++;
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
|
/* $NetBSD: ttyin.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 1984-2004 Mark Nudelman
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
*
|
*
|
||||||
* You may distribute under the terms of either the GNU General Public
|
* You may distribute under the terms of either the GNU General Public
|
||||||
* License or the Less License, as specified in the README file.
|
* License or the Less License, as specified in the README file.
|
||||||
|
@ -102,10 +104,6 @@ getchr()
|
||||||
{
|
{
|
||||||
char c;
|
char c;
|
||||||
int result;
|
int result;
|
||||||
#if 0
|
|
||||||
int hex_in = 0;
|
|
||||||
int hex_value = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
|
@ -139,6 +137,9 @@ getchr()
|
||||||
#endif
|
#endif
|
||||||
#if 0 /* allow entering arbitrary hex chars for testing */
|
#if 0 /* allow entering arbitrary hex chars for testing */
|
||||||
/* ctrl-A followed by two hex chars makes a byte */
|
/* ctrl-A followed by two hex chars makes a byte */
|
||||||
|
{
|
||||||
|
int hex_in = 0;
|
||||||
|
int hex_value = 0;
|
||||||
if (c == CONTROL('A'))
|
if (c == CONTROL('A'))
|
||||||
{
|
{
|
||||||
hex_in = 2;
|
hex_in = 2;
|
||||||
|
@ -164,6 +165,7 @@ getchr()
|
||||||
}
|
}
|
||||||
c = hex_value;
|
c = hex_value;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
/*
|
/*
|
||||||
* Various parts of the program cannot handle
|
* Various parts of the program cannot handle
|
750
external/bsd/less/dist/version.c
vendored
Normal file
750
external/bsd/less/dist/version.c
vendored
Normal file
|
@ -0,0 +1,750 @@
|
||||||
|
/* $NetBSD: version.c,v 1.2 2011/07/03 19:51:26 tron Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 1984-2011 Mark Nudelman
|
||||||
|
*
|
||||||
|
* You may distribute under the terms of either the GNU General Public
|
||||||
|
* License or the Less License, as specified in the README file.
|
||||||
|
*
|
||||||
|
* For more information about less, or for information on how to
|
||||||
|
* contact the author, see the README file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
----------------------- CHANGE HISTORY --------------------------
|
||||||
|
|
||||||
|
1/29/84 Allowed use on standard input
|
||||||
|
2/1/84 Added E, N, P commands
|
||||||
|
4/17/84 Added '=' command, 'stop' signal handling
|
||||||
|
4/20/84 Added line folding
|
||||||
|
v2 4/27/84 Fixed '=' command to use BOTTOM_PLUS_ONE,
|
||||||
|
instead of TOP, added 'p' & 'v' commands
|
||||||
|
v3 5/3/84 Added -m and -t options, '-' command
|
||||||
|
v4 5/3/84 Added LESS environment variable
|
||||||
|
v5 5/3/84 New comments, fixed '-' command slightly
|
||||||
|
v6 5/15/84 Added -Q, visual bell
|
||||||
|
v7 5/24/84 Fixed jump_back(n) bug: n should count real
|
||||||
|
lines, not folded lines. Also allow number on G command.
|
||||||
|
v8 5/30/84 Re-do -q and -Q commands
|
||||||
|
v9 9/25/84 Added "+<cmd>" argument
|
||||||
|
v10 10/10/84 Fixed bug in -b<n> argument processing
|
||||||
|
v11 10/18/84 Made error() ring bell if \n not entered.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v12 2/13/85 Reorganized signal handling and made portable to 4.2bsd.
|
||||||
|
v13 2/16/85 Reword error message for '-' command.
|
||||||
|
v14 2/22/85 Added -bf and -bp variants of -b.
|
||||||
|
v15 2/25/85 Miscellaneous changes.
|
||||||
|
v16 3/13/85 Added -u flag for backspace processing.
|
||||||
|
v17 4/13/85 Added j and k commands, changed -t default.
|
||||||
|
v18 4/20/85 Rewrote signal handling code.
|
||||||
|
v19 5/2/85 Got rid of "verbose" eq_message().
|
||||||
|
Made search() scroll in some cases.
|
||||||
|
v20 5/21/85 Fixed screen.c ioctls for System V.
|
||||||
|
v21 5/23/85 Fixed some first_cmd bugs.
|
||||||
|
v22 5/24/85 Added support for no RECOMP nor REGCMP.
|
||||||
|
v23 5/25/85 Miscellanous changes and prettying up.
|
||||||
|
Posted to USENET.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v24 6/3/85 Added ti,te terminal init & de-init.
|
||||||
|
(Thanks to Mike Kersenbrock)
|
||||||
|
v25 6/8/85 Added -U flag, standout mode underlining.
|
||||||
|
v26 6/9/85 Added -M flag.
|
||||||
|
Use underline termcap (us) if it exists.
|
||||||
|
v27 6/15/85 Renamed some variables to make unique in
|
||||||
|
6 chars. Minor fix to -m.
|
||||||
|
v28 6/28/85 Fixed right margin bug.
|
||||||
|
v29 6/28/85 Incorporated M.Rose's changes to signal.c
|
||||||
|
v30 6/29/85 Fixed stupid bug in argument processing.
|
||||||
|
v31 7/15/85 Added -p flag, changed repaint algorithm.
|
||||||
|
Added kludge for magic cookie terminals.
|
||||||
|
v32 7/16/85 Added cat_file if output not a tty.
|
||||||
|
v33 7/23/85 Added -e flag and EDITOR.
|
||||||
|
v34 7/26/85 Added -s flag.
|
||||||
|
v35 7/27/85 Rewrote option handling; added option.c.
|
||||||
|
v36 7/29/85 Fixed -e flag to work if not last file.
|
||||||
|
v37 8/10/85 Added -x flag.
|
||||||
|
v38 8/19/85 Changed prompting; created prompt.c.
|
||||||
|
v39 8/24/85 (Not -p) does not initially clear screen.
|
||||||
|
v40 8/26/85 Added "skipping" indicator in forw().
|
||||||
|
Posted to USENET.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v41 9/17/85 ONLY_RETURN, control char commands,
|
||||||
|
faster search, other minor fixes.
|
||||||
|
v42 9/25/85 Added ++ command line syntax;
|
||||||
|
ch_fsize for pipes.
|
||||||
|
v43 10/15/85 Added -h flag, changed prim.c algorithms.
|
||||||
|
v44 10/16/85 Made END print in all cases of eof;
|
||||||
|
ignore SIGTTOU after receiv ing SIGTSTP.
|
||||||
|
v45 10/16/85 Never print backspaces unless -u.
|
||||||
|
v46 10/24/85 Backwards scroll in jump_loc.
|
||||||
|
v47 10/30/85 Fixed bug in edit(): *first_cmd==0
|
||||||
|
v48 11/16/85 Use TIOCSETN instead of TIOCSETP.
|
||||||
|
Added marks (m and ' commands).
|
||||||
|
Posted to USENET.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v49 1/9/86 Fixed bug: signal didn't clear mcc.
|
||||||
|
v50 1/15/86 Added ' (quote) to gomark.
|
||||||
|
v51 1/16/86 Added + cmd, fixed problem if first_cmd
|
||||||
|
fails, made g cmd sort of "work" on pipes
|
||||||
|
ev en if bof is no longer buffered.
|
||||||
|
v52 1/17/86 Made short files work better.
|
||||||
|
v53 1/20/86 Added -P option.
|
||||||
|
v54 1/20/86 Changed help to use HELPFILE.
|
||||||
|
v55 1/23/86 Messages work better if not tty output.
|
||||||
|
v56 1/24/86 Added -l option.
|
||||||
|
v57 1/31/86 Fixed -l to get confirmation before
|
||||||
|
ov erwriting an existing file.
|
||||||
|
v58 8/28/86 Added filename globbing.
|
||||||
|
v59 9/15/86 Fixed some bugs with very long filenames.
|
||||||
|
v60 9/26/86 Incorporated changes from Leith (Casey)
|
||||||
|
Leedom for boldface and -z option.
|
||||||
|
v61 9/26/86 Got rid of annoying repaints after ! cmd.
|
||||||
|
Posted to USENET.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v62 12/23/86 Added is_directory(); change -z default to
|
||||||
|
-1 instead of 24; cat-and-exit if -e and
|
||||||
|
file is less than a screenful.
|
||||||
|
v63 1/8/87 Fixed bug in cat-and-exit if > 1 file.
|
||||||
|
v64 1/12/87 Changed puts/putstr, putc/putchr,
|
||||||
|
getc/getchr to av oid name conflict with
|
||||||
|
stdio functions.
|
||||||
|
v65 1/26/87 Allowed '-' command to change NUMBER
|
||||||
|
v alued options (thanks to Gary Puckering)
|
||||||
|
v66 2/13/87 Fixed bug: prepaint should use force=1.
|
||||||
|
v67 2/24/87 Added !! and % expansion to ! command.
|
||||||
|
v68 2/25/87 Added SIGWINCH and TIOCGWINSZ support;
|
||||||
|
changed is_directory to bad_file.
|
||||||
|
(thanks to J. Robert Ward)
|
||||||
|
v69 2/25/87 Added SIGWIND and WIOCGETD (for Unix PC).
|
||||||
|
v70 3/13/87 Changed help cmd from 'h' to 'H'; better
|
||||||
|
error msgs in bad_file, errno_message.
|
||||||
|
v71 5/11/87 Changed -p to -c, made triple -c/-C
|
||||||
|
for clear-eol like more's -c.
|
||||||
|
v72 6/26/87 Added -E, -L, use $SHELL in lsystem().
|
||||||
|
(thanks to Stev e Spearman)
|
||||||
|
v73 6/26/87 Allow Examine "#" for previous file.
|
||||||
|
Posted to USENET 8/25/87.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v74 9/18/87 Fix conflict in EOF symbol with stdio.h,
|
||||||
|
Make os.c more portable to BSD.
|
||||||
|
v75 9/23/87 Fix problems in get_term (thanks to
|
||||||
|
Paul Eggert); new backwards scrolling in
|
||||||
|
jump_loc (thanks to Marion Hakanson).
|
||||||
|
v76 9/23/87 Added -i flag; allow single "!" to
|
||||||
|
inv oke a shell (thanks to Franco Barber).
|
||||||
|
v77 9/24/87 Added -n flag and line number support.
|
||||||
|
v78 9/25/87 Fixed problem with prompts longer than
|
||||||
|
the screen width.
|
||||||
|
v79 9/29/87 Added the _ command.
|
||||||
|
v80 10/6/87 Allow signal to break out of linenum scan.
|
||||||
|
v81 10/6/87 Allow -b to be changed from within less.
|
||||||
|
v82 10/7/87 Add cmd_decode to use a table for key
|
||||||
|
binding (thanks to Dav id Nason).
|
||||||
|
v83 10/9/87 Allow .less file for user-defined keys.
|
||||||
|
v84 10/11/87 Fix -e/-E problems (thanks to Felix Lee).
|
||||||
|
v85 10/15/87 Search now keeps track of line numbers.
|
||||||
|
v86 10/20/87 Added -B option and autobuf; fixed
|
||||||
|
"pipe error" bug.
|
||||||
|
v87 3/1/88 Fix bug re BSD signals while reading file.
|
||||||
|
v88 3/12/88 Use new format for -P option (thanks to
|
||||||
|
der Mouse), allow "+-c" without message,
|
||||||
|
fix bug re BSD hangup.
|
||||||
|
v89 3/18/88 Turn off line numbers if linenum scan
|
||||||
|
is interrupted.
|
||||||
|
v90 3/30/88 Allow -P from within less.
|
||||||
|
v91 3/30/88 Added tags file support (new -t option)
|
||||||
|
(thanks to Brian Campbell).
|
||||||
|
v92 4/4/88 Added -+option syntax.
|
||||||
|
v93 4/11/88 Add support for slow input (thanks to
|
||||||
|
Joe Orost & apologies for taking almost
|
||||||
|
3 years to get this in!)
|
||||||
|
v94 4/11/88 Redo reading/signal stuff.
|
||||||
|
v95 4/20/88 Repaint screen better after signal.
|
||||||
|
v96 4/21/88 Add /! and ?! commands.
|
||||||
|
v97 5/17/88 Allow -l/-L from within less.
|
||||||
|
Eliminate some static arrays (use calloc).
|
||||||
|
Posted to USENET.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v98 10/14/88 Fix incorrect calloc call; uninitialized
|
||||||
|
var in exec_mca; core dump on unknown TERM.
|
||||||
|
Make v cmd work if past last line of file.
|
||||||
|
Fix some signal bugs.
|
||||||
|
v99 10/29/88 Allow space between -X and string,
|
||||||
|
when X is a string-valued option.
|
||||||
|
v100 1/5/89 Fix globbing bug when $SHELL not set;
|
||||||
|
allow spaces after -t command.
|
||||||
|
v101 1/6/89 Fix problem with long (truncated) lines
|
||||||
|
in tags file (thanks to Neil Dixon).
|
||||||
|
v102 1/6/89 Fix bug with E# when no prev file;
|
||||||
|
allow spaces after -l command.
|
||||||
|
v103 3/14/89 Add -N, -f and -? options. Add z and w
|
||||||
|
commands. Add %L for prompt strings.
|
||||||
|
v104 3/16/89 Added EDITPROTO.
|
||||||
|
v105 3/20/89 Fix bug in find_linenum which cached
|
||||||
|
incorrectly on long lines.
|
||||||
|
v106 3/31/89 Added -k option and multiple lesskey
|
||||||
|
files.
|
||||||
|
v107 4/27/89 Add 8-bit char support and -g option.
|
||||||
|
Split option code into 3 files.
|
||||||
|
v108 5/5/89 Allocate position table dynamically
|
||||||
|
(thanks to Paul Eggert); change % command
|
||||||
|
from "percent" to vi-style brace finder.
|
||||||
|
v109 5/10/89 Added ESC-% command, split prim.c.
|
||||||
|
v110 5/24/89 Fixed bug in + option; fixed repaint bug
|
||||||
|
under Sun windows (thanks to Paul Eggert).
|
||||||
|
v111 5/25/89 Generalized # and % expansion; use
|
||||||
|
calloc for some error messages.
|
||||||
|
v112 5/30/89 Get rid of ESC-%, add {}()[] commands.
|
||||||
|
v113 5/31/89 Optimize lseeks (thanks to Paul Eggert).
|
||||||
|
v114 7/25/89 Added ESC-/ and ESC-/! commands.
|
||||||
|
v115 7/26/89 Added ESC-n command.
|
||||||
|
v116 7/31/89 Added find_pos to optimize g command.
|
||||||
|
v117 8/1/89 Change -f option to -r.
|
||||||
|
v118 8/2/89 Save positions for all previous files,
|
||||||
|
not just the immediately previous one.
|
||||||
|
v119 8/7/89 Save marks across file boundaries.
|
||||||
|
Add file handle stuff.
|
||||||
|
v120 8/11/89 Add :ta command.
|
||||||
|
v121 8/16/89 Add -f option.
|
||||||
|
v122 8/30/89 Fix performance with many buffers.
|
||||||
|
v123 8/31/89 Verbose prompts for string options.
|
||||||
|
Posted beta to USENET.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v124 9/18/89 Reorganize search commands,
|
||||||
|
N = rev, ESC-n = span, add ESC-N.
|
||||||
|
v125 9/18/89 Fix tab bug (thanks to Alex Liu).
|
||||||
|
Fix EOF bug when both -w and -c.
|
||||||
|
v126 10/25/89 Add -j option.
|
||||||
|
v127 10/27/89 Fix problems with blank lines before BOF.
|
||||||
|
v128 10/27/89 Add %bj, etc. to prompt strings.
|
||||||
|
v129 11/3/89 Add -+,-- commands; add set-option and
|
||||||
|
unset-option to lesskey.
|
||||||
|
v130 11/6/89 Generalize A_EXTRA to string, remove
|
||||||
|
set-option, unset-option from lesskey.
|
||||||
|
v131 11/7/89 Changed name of EDITPROTO to LESSEDIT.
|
||||||
|
v132 11/8/89 Allow editing of command prefix.
|
||||||
|
v133 11/16/89 Add -y option (thanks to Jeff Sullivan).
|
||||||
|
v134 12/1/89 Glob filenames in the -l command.
|
||||||
|
v135 12/5/89 Combined {}()[] commands into one, and
|
||||||
|
added ESC-^F and ESC-^B commands.
|
||||||
|
v136 1/20/90 Added -S, -R flags. Added | command.
|
||||||
|
Added warning for binary files. (thanks
|
||||||
|
to Richard Brittain and J. Sullivan).
|
||||||
|
v137 1/21/90 Rewrote horrible pappend code.
|
||||||
|
Added * notation for hi-bit chars.
|
||||||
|
v138 1/24/90 Fix magic cookie terminal handling.
|
||||||
|
Get rid of "cleanup" loop in ch_get.
|
||||||
|
v139 1/27/90 Added MSDOS support. (many thanks
|
||||||
|
to Richard Brittain).
|
||||||
|
v140 2/7/90 Editing a new file adds it to the
|
||||||
|
command line list.
|
||||||
|
v141 2/8/90 Add edit_list for editing >1 file.
|
||||||
|
v142 2/10/90 Add :x command.
|
||||||
|
v143 2/11/90 Add * and @ modifies to search cmds.
|
||||||
|
Change ESC-/ cmd from /@* to / *.
|
||||||
|
v144 3/1/90 Messed around with ch_zero;
|
||||||
|
no real change.
|
||||||
|
v145 3/2/90 Added -R and -v/-V for MSDOS;
|
||||||
|
renamed FILENAME to avoid conflict.
|
||||||
|
v146 3/5/90 Pull cmdbuf functions out of command.c
|
||||||
|
v147 3/7/90 Implement ?@; fix multi-file edit bugs.
|
||||||
|
v148 3/29/90 Fixed bug in :e<file> then :e#.
|
||||||
|
v149 4/3/90 Change error,ierror,query to use PARG.
|
||||||
|
v150 4/6/90 Add LESS_CHARSET, LESS_CHARDEF.
|
||||||
|
v151 4/13/90 Remove -g option; clean up ispipe.
|
||||||
|
v152 4/14/90 lsystem() closes input file, for
|
||||||
|
editors which require exclusive open.
|
||||||
|
v153 4/18/90 Fix bug if SHELL unset;
|
||||||
|
fix bug in overstrike control char.
|
||||||
|
v154 4/25/90 Output to fd 2 via buffer.
|
||||||
|
v155 4/30/90 Ignore -i if uppercase in pattern
|
||||||
|
(thanks to Michael Rendell.)
|
||||||
|
v156 5/3/90 Remove scroll limits in forw() & back();
|
||||||
|
causes problems with -c.
|
||||||
|
v157 5/4/90 Forward search starts at next real line
|
||||||
|
(not screen line) after jump target.
|
||||||
|
v158 6/14/90 Added F command.
|
||||||
|
v159 7/29/90 Fix bug in exiting: output not flushed.
|
||||||
|
v160 7/29/90 Clear screen before initial output w/ -c.
|
||||||
|
v161 7/29/90 Add -T flag.
|
||||||
|
v162 8/14/90 Fix bug with +F on command line.
|
||||||
|
v163 8/21/90 Added LESSBINFMT variable.
|
||||||
|
v164 9/5/90 Added -p, LINES, COLUMNS and
|
||||||
|
unset mark ' == BOF, for 1003.2 D5.
|
||||||
|
v165 9/6/90 At EOF with -c set, don't display empty
|
||||||
|
screen when try to page forward.
|
||||||
|
v166 9/6/90 Fix G when final line in file wraps.
|
||||||
|
v167 9/11/90 Translate CR/LF -> LF for 1003.2.
|
||||||
|
v168 9/13/90 Return to curr file if "tag not found".
|
||||||
|
v169 12/12/90 G goes to EOF even if file has grown.
|
||||||
|
v170 1/17/91 Add optimization for BSD _setjmp;
|
||||||
|
fix #include ioctl.h TERMIO problem.
|
||||||
|
(thanks to Paul Eggert)
|
||||||
|
Posted to USENET.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v171 3/6/91 Fix -? bug in get_filename.
|
||||||
|
v172 3/15/91 Fix G bug in empty file.
|
||||||
|
Fix bug with ?\n and -i and uppercase
|
||||||
|
pattern at EOF!
|
||||||
|
(thanks to Paul Eggert)
|
||||||
|
v173 3/17/91 Change N cmd to not permanently change
|
||||||
|
direction. (thanks to Brian Matthews)
|
||||||
|
v174 3/18/91 Fix bug with namelogfile not getting
|
||||||
|
cleared when change files.
|
||||||
|
v175 3/18/91 Fix bug with ++cmd on command line.
|
||||||
|
(thanks to Jim Meyering)
|
||||||
|
v176 4/2/91 Change | to not force current screen,
|
||||||
|
include marked line, start/end from
|
||||||
|
top of screen. Improve search speed.
|
||||||
|
(thanks to Don Mears)
|
||||||
|
v177 4/2/91 Add LESSHELP variable.
|
||||||
|
Fix bug with F command with -e.
|
||||||
|
Try /dev/tty for input before using fd 2.
|
||||||
|
Patches posted to USENET 4/2/91.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v178 4/8/91 Fixed bug in globbing logfile name.
|
||||||
|
(thanks to Jim Meyering)
|
||||||
|
v179 4/9/91 Allow negative -z for screen-relative.
|
||||||
|
v180 4/9/91 Clear to eos rather than eol if "db";
|
||||||
|
don't use "sr" if "da".
|
||||||
|
(thanks to Tor Lillqvist)
|
||||||
|
v181 4/18/91 Fixed bug with "negative" chars 80 - FF.
|
||||||
|
(thanks to Benny Sander Hofmann)
|
||||||
|
v182 5/16/91 Fixed bug with attribute at EOL.
|
||||||
|
(thanks to Brian Matthews)
|
||||||
|
v183 6/1/91 Rewrite linstall to do smart config.
|
||||||
|
v184 7/11/91 Process \b in searches based on -u
|
||||||
|
rather than -i.
|
||||||
|
v185 7/11/91 -Pxxx sets short prompt; assume SIGWINCH
|
||||||
|
after a SIGSTOP. (thanks to Ken Laprade)
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v186 4/20/92 Port to MS-DOS (Microsoft C).
|
||||||
|
v187 4/23/92 Added -D option & TAB_COMPLETE_FILENAME.
|
||||||
|
v188 4/28/92 Added command line editing features.
|
||||||
|
v189 12/8/92 Fix mem overrun in anscreen.c:init;
|
||||||
|
fix edit_list to recover from bin file.
|
||||||
|
v190 2/13/93 Make TAB enter one filename at a time;
|
||||||
|
create ^L with old TAB functionality.
|
||||||
|
v191 3/10/93 Defer creating "flash" page for MS-DOS.
|
||||||
|
v192 9/6/93 Add BACK-TAB.
|
||||||
|
v193 9/17/93 Simplify binary_file handling.
|
||||||
|
v194 1/4/94 Add rudiments of alt_filename handling.
|
||||||
|
v195 1/11/94 Port back to Unix; support keypad.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v196 6/7/94 Fix bug with bad filename; fix IFILE
|
||||||
|
type problem. (thanks to David MacKenzie)
|
||||||
|
v197 6/7/94 Fix bug with .less tables inserted wrong.
|
||||||
|
v198 6/23/94 Use autoconf installation technology.
|
||||||
|
(thanks to David MacKenzie)
|
||||||
|
v199 6/29/94 Fix MS-DOS build (thanks to Tim Wiegman).
|
||||||
|
v200 7/25/94 Clean up copyright, minor fixes.
|
||||||
|
Posted to prep.ai.mit.edu
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v201 7/27/94 Check for no memcpy; add casts to calloc;
|
||||||
|
look for regcmp in libgen.a.
|
||||||
|
(thanks to Kaveh Ghazi).
|
||||||
|
v202 7/28/94 Fix bug in edit_next/edit_prev with
|
||||||
|
non-existant files.
|
||||||
|
v203 8/2/94 Fix a variety of configuration bugs on
|
||||||
|
various systems. (thanks to Sakai
|
||||||
|
Kiyotaka, Harald Koenig, Bjorn Brox,
|
||||||
|
Teemu Rantanen, and Thorsten Lockert)
|
||||||
|
v204 8/3/94 Use strerror if available.
|
||||||
|
(thanks to J.T. Conklin)
|
||||||
|
v205 8/5/94 Fix bug in finding "me" termcap entry.
|
||||||
|
(thanks to Andreas Stolcke)
|
||||||
|
8/10/94 v205+: Change BUFSIZ to LBUFSIZE to avoid name
|
||||||
|
conflict with stdio.h.
|
||||||
|
Posted to prep.ai.mit.edu
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v206 8/10/94 Use initial_scrpos for -t to avoid
|
||||||
|
displaying first page before init().
|
||||||
|
(thanks to Dominique Petitpierre)
|
||||||
|
v207 8/12/94 Fix bug if stdout is not tty.
|
||||||
|
v208 8/16/94 Fix bug in close_altfile if goto err1
|
||||||
|
in edit_ifile. (Thanks to M.J. Hewitt)
|
||||||
|
v209 8/16/94 Change scroll to wscroll to avoid
|
||||||
|
conflict with library function.
|
||||||
|
v210 8/16/94 Fix bug with bold on 8 bit chars.
|
||||||
|
(thanks to Vitor Duarte)
|
||||||
|
v211 8/16/94 Don't quit on EOI in jump_loc / forw.
|
||||||
|
v212 8/18/94 Use time_t if available.
|
||||||
|
v213 8/20/94 Allow ospeed to be defined in termcap.h.
|
||||||
|
v214 8/20/94 Added HILITE_SEARCH, -F, ESC-u cmd.
|
||||||
|
(thanks to Paul Lew and Bob Byrnes)
|
||||||
|
v215 8/23/94 Fix -i toggle behavior.
|
||||||
|
v216 8/23/94 Process BS in all searches, not only -u.
|
||||||
|
v217 8/24/94 Added -X flag.
|
||||||
|
v218 8/24/94 Reimplement undo_search.
|
||||||
|
v219 8/24/94 Find tags marked with line number
|
||||||
|
instead of pattern.
|
||||||
|
v220 8/24/94 Stay at same position after SIG_WINCH.
|
||||||
|
v221 8/24/94 Fix bug in file percentage in big file.
|
||||||
|
v222 8/25/94 Do better if can't reopen current file.
|
||||||
|
v223 8/27/94 Support setlocale.
|
||||||
|
(thanks to Robert Joop)
|
||||||
|
v224 8/29/94 Revert v216: process BS in search
|
||||||
|
only if -u.
|
||||||
|
v225 9/6/94 Rewrite undo_search again: toggle.
|
||||||
|
v226 9/15/94 Configuration fixes.
|
||||||
|
(thanks to David MacKenzie)
|
||||||
|
v227 9/19/94 Fixed strerror config problem.
|
||||||
|
Posted to prep.ai.mit.edu
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v228 9/21/94 Fix bug in signals: repeated calls to
|
||||||
|
get_editkeys overflowed st_edittable.
|
||||||
|
v229 9/21/94 Fix "Nothing to search" error if -a
|
||||||
|
and SRCH_PAST_EOF.
|
||||||
|
v230 9/21/94 Don't print extra error msg in search
|
||||||
|
after regerror().
|
||||||
|
v231 9/22/94 Fix hilite bug if search matches 0 chars.
|
||||||
|
(thanks to John Polstra)
|
||||||
|
v232 9/23/94 Deal with weird systems that have
|
||||||
|
termios.h but not tcgetattr().
|
||||||
|
Posted to prep.ai.mit.edu
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v233 9/26/94 Use get_term() instead of pos_init() in
|
||||||
|
psignals to re-get lower_left termcap.
|
||||||
|
(Thanks to John Malecki)
|
||||||
|
v234 9/26/94 Make MIDDLE closer to middle of screen.
|
||||||
|
v235 9/27/94 Use local strchr if system doesn't have.
|
||||||
|
v236 9/28/94 Don't use libucb; use libterm if
|
||||||
|
libtermcap & libcurses doesn't work.
|
||||||
|
(Fix for Solaris; thanks to Frank Kaefer)
|
||||||
|
v237 9/30/94 Use system isupper() etc if provided.
|
||||||
|
Posted to prep.ai.mit.edu
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v238 10/6/94 Make binary non-blinking if LESSBINFMT
|
||||||
|
is set to a string without a *.
|
||||||
|
v239 10/7/94 Don't let delimit_word run back past
|
||||||
|
beginning of cmdbuf.
|
||||||
|
v240 10/10/94 Don't write into termcap buffer.
|
||||||
|
(Thanks to Benoit Speckel)
|
||||||
|
v241 10/13/94 New lesskey file format.
|
||||||
|
Don't expand filenames in search command.
|
||||||
|
v242 10/14/94 Allow lesskey specification of "literal".
|
||||||
|
v243 10/14/94 Add #stop command to lesskey.
|
||||||
|
v244 10/16/94 Add -f flag to lesskey.
|
||||||
|
v245 10/25/94 Allow TAB_COMPLETE_FILENAME to be undefd.
|
||||||
|
v246 10/27/94 Move help file to /usr/local/share.
|
||||||
|
v247 10/27/94 Add -V option.
|
||||||
|
v248 11/5/94 Add -V option to lesskey.
|
||||||
|
v249 11/5/94 Remove -f flag from lesskey; default
|
||||||
|
input file is ~/.lesskey.in, not stdin.
|
||||||
|
v250 11/7/94 Lesskey input file "-" means stdin.
|
||||||
|
v251 11/9/94 Convert cfgetospeed result to ospeed.
|
||||||
|
(Thanks to Andrew Chernov)
|
||||||
|
v252 11/16/94 Change default lesskey input file from
|
||||||
|
.lesskey.in to .lesskey.
|
||||||
|
Posted to prep.ai.mit.edu
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v253 11/21/94 Fix bug when tags file has a backslash.
|
||||||
|
v254 12/6/94 Fix -k option.
|
||||||
|
v255 12/8/94 Add #define EXAMINE to disable :e etc.
|
||||||
|
v256 12/10/94 Change highlighting: only highlite search
|
||||||
|
results (but now it is reliable).
|
||||||
|
v257 12/10/94 Add goto_line and repaint_highlight
|
||||||
|
to optimize highlight repaints.
|
||||||
|
v258 12/12/94 Fixup in hilite_line if BS_SPECIAL.
|
||||||
|
v259 12/12/94 Convert to autoconf 2.0.
|
||||||
|
v260 12/13/94 Add SECURE define.
|
||||||
|
v261 12/14/94 Use system WERASE char as EC_W_BACKSPACE.
|
||||||
|
v262 12/16/94 Add -g/-G flag and screen_hilite.
|
||||||
|
v263 12/20/94 Reimplement/optimize -G flag behavior.
|
||||||
|
v264 12/23/94 Allow EXTRA string after line-edit cmd
|
||||||
|
in lesskey file.
|
||||||
|
v265 12/24/94 Add LESSOPEN=|cmd syntax.
|
||||||
|
v266 12/26/94 Add -I flag.
|
||||||
|
v267 12/28/94 Formalize the four-byte header emitted
|
||||||
|
by a LESSOPEN pipe.
|
||||||
|
v268 12/28/94 Get rid of four-byte header.
|
||||||
|
v269 1/2/95 Close alt file before open new one.
|
||||||
|
Avoids multiple popen().
|
||||||
|
v270 1/3/95 Use VISUAL; use S_ISDIR/S_ISREG; fix
|
||||||
|
config problem with Solaris POSIX regcomp.
|
||||||
|
v271 1/4/95 Don't quit on read error.
|
||||||
|
v272 1/5/95 Get rid of -L.
|
||||||
|
v273 1/6/95 Fix ch_ungetchar bug; don't call
|
||||||
|
LESSOPEN on a pipe.
|
||||||
|
v274 1/6/95 Ported to OS/2 (thanks to Kai Uwe Rommel)
|
||||||
|
v275 1/18/95 Fix bug if toggle -G at EOF.
|
||||||
|
v276 1/30/95 Fix OS/2 version.
|
||||||
|
v277 1/31/95 Add "next" charset; don't display ^X
|
||||||
|
for X > 128.
|
||||||
|
v278 2/14/95 Change default for -G.
|
||||||
|
Posted to prep.ai.mit.edu
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v279 2/22/95 Add GNU options --help, --version.
|
||||||
|
Minor config fixes.
|
||||||
|
v280 2/24/95 Clean up calls to glob(); don't set #
|
||||||
|
if we can't open the new file.
|
||||||
|
v281 2/24/95 Repeat search should turn on hilites.
|
||||||
|
v282 3/2/95 Minor fixes.
|
||||||
|
v283 3/2/95 Fix homefile; make OS2 look in $HOME.
|
||||||
|
v284 3/2/95 Error if "v" on LESSOPENed file;
|
||||||
|
"%" figures out file size on pipe.
|
||||||
|
v285 3/7/95 Don't set # in lsystem;
|
||||||
|
lesskey try $HOME first.
|
||||||
|
v286 3/7/95 Reformat change history (too much free time?).
|
||||||
|
v287 3/8/95 Fix hilite bug if overstrike multiple chars.
|
||||||
|
v288 3/8/95 Allow lesskey to override get_editkey keys.
|
||||||
|
v289 3/9/95 Fix adj_hilite bug when line gets processed by
|
||||||
|
hilite_line more than once.
|
||||||
|
v290 3/9/95 Make configure automatically. Fix Sequent problem
|
||||||
|
with incompatible sigsetmask().
|
||||||
|
Posted to prep.ai.mit.edu
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v291 3/21/95 Add #env to lesskey. Fix MS-DOS build.
|
||||||
|
Posted to simtel.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v292 4/24/95 Add MS-DOS support for Borland C.
|
||||||
|
Fix arrow keys in MS-DOS versions.
|
||||||
|
v293 4/28/95 Add auto-versioning stuff to make dist.
|
||||||
|
v294 5/12/95 Fix Borland build.
|
||||||
|
v295 1/20/96 Fix search on squished file; add /@@.
|
||||||
|
v296 1/23/96 Allow cmdbuf larger than screen width.
|
||||||
|
v297 1/24/96 Don't call termcap if tgetent fails;
|
||||||
|
add #defines for buffers.
|
||||||
|
v298 1/24/96 Change @@ to ^K.
|
||||||
|
Add alternate search modifiers ^N, ^F, ^E.
|
||||||
|
v299 1/25/96 Fix percent overflow in jump_percent (thanks to Brent Wiese);
|
||||||
|
don't send "ti" after shell command till RETURN pressed.
|
||||||
|
v300 1/25/96 Change -U to print tabs as ^I.
|
||||||
|
v301 1/30/96 Make hilites work in cmd F output.
|
||||||
|
v302 1/31/96 Fix cmd F to notice window-change signals.
|
||||||
|
v303 1/31/96 Add ESC-SPACE command.
|
||||||
|
v304 2/1/96 Add ^R search modifier; add LESSSECURE.
|
||||||
|
v305 2/2/96 Workaround Linux /proc kernel bug; add LESSKEY.
|
||||||
|
v306 3/16/96 Minor fixes.
|
||||||
|
v307 3/25/96 Allow cmd line arg "--"; fix DOS & OS/2 defines.h.
|
||||||
|
v308 4/4/96 Port to OS-9 (thanks to Boisy Pitre); fix -d.
|
||||||
|
v309 4/9/96 Fix OS-9 version; fix tags bug with "$".
|
||||||
|
v310 4/10/96 Get rid of HELPFILE.
|
||||||
|
v311 4/22/96 Add Windows32 support; merge doscreen.c into screen.c.
|
||||||
|
v312 4/24/96 Don't quit after "cannot reopen" error.
|
||||||
|
v313 4/25/96 Added horizontal scrolling.
|
||||||
|
v314 4/26/96 Modified -e to quit on reaching end of a squished file.
|
||||||
|
v315 4/26/96 Fix "!;TAB" bug.
|
||||||
|
v316 5/2/96 Make "|a" when (a < curr screen) go to end of curr screen.
|
||||||
|
v317 5/14/96 Various fixes for the MS-DOS and OS/2 builds.
|
||||||
|
Added ## and %% handling for filenames
|
||||||
|
v318 5/29/96 Port to OS-9 Microware compiler; minor fixes
|
||||||
|
(thanks to Martin Gregorie).
|
||||||
|
v319 7/8/96 Fix Windows port (thanks to Jeff Paquette).
|
||||||
|
v320 7/11/96 Final fixes for Windows port.
|
||||||
|
v321 7/18/96 Minor fixes.
|
||||||
|
Posted to Web page.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v322 8/13/96 Fix bug in shell escape from help file; add support for
|
||||||
|
Microsoft Visual C under Windows; numerous small fixes.
|
||||||
|
v323 8/19/96 Fixes for Windows version (thanks to Simon Munton);
|
||||||
|
fix for Linux library weirdness (thanks to Jim Diamond);
|
||||||
|
port to DJGPP (thanks to Eli Zaretskii).
|
||||||
|
v324 8/21/96 Add support for spaces in filenames (thanks to Simon Munton).
|
||||||
|
v325 8/21/96 Add lessecho, for spaces in filenames under Unix.
|
||||||
|
v326 8/27/96 Fix DJGPP version.
|
||||||
|
v327 9/1/96 Reorganize lglob, make spaces in filenames work better in Unix.
|
||||||
|
v328 10/7/96 Append / to directory name in filename completion.
|
||||||
|
Fix MS-DOS and OS-9 versions.
|
||||||
|
v329 10/11/96 Fix more MS-DOS bugs; add LESSSEPARATOR; add -" option.
|
||||||
|
Add LESSMETACHARS, LESSMETAESCAPE.
|
||||||
|
v330 10/21/96 Minor fixes.
|
||||||
|
Posted to Web page.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v331 4/22/97 Various Windows fixes (thanks to Gurusamy Sarathy).
|
||||||
|
v332 4/22/97 Enter filenames from cmd line into edit history.
|
||||||
|
Posted to Web page.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v333 3/4/99 Changed -w to highlite new line after forward movement.
|
||||||
|
v334 3/9/99 Avoid overflowing prompt buffer; add %d and %D.
|
||||||
|
v335 3/20/99 Add EBCDIC support (thanks to Thomas Dorner).
|
||||||
|
Use HOMEDRIVE/HOMEPATH on Windows (thanks to Preston Bannister).
|
||||||
|
Posted to Web page.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v336 4/8/99 Fix installation bugs.
|
||||||
|
v337 4/9/99 Fix another installation bug.
|
||||||
|
Posted to Web page.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v338 4/13/99 Add support for long option names.
|
||||||
|
v339 4/18/99 Add \k, long option names to lesskey. Add -^P. Add :d.
|
||||||
|
v340 4/21/99 Add regexec2. Fix Windows build.
|
||||||
|
Posted to Web page.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v341 5/6/99 Add -F option; %c & ?c prompt escapes.
|
||||||
|
(Thanks to Michele Maltoni)
|
||||||
|
v342 7/22/99 Add system-wide lesskey file; allow GPL or Less License.
|
||||||
|
v343 9/23/99 Support UTF-8 (Thanks to Robert Brady).
|
||||||
|
Add %P and ?P in prompts.
|
||||||
|
v344 10/27/99 -w highlights target line of g and p commands.
|
||||||
|
v345 10/29/99 Make -R pass thru ESC but not other control chars.
|
||||||
|
Posted to Web page.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v346 11/4/99 Fix bugs in long option processing; R cmd should clear hilites.
|
||||||
|
Posted to Web page.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v347 12/13/99 Fixes for DJGPP version (thanks to Eli Zaretskii).
|
||||||
|
v348 12/28/99 Fix deleting file with marks (thanks to Dimitar Jekov).
|
||||||
|
Fix color problem in DJGPP version (thanks to Eli Zaretskii).
|
||||||
|
v349 1/24/00 Fix minor DJGPP bugs; check environment vars for UTF-8;
|
||||||
|
add --with-editor (thanks to Eli, Markus Kuhn, Thomas Schoepf).
|
||||||
|
v350 3/1/00 Fix clear-while-standout bug.
|
||||||
|
v351 3/5/00 Change -M and = prompts to show top & bottom line number.
|
||||||
|
Posted to Web page.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v352 3/8/00 Fix scan_option NULL dereference.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v353 3/20/00 Fix SECURE compile bug, allow space after numeric option.
|
||||||
|
v354 3/23/00 Add support for PCRE; add --with-regex configure option.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v355 6/28/00 Add -# option (thanks to Andy Levinson).
|
||||||
|
v356 7/5/00 Add -J option.
|
||||||
|
v357 7/6/00 Support sigprocmask.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v358 7/8/00 Fix problems with #stop in lesskey file.
|
||||||
|
Posted to Web page.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v359 9/10/00 Fixes for Win32 display problems (thanks to Maurizio Vairani).
|
||||||
|
v360 1/17/01 Move sysless to etc.
|
||||||
|
v361 12/4/01 Add IBM-1047 charset & EBCDIC fixes (thanks to Thomas Dorner).
|
||||||
|
Fix 32 bit dependencies (thanks to Paul Eggert).
|
||||||
|
Fix UTF-8 overstriking (thanks to Robert Brady).
|
||||||
|
v362 12/4/01 Make status column show search targets.
|
||||||
|
v363 12/6/01 Add --no-keypad option.
|
||||||
|
Add variable width tabstops (thanks to Peter Samuelson).
|
||||||
|
v364 12/10/01 Better handling of very long lines in input;
|
||||||
|
Fix horizontal shifting of colored text.
|
||||||
|
v365 12/11/01 Fix overstriking of tabs;
|
||||||
|
Add support for global(1) and multiple tag matches
|
||||||
|
(thanks to Shigio Yamaguchi and Tim Vanderhoek).
|
||||||
|
v366 12/11/01 Fixes for OS/2 (thanks to Kyosuke Tokoro).
|
||||||
|
v367 12/13/01 Allow -D and -x options to terminate without dollar sign;
|
||||||
|
Right/left arrow when entering N are shift cmds, not line edit.
|
||||||
|
v368 12/18/01 Update lesskey commands.
|
||||||
|
v370 12/23/01 Fix tags error messages.
|
||||||
|
Posted to Web page.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v371 12/26/01 Fix new_file bug; use popen in Windows version;
|
||||||
|
fix some compiler warnings.
|
||||||
|
v372 12/29/01 Make -b be in units of 1K.
|
||||||
|
v373 1/14/02 Improve handling of filenames containing shell metachars.
|
||||||
|
v374 2/7/02 Fix memory leak; fix bug in -x argument parsing.
|
||||||
|
v375 4/7/02 Fix searching for SGR sequences; fix SECURE build;
|
||||||
|
add SGR support to DJGPP version (thanks to Eli Zaretskii).
|
||||||
|
v376 6/10/02 Fix bug in overstriking mulitbyte UTF-8 characters
|
||||||
|
(thanks to Jungshik Shin).
|
||||||
|
Posted to Web page.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v377 9/10/02 Fix bug in Windows version when file contains CR;
|
||||||
|
fix bug in search highlights with -R;
|
||||||
|
make initial buffer limit really be 64K not unlimited.
|
||||||
|
v378 9/30/02 Misc bug fixes and compiler warning cleanup.
|
||||||
|
Posted to Web page.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v379 11/23/02 Add -L option; fix bug with ctrl-K in lesskey files;
|
||||||
|
improve UTF-8 overstriking and underscore overstriking;
|
||||||
|
fix minor man page problems; change to autoconf 2.54.
|
||||||
|
v380 11/24/02 Make LINENUM same as POSITION.
|
||||||
|
v381 11/28/02 Make -N use 7 columns for line number if possible.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v382 2/3/04 Remove copyrighted code.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v383 2/16/04 Add history file; add -K option; improve UTF-8 handling;
|
||||||
|
fix some signed char bugs (thanks to Christian Biere);
|
||||||
|
fix some upper/lower case bugs (thanks to Bjoern Jacke);
|
||||||
|
add erase2 char (thanks to David Lawrence);
|
||||||
|
add windows charset (thanks to Dimitar Zhekov).
|
||||||
|
v384 2/20/04 Improvements in UTF-8 handling.
|
||||||
|
v385 2/23/04 Fix UTF-8 output bug.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v386 9/13/05 Improvements to UTF-8 shift & color (thanks to Charles Levert);
|
||||||
|
protect against invalid LESSOPEN and LESSCLOSE values.
|
||||||
|
v387 9/14/05 Update Charles Levert's UTF-8 patch.
|
||||||
|
v388 9/14/05 Change history behavior; change most sprintf calls to snprintf.
|
||||||
|
v389 9/14/05 Fix copy & paste with long lines; improve performance of
|
||||||
|
expand_linebuf; fix crash in init_mlist;
|
||||||
|
v390 9/15/05 Show search matches in status column even if -G is set.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v391 9/17/05 Fix bugs.
|
||||||
|
v392 10/14/05 Fix line wrapping bug.
|
||||||
|
v393 10/19/05 Allow multiple attributes per char; fix bold+underline bug
|
||||||
|
(thanks again to Charles Levert).
|
||||||
|
v394 11/8/05 Fix prompt bug; fix compile problem in Windows build.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v395 1/12/07 Update Unicode tables (thanks to Charles Levert);
|
||||||
|
don't chmod if LESSHISTFILE = /dev/null;
|
||||||
|
make -f work for directories; support DESTDIR in Makefile;
|
||||||
|
fix sigset_t detection in configure;
|
||||||
|
make "t" cmd traverse tags in correct order
|
||||||
|
v396 1/13/07 Add compatibility with POSIX more.
|
||||||
|
v397 3/21/07 Allow decimal point in number for % command;
|
||||||
|
Allow decimal point in number for -j option;
|
||||||
|
Allow n command to fetch last search pattern from history
|
||||||
|
(thanks to arno).
|
||||||
|
v398 3/22/07 Don't rewrite history file if not necessary;
|
||||||
|
fix bug when filenames contain "$".
|
||||||
|
v399 3/22/07 Don't move to bottom of screen at startup;
|
||||||
|
don't output extraneous newlines.
|
||||||
|
v400 3/23/07 Allow search to find pattern after null byte (PCRE and no-regex)
|
||||||
|
(thanks to Michael Constant).
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v401 3/24/07 Minor documentation fixes.
|
||||||
|
v402 3/30/07 Fix autoconf bug when memcpy etc are inline;
|
||||||
|
fix bug in terminating number following -j option.
|
||||||
|
v403 5/25/07 Fix Windows build.
|
||||||
|
v404 6/5/07 Fix display bug with F command and long lines.
|
||||||
|
v405 6/17/07 Fix display bug when using -w option.
|
||||||
|
v406 6/17/07 Fix secure build.
|
||||||
|
v407 8/16/07 Fix bugs; support CSI chars.
|
||||||
|
v408 10/1/07 Fix bug in -i with non-ASCII chars.
|
||||||
|
v409 10/12/07 Fix crash when viewing text with invalid UTF-8 sequences.
|
||||||
|
v411 11/6/07 Fix case-insensitive searching with non-ASCII text.
|
||||||
|
v412 11/6/07 Use symbolic SEEK constants.
|
||||||
|
v413 11/6/07 Fix search highlight bug with non-ASCII text.
|
||||||
|
v414 11/6/07 Fix display bug with no-wrap terminals.
|
||||||
|
v415 11/14/07 Add --follow-name option.
|
||||||
|
v416 11/22/07 Fix crash when searching text with invalid UTF-8 sequences.
|
||||||
|
v417 12/31/07 Don't support single-char CSI in UTF-8 mode;
|
||||||
|
fix bug with -R and invalid CSI sequences;
|
||||||
|
fix bug searching text with SGR sequences with -r;
|
||||||
|
emulate SGR sequences in WIN32 build.
|
||||||
|
v418 12/31/07 Clean up.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v419 1/16/08 Make CSI char 0x9B work in UTF-8 mode (thanks to Colin Watson).
|
||||||
|
v420 2/24/08 Add & command; fix -F option; fix '' after G.
|
||||||
|
v421 2/24/08 Ignore filtered lines when searching.
|
||||||
|
v422 3/2/08 Output CR at startup.
|
||||||
|
v423 5/27/08 Clean up.
|
||||||
|
v424 6/16/08 Fix compile bug with pcre; don't filter help file.
|
||||||
|
v425 7/14/08 Fix non-ANSI code in list handling in ch.c.
|
||||||
|
v426 10/27/08 Fix ignaw terminal handling (thanks to Per Hedeland);
|
||||||
|
fix binary file detection in UTF-8 mode.
|
||||||
|
v427 3/16/09 A few Win32 fixes (thanks to Jason Hood).
|
||||||
|
v428 3/30/09 Add "|-" syntax to LESSOPEN.
|
||||||
|
v429 4/10/09 Fix search highlighting bug with underlined text.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v430 4/22/09 Don't pass "-" to non-pipe LESSOPEN unless it starts with "-".
|
||||||
|
v431 4/29/09 Fix highlight bug when match is at end of line.
|
||||||
|
v432 6/27/09 Better fix for highlight bugs;
|
||||||
|
fix new problems with ignaw terminals.
|
||||||
|
v433 6/28/09 Cleanup search code.
|
||||||
|
v434 6/29/09 More cleanup.
|
||||||
|
v435 7/04/09 Fix bugs with non-regex filtering.
|
||||||
|
v436 7/05/09 Fix memory leak.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v437 7/14/09 Fix bug in handling some long option names;
|
||||||
|
make percentage calculation more accurate.
|
||||||
|
v438 12/29/10 Fix bugs with -i/-I and & filtering;
|
||||||
|
exit with status 2 on ctrl-C with -K.
|
||||||
|
v439 12/31/10 Add -A option.
|
||||||
|
v440 1/5/11 Fix bug displaying prompt after = command.
|
||||||
|
v441 1/21/11 Fix semi-infinite loop if no newlines in file;
|
||||||
|
make new -A behavior the default.
|
||||||
|
-----------------------------------------------------------------
|
||||||
|
v442 3/2/11 Fix search bug.
|
||||||
|
Add ctrl-G line edit command.
|
||||||
|
v443 4/9/11 Fix Windows build.
|
||||||
|
v444 6/8/11 Fix ungetc bug; remove vestiges of obsolete -l option.
|
||||||
|
*/
|
||||||
|
|
||||||
|
char version[] = "444";
|
121
external/bsd/less/less2netbsd
vendored
Executable file
121
external/bsd/less/less2netbsd
vendored
Executable file
|
@ -0,0 +1,121 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# $NetBSD: less2netbsd,v 1.5 2011/07/03 23:25:01 tron Exp $
|
||||||
|
#
|
||||||
|
# Copyright (c) 2011 The NetBSD Foundation, Inc.
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# This code is derived from software contributed to The NetBSD Foundation
|
||||||
|
# by Matthias Scheler.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions
|
||||||
|
# are met:
|
||||||
|
# 1. Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
|
||||||
|
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||||
|
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
|
||||||
|
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
#
|
||||||
|
|
||||||
|
# less2netbsd:
|
||||||
|
# Prepare a less source tree for import into the NetBSD source repository.
|
||||||
|
|
||||||
|
PROGNAME=$(basename "$0")
|
||||||
|
if [ $# -ne 1 ]
|
||||||
|
then
|
||||||
|
echo "Usage: $PROGNAME <dir>" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
DIRNAME="$1"
|
||||||
|
|
||||||
|
# Change to the source directory.
|
||||||
|
if [ -d "$DIRNAME" ] && cd "$DIRNAME"
|
||||||
|
then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
echo "${PROGNAME}: cannot access directory \"$DIRNAME\"." >&2
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check whether the source directory looks sane.
|
||||||
|
CHECK_FILES="LICENSE configure less.h version.c"
|
||||||
|
for FILENAME in $CHECK_FILES
|
||||||
|
do
|
||||||
|
if [ ! -f "$FILENAME" ]
|
||||||
|
then
|
||||||
|
echo "${PROGNAME}: less distribution incomplete." >&2
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Check whether the "configure" was run.
|
||||||
|
REQUIRED_HEADERS=defines.h
|
||||||
|
for FILENAME in $REQUIRED_HEADERS
|
||||||
|
do
|
||||||
|
if [ ! -f "$FILENAME" ]
|
||||||
|
then
|
||||||
|
echo "${PROGNAME}: Please run \"./configure\"." >&2
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Fix the permissions.
|
||||||
|
find . -type d -print0 | xargs -0 chmod 755
|
||||||
|
find . -type f -print0 | xargs -0 chmod 644
|
||||||
|
chmod 755 configure
|
||||||
|
|
||||||
|
# Remove files generated by "configure".
|
||||||
|
REMOVE_FILES="Makefile config.log config.status configure.lineno"
|
||||||
|
rm -f $REMOVE_FILES
|
||||||
|
|
||||||
|
# Add NetBSD RCS Ids.
|
||||||
|
find . -type f -name "*.[ch]" -print |
|
||||||
|
while read FILENAME
|
||||||
|
do
|
||||||
|
if ! grep -q '\$NetBSD' "$FILENAME"
|
||||||
|
then
|
||||||
|
NEW_FILENAME="${FILENAME}.new"
|
||||||
|
rm -f "${NEW_FILENAME}"
|
||||||
|
(echo "/* \$NetBSD\$ */"
|
||||||
|
echo ""
|
||||||
|
cat "$FILENAME") >"${NEW_FILENAME}"
|
||||||
|
mv -f "${NEW_FILENAME}" "$FILENAME"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Remove formatted manual pages.
|
||||||
|
find . -type f -name "*.man" -delete
|
||||||
|
|
||||||
|
# Rename unformatted manual pages.
|
||||||
|
find . -type f -name "*.nro" -print |
|
||||||
|
while read FILENAME
|
||||||
|
do
|
||||||
|
mv "$FILENAME" "${FILENAME%.nro}.1"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Determine the version number.
|
||||||
|
VERSION=$(sed -n -e 's#char version\[\] = "\(.*\)";#\1#p' version.c)
|
||||||
|
|
||||||
|
# Print out information for the import.
|
||||||
|
cat <<EOF
|
||||||
|
You can import now.
|
||||||
|
|
||||||
|
Path: src/external/bsd/less/dist
|
||||||
|
Vendortag: GREENWOODSOFTWARE
|
||||||
|
Releasetag: LESS-$VERSION
|
||||||
|
EOF
|
||||||
|
|
||||||
|
exit 0
|
|
@ -50,6 +50,7 @@
|
||||||
2013/07/15 12:00:00,external/bsd/kyua-atf-compat
|
2013/07/15 12:00:00,external/bsd/kyua-atf-compat
|
||||||
2013/07/15 12:00:00,external/bsd/kyua-cli
|
2013/07/15 12:00:00,external/bsd/kyua-cli
|
||||||
2013/07/15 12:00:00,external/bsd/kyua-testers
|
2013/07/15 12:00:00,external/bsd/kyua-testers
|
||||||
|
2012/10/17 12:00:00,external/bsd/less
|
||||||
2012/10/17 12:00:00,external/bsd/libarchive
|
2012/10/17 12:00:00,external/bsd/libarchive
|
||||||
2013/07/15 12:00:00,external/bsd/lutok
|
2013/07/15 12:00:00,external/bsd/lutok
|
||||||
2012/10/17 12:00:00,external/bsd/Makefile
|
2012/10/17 12:00:00,external/bsd/Makefile
|
||||||
|
|
Loading…
Reference in a new issue