diff options
Diffstat (limited to 'contrib/less')
59 files changed, 2216 insertions, 1334 deletions
diff --git a/contrib/less/LICENSE b/contrib/less/LICENSE index 376b8c8bed74..832ca1b37075 100644 --- a/contrib/less/LICENSE +++ b/contrib/less/LICENSE @@ -2,7 +2,7 @@ ------------ Less -Copyright (C) 1984-2015 Mark Nudelman +Copyright (C) 1984-2016 Mark Nudelman Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions diff --git a/contrib/less/NEWS b/contrib/less/NEWS index 43f1247377a2..e8bb6efc0019 100644 --- a/contrib/less/NEWS +++ b/contrib/less/NEWS @@ -11,6 +11,40 @@ ====================================================================== + Major changes between "less" versions 487 and 491 + +* Don't output terminal init sequence if using -F and file fits on one screen. + +* Use ANSI prototypes in funcs.h declarations. + +* Fix some const mismatches. + +* Remove "register" in variable declarations. + +* Fix some memory leaks. + +====================================================================== + + Major changes between "less" versions 481 and 487 + +* New commands ESC-{ and ESC-} to shift to start/end of displayed lines. + +* Make search highlights work correctly when changing caselessness with -i. + +* New option -Da in Windows version to enable SGR mode. + +* Fix "nothing to search" error when top or bottom line on screen is empty. + +* Fix bug when terminal has no "cm" termcap entry. + +* Fix incorrect display when entering double-width chars in search string. + +* Fix bug in Unicode handling that missed some double width characters. + +* Update Unicode database to 9.0.0. + +====================================================================== + Major changes between "less" versions 458 and 481 * Don't overwrite history file; just append to it. diff --git a/contrib/less/README b/contrib/less/README index 10884310fa26..a0f8a3ae94cc 100644 --- a/contrib/less/README +++ b/contrib/less/README @@ -7,9 +7,9 @@ ************************************************************************** ************************************************************************** - Less, version 481 + Less, version 491 - This is the distribution of less, version 481, released 31 Aug 2015. + This is the distribution of less, version 491, released 07 Apr 2017. This program is part of the GNU project (http://www.gnu.org). This program is free software. You may redistribute it and/or diff --git a/contrib/less/brac.c b/contrib/less/brac.c index 298a313126eb..44f240361cbd 100644 --- a/contrib/less/brac.c +++ b/contrib/less/brac.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -24,14 +24,18 @@ * "close bracket" are given. */ public void -match_brac(int obrac, int cbrac, int forwdir, int n) +match_brac(obrac, cbrac, forwdir, n) + int obrac; + int cbrac; + int forwdir; + int n; { int c; int nest; POSITION pos; - int (*chget)(void); + int (*chget)(); - extern int ch_forw_get(void), ch_back_get(void); + extern int ch_forw_get(), ch_back_get(); /* * Seek to the line containing the open bracket. diff --git a/contrib/less/ch.c b/contrib/less/ch.c index bffd75ee8c84..0fc65aca2848 100644 --- a/contrib/less/ch.c +++ b/contrib/less/ch.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -144,7 +144,7 @@ static int ch_addbuf(); * Get the character pointed to by the read pointer. */ int -ch_get(void) +ch_get() { struct buf *bp; struct bufnode *bn; @@ -378,7 +378,8 @@ ch_get(void) * a single char onto an input file descriptor. */ public void -ch_ungetchar(int c) +ch_ungetchar(c) + int c; { if (c != -1 && ch_ungotchar != -1) error("ch_ungetchar overrun", NULL_PARG); @@ -391,7 +392,7 @@ ch_ungetchar(int c) * If we haven't read all of standard input into it, do that now. */ public void -end_logfile(void) +end_logfile() { static int tried = FALSE; @@ -416,7 +417,7 @@ end_logfile(void) * Write all the existing buffered data to the log file. */ public void -sync_logfile(void) +sync_logfile() { struct buf *bp; struct bufnode *bn; @@ -453,7 +454,8 @@ sync_logfile(void) * Determine if a specific block is currently in one of the buffers. */ static int -buffered(BLOCKNUM block) +buffered(block) + BLOCKNUM block; { struct buf *bp; struct bufnode *bn; @@ -474,7 +476,8 @@ buffered(BLOCKNUM block) * Return 0 if successful, non-zero if can't seek there. */ public int -ch_seek(POSITION pos) +ch_seek(pos) + POSITION pos; { BLOCKNUM new_block; POSITION len; @@ -512,7 +515,7 @@ ch_seek(POSITION pos) * Seek to the end of the file. */ public int -ch_end_seek(void) +ch_end_seek() { POSITION len; @@ -539,7 +542,7 @@ ch_end_seek(void) * Seek to the last position in the file that is currently buffered. */ public int -ch_end_buffer_seek(void) +ch_end_buffer_seek() { struct buf *bp; struct bufnode *bn; @@ -567,7 +570,7 @@ ch_end_buffer_seek(void) * beginning of the pipe is no longer buffered. */ public int -ch_beg_seek(void) +ch_beg_seek() { struct bufnode *bn; struct bufnode *firstbn; @@ -599,7 +602,7 @@ ch_beg_seek(void) * Return the length of the file, if known. */ public POSITION -ch_length(void) +ch_length() { if (thisfile == NULL) return (NULL_POSITION); @@ -616,7 +619,7 @@ ch_length(void) * Return the current position in the file. */ public POSITION -ch_tell(void) +ch_tell() { if (thisfile == NULL) return (NULL_POSITION); @@ -627,7 +630,7 @@ ch_tell(void) * Get the current char and post-increment the read pointer. */ public int -ch_forw_get(void) +ch_forw_get() { int c; @@ -650,7 +653,7 @@ ch_forw_get(void) * Pre-decrement the read pointer and get the new current char. */ public int -ch_back_get(void) +ch_back_get() { if (thisfile == NULL) return (EOI); @@ -673,7 +676,8 @@ ch_back_get(void) * bufspace is in units of 1024 bytes. -1 mean no limit. */ public void -ch_setbufspace(int bufspace) +ch_setbufspace(bufspace) + int bufspace; { if (bufspace < 0) maxbufs = -1; @@ -689,7 +693,7 @@ ch_setbufspace(int bufspace) * Flush (discard) any saved file state, including buffer contents. */ public void -ch_flush(void) +ch_flush() { struct bufnode *bn; @@ -756,7 +760,7 @@ ch_flush(void) * The buffer is added to the tail of the buffer chain. */ static int -ch_addbuf(void) +ch_addbuf() { struct buf *bp; struct bufnode *bn; @@ -781,7 +785,7 @@ ch_addbuf(void) * */ static void -init_hashtbl(void) +init_hashtbl() { int h; @@ -796,7 +800,7 @@ init_hashtbl(void) * Delete all buffers for this file. */ static void -ch_delbufs(void) +ch_delbufs() { struct bufnode *bn; @@ -814,7 +818,8 @@ ch_delbufs(void) * Is it possible to seek on a file descriptor? */ public int -seekable(int f) +seekable(f) + int f; { #if MSDOS_COMPILER extern int fd0; @@ -835,7 +840,7 @@ seekable(int f) * This is used after an ignore_eof read, during which the EOF may change. */ public void -ch_set_eof(void) +ch_set_eof() { ch_fsize = ch_fpos; } @@ -845,7 +850,9 @@ ch_set_eof(void) * Initialize file state for a new file. */ public void -ch_init(int f, int flags) +ch_init(f, flags) + int f; + int flags; { /* * See if we already have a filestate for this file. @@ -884,7 +891,7 @@ ch_init(int f, int flags) * Close a filestate. */ public void -ch_close(void) +ch_close() { int keepstate = FALSE; @@ -927,7 +934,7 @@ ch_close(void) * Return ch_flags for the current file. */ public int -ch_getflags(void) +ch_getflags() { if (thisfile == NULL) return (0); diff --git a/contrib/less/charset.c b/contrib/less/charset.c index db7e848f0c87..7aec0ea140e8 100644 --- a/contrib/less/charset.c +++ b/contrib/less/charset.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -64,6 +64,8 @@ struct cs_alias { char *oname; } cs_aliases[] = { { "UTF-8", "utf-8" }, + { "utf8", "utf-8" }, + { "UTF8", "utf-8" }, { "ANSI_X3.4-1968", "ascii" }, { "US-ASCII", "ascii" }, { "latin1", "iso8859" }, @@ -130,7 +132,8 @@ public int binattr = AT_STANDOUT; * c control character */ static void -ichardef(char *s) +ichardef(s) + char *s; { char *cp; int n; @@ -186,7 +189,9 @@ ichardef(char *s) * The valid charset names are listed in the "charsets" array. */ static int -icharset(char *name, int no_error) +icharset(name, no_error) + char *name; + int no_error; { struct charset *p; struct cs_alias *a; @@ -227,7 +232,7 @@ icharset(char *name, int no_error) * Define a charset, given a locale name. */ static void -ilocale(void) +ilocale() { int c; @@ -247,7 +252,10 @@ ilocale(void) * Define the printing format for control (or binary utf) chars. */ static void -setbinfmt(char *s, char **fmtvarptr, char *default_fmt) +setbinfmt(s, fmtvarptr, default_fmt) + char *s; + char **fmtvarptr; + char *default_fmt; { if (s && utf_mode) { @@ -293,7 +301,7 @@ setbinfmt(char *s, char **fmtvarptr, char *default_fmt) * */ static void -set_charset(void) +set_charset() { char *s; @@ -364,7 +372,7 @@ set_charset(void) * Initialize charset data structures. */ public void -init_charset(void) +init_charset() { char *s; @@ -385,7 +393,8 @@ init_charset(void) * Is a given character a "binary" character? */ public int -binary_char(LWCHAR c) +binary_char(c) + LWCHAR c; { if (utf_mode) return (is_ubin_char(c)); @@ -397,7 +406,8 @@ binary_char(LWCHAR c) * Is a given character a "control" character? */ public int -control_char(LWCHAR c) +control_char(c) + LWCHAR c; { c &= 0377; return (chardef[c] & IS_CONTROL_CHAR); @@ -408,7 +418,8 @@ control_char(LWCHAR c) * For example, in the "ascii" charset '\3' is printed as "^C". */ public char * -prchar(LWCHAR c) +prchar(c) + LWCHAR c; { /* {{ This buffer can be overrun if LESSBINFMT is a long string. }} */ static char buf[32]; @@ -443,7 +454,8 @@ prchar(LWCHAR c) * Return the printable form of a UTF-8 character. */ public char * -prutfchar(LWCHAR ch) +prutfchar(ch) + LWCHAR ch; { static char buf[32]; @@ -473,7 +485,8 @@ prutfchar(LWCHAR ch) * Get the length of a UTF-8 character in bytes. */ public int -utf_len(char ch) +utf_len(ch) + unsigned char ch; { if ((ch & 0x80) == 0) return 1; @@ -495,15 +508,18 @@ utf_len(char ch) * Does the parameter point to the lead byte of a well-formed UTF-8 character? */ public int -is_utf8_well_formed(unsigned char *s, int slen) +is_utf8_well_formed(ss, slen) + char *ss; + int slen; { int i; int len; + unsigned char *s = (unsigned char *) ss; if (IS_UTF8_INVALID(s[0])) return (0); - len = utf_len((char) s[0]); + len = utf_len(s[0]); if (len > slen) return (0); if (len == 1) @@ -530,14 +546,16 @@ is_utf8_well_formed(unsigned char *s, int slen) * Return number of invalid UTF-8 sequences found in a buffer. */ public int -utf_bin_count(unsigned char *data, int len) +utf_bin_count(data, len) + char *data; + int len; { int bin_count = 0; while (len > 0) { if (is_utf8_well_formed(data, len)) { - int clen = utf_len(*data); + int clen = utf_len(*data & 0377); data += clen; len -= clen; } else @@ -547,7 +565,7 @@ utf_bin_count(unsigned char *data, int len) do { ++data; --len; - } while (len > 0 && !IS_UTF8_LEAD(*data)); + } while (len > 0 && !IS_UTF8_LEAD(*data & 0377)); } } return (bin_count); @@ -557,7 +575,8 @@ utf_bin_count(unsigned char *data, int len) * Get the value of a UTF-8 character. */ public LWCHAR -get_wchar(constant char *p) +get_wchar(p) + constant char *p; { switch (utf_len(p[0])) { @@ -608,7 +627,9 @@ get_wchar(constant char *p) * Store a character into a UTF-8 string. */ public void -put_wchar(char **pp, LWCHAR ch) +put_wchar(pp, ch) + char **pp; + LWCHAR ch; { if (!utf_mode || ch < 0x80) { @@ -656,11 +677,14 @@ put_wchar(char **pp, LWCHAR ch) * Step forward or backward one character in a string. */ public LWCHAR -step_char(constant char **pp, signed int dir, constant char *limit) +step_char(pp, dir, limit) + char **pp; + signed int dir; + constant char *limit; { LWCHAR ch; int len; - constant char *p = *pp; + char *p = *pp; if (!utf_mode) { @@ -675,7 +699,7 @@ step_char(constant char **pp, signed int dir, constant char *limit) if (p + len > limit) { ch = 0; - p = limit; + p = (char *) limit; } else { ch = get_wchar(p); @@ -723,7 +747,9 @@ static struct wchar_range comb_table[] = { static int -is_in_table(LWCHAR ch, struct wchar_range_table *table) +is_in_table(ch, table) + LWCHAR ch; + struct wchar_range_table *table; { int hi; int lo; @@ -751,7 +777,8 @@ is_in_table(LWCHAR ch, struct wchar_range_table *table) * If a composing character follows any char, the two combine into one glyph. */ public int -is_composing_char(LWCHAR ch) +is_composing_char(ch) + LWCHAR ch; { return is_in_table(ch, &compose_table); } @@ -760,7 +787,8 @@ is_composing_char(LWCHAR ch) * Should this UTF-8 character be treated as binary? */ public int -is_ubin_char(LWCHAR ch) +is_ubin_char(ch) + LWCHAR ch; { return is_in_table(ch, &ubin_table); } @@ -769,7 +797,8 @@ is_ubin_char(LWCHAR ch) * Is this a double width UTF-8 character? */ public int -is_wide_char(LWCHAR ch) +is_wide_char(ch) + LWCHAR ch; { return is_in_table(ch, &wide_table); } @@ -780,7 +809,9 @@ is_wide_char(LWCHAR ch) * a specific char (not any char), the two combine into one glyph. */ public int -is_combining_char(LWCHAR ch1, LWCHAR ch2) +is_combining_char(ch1, ch2) + LWCHAR ch1; + LWCHAR ch2; { /* The table is small; use linear search. */ int i; diff --git a/contrib/less/charset.h b/contrib/less/charset.h index bb1e4376cbd5..1e3f0691069a 100644 --- a/contrib/less/charset.h +++ b/contrib/less/charset.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. diff --git a/contrib/less/cmd.h b/contrib/less/cmd.h index 8a943d1522dc..0c221b83459a 100644 --- a/contrib/less/cmd.h +++ b/contrib/less/cmd.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -67,6 +67,8 @@ #define A_FILTER 55 #define A_F_UNTIL_HILITE 56 #define A_GOEND_BUF 57 +#define A_LLSHIFT 58 +#define A_RRSHIFT 59 #define A_INVALID 100 #define A_NOACTION 101 diff --git a/contrib/less/cmdbuf.c b/contrib/less/cmdbuf.c index 9631e18daafe..3df0bac3d8d2 100644 --- a/contrib/less/cmdbuf.c +++ b/contrib/less/cmdbuf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -32,7 +32,7 @@ static int literal; /* Next input char should not be interpreted */ static int updown_match = -1; /* Prefix length in up/down movement */ #if TAB_COMPLETE_FILENAME -static int cmd_complete(int action); +static int cmd_complete(); /* * These variables are statics used by cmd_complete. */ @@ -76,25 +76,25 @@ struct mlist */ struct mlist mlist_search = { &mlist_search, &mlist_search, &mlist_search, NULL, 0 }; -public void * constant ml_search = (void *) &mlist_search; +public void *ml_search = (void *) &mlist_search; struct mlist mlist_examine = { &mlist_examine, &mlist_examine, &mlist_examine, NULL, 0 }; -public void * constant ml_examine = (void *) &mlist_examine; +public void *ml_examine = (void *) &mlist_examine; #if SHELL_ESCAPE || PIPEC struct mlist mlist_shell = { &mlist_shell, &mlist_shell, &mlist_shell, NULL, 0 }; -public void * constant ml_shell = (void *) &mlist_shell; +public void *ml_shell = (void *) &mlist_shell; #endif #else /* CMD_HISTORY */ /* If CMD_HISTORY is off, these are just flags. */ -public void * constant ml_search = (void *)1; -public void * constant ml_examine = (void *)2; +public void *ml_search = (void *)1; +public void *ml_examine = (void *)2; #if SHELL_ESCAPE || PIPEC -public void * constant ml_shell = (void *)3; +public void *ml_shell = (void *)3; #endif #endif /* CMD_HISTORY */ @@ -114,7 +114,7 @@ static int cmd_mbc_buf_index; * Reset command buffer (to empty). */ public void -cmd_reset(void) +cmd_reset() { cp = cmdbuf; *cp = '\0'; @@ -129,7 +129,7 @@ cmd_reset(void) * Clear command line. */ public void -clear_cmd(void) +clear_cmd() { cmd_col = prompt_col = 0; cmd_mbc_buf_len = 0; @@ -140,28 +140,27 @@ clear_cmd(void) * Display a string, usually as a prompt for input into the command buffer. */ public void -cmd_putstr(constant char *s) +cmd_putstr(s) + constant char *s; { LWCHAR prev_ch = 0; LWCHAR ch; constant char *endline = s + strlen(s); while (*s != '\0') { - constant char *ns = s; + char *ns = (char *) s; + int width; ch = step_char(&ns, +1, endline); while (s < ns) putchr(*s++); if (!utf_mode) - { - cmd_col++; - prompt_col++; - } else if (!is_composing_char(ch) && - !is_combining_char(prev_ch, ch)) - { - int width = is_wide_char(ch) ? 2 : 1; - cmd_col += width; - prompt_col += width; - } + width = 1; + else if (is_composing_char(ch) || is_combining_char(prev_ch, ch)) + width = 0; + else + width = is_wide_char(ch) ? 2 : 1; + cmd_col += width; + prompt_col += width; prev_ch = ch; } } @@ -170,10 +169,10 @@ cmd_putstr(constant char *s) * How many characters are in the command buffer? */ public int -len_cmdbuf(void) +len_cmdbuf() { - constant char *s = cmdbuf; - constant char *endline = s + strlen(s); + char *s = cmdbuf; + char *endline = s + strlen(s); int len = 0; while (*s != '\0') @@ -186,63 +185,44 @@ len_cmdbuf(void) /* * Common part of cmd_step_right() and cmd_step_left(). + * {{ Returning pwidth and bswidth separately is a historical artifact + * since they're always the same. Maybe clean this up someday. }} */ static char * -cmd_step_common(constant char *p, LWCHAR ch, int len, int *pwidth, int *bswidth) +cmd_step_common(p, ch, len, pwidth, bswidth) + char *p; + LWCHAR ch; + int len; + int *pwidth; + int *bswidth; { char *pr; + int width; if (len == 1) { pr = prchar((int) ch); - if (pwidth != NULL || bswidth != NULL) - { - int len = (int) strlen(pr); - if (pwidth != NULL) - *pwidth = len; - if (bswidth != NULL) - *bswidth = len; - } + width = (int) strlen(pr); } else { pr = prutfchar(ch); - if (pwidth != NULL || bswidth != NULL) + if (is_composing_char(ch)) + width = 0; + else if (is_ubin_char(ch)) + width = (int) strlen(pr); + else { - if (is_composing_char(ch)) - { - if (pwidth != NULL) - *pwidth = 0; - if (bswidth != NULL) - *bswidth = 0; - } else if (is_ubin_char(ch)) - { - int len = (int) strlen(pr); - if (pwidth != NULL) - *pwidth = len; - if (bswidth != NULL) - *bswidth = len; - } else - { - LWCHAR prev_ch = step_char(&p, -1, cmdbuf); - if (is_combining_char(prev_ch, ch)) - { - if (pwidth != NULL) - *pwidth = 0; - if (bswidth != NULL) - *bswidth = 0; - } else - { - if (pwidth != NULL) - *pwidth = is_wide_char(ch) - ? 2 - : 1; - if (bswidth != NULL) - *bswidth = 1; - } - } + LWCHAR prev_ch = step_char(&p, -1, cmdbuf); + if (is_combining_char(prev_ch, ch)) + width = 0; + else + width = is_wide_char(ch) ? 2 : 1; } } - + if (pwidth != NULL) + *pwidth = width; + if (bswidth != NULL) + *bswidth = width; return (pr); } @@ -250,10 +230,13 @@ cmd_step_common(constant char *p, LWCHAR ch, int len, int *pwidth, int *bswidth) * Step a pointer one character right in the command buffer. */ static char * -cmd_step_right(char **pp, int *pwidth, int *bswidth) +cmd_step_right(pp, pwidth, bswidth) + char **pp; + int *pwidth; + int *bswidth; { char *p = *pp; - LWCHAR ch = step_char((constant char **)pp, +1, p + strlen(p)); + LWCHAR ch = step_char(pp, +1, p + strlen(p)); return cmd_step_common(p, ch, *pp - p, pwidth, bswidth); } @@ -262,10 +245,13 @@ cmd_step_right(char **pp, int *pwidth, int *bswidth) * Step a pointer one character left in the command buffer. */ static char * -cmd_step_left(char **pp, int *pwidth, int *bswidth) +cmd_step_left(pp, pwidth, bswidth) + char **pp; + int *pwidth; + int *bswidth; { char *p = *pp; - LWCHAR ch = step_char((constant char **)pp, -1, cmdbuf); + LWCHAR ch = step_char(pp, -1, cmdbuf); return cmd_step_common(*pp, ch, p - *pp, pwidth, bswidth); } @@ -275,7 +261,8 @@ cmd_step_left(char **pp, int *pwidth, int *bswidth) * Then position the cursor just after the char old_cp (a pointer into cmdbuf). */ static void -cmd_repaint(char *old_cp) +cmd_repaint(old_cp) + constant char *old_cp; { /* * Repaint the line from the current position. @@ -285,7 +272,7 @@ cmd_repaint(char *old_cp) { char *np = cp; int width; - constant char *pr = cmd_step_right(&np, &width, NULL); + char *pr = cmd_step_right(&np, &width, NULL); if (cmd_col + width >= sc_width) break; cp = np; @@ -315,7 +302,7 @@ cmd_repaint(char *old_cp) * and set cp to the corresponding char in cmdbuf. */ static void -cmd_home(void) +cmd_home() { while (cmd_col > prompt_col) { @@ -334,7 +321,7 @@ cmd_home(void) * Shift the cmdbuf display left a half-screen. */ static void -cmd_lshift(void) +cmd_lshift() { char *s; char *save_cp; @@ -372,7 +359,7 @@ cmd_lshift(void) * Shift the cmdbuf display right a half-screen. */ static void -cmd_rshift(void) +cmd_rshift() { char *s; char *save_cp; @@ -402,7 +389,7 @@ cmd_rshift(void) * Move cursor right one character. */ static int -cmd_right(void) +cmd_right() { char *pr; char *ncp; @@ -437,7 +424,7 @@ cmd_right(void) * Move cursor left one character. */ static int -cmd_left(void) +cmd_left() { char *ncp; int width, bswidth; @@ -467,7 +454,9 @@ cmd_left(void) * Insert a char into the command buffer, at the current position. */ static int -cmd_ichar(char *cs, int clen) +cmd_ichar(cs, clen) + char *cs; + int clen; { char *s; @@ -502,7 +491,7 @@ cmd_ichar(char *cs, int clen) * Delete the char to the left of the cursor. */ static int -cmd_erase(void) +cmd_erase() { char *s; int clen; @@ -551,7 +540,7 @@ cmd_erase(void) * Delete the char under the cursor. */ static int -cmd_delete(void) +cmd_delete() { if (*cp == '\0') { @@ -570,7 +559,7 @@ cmd_delete(void) * Delete the "word" to the left of the cursor. */ static int -cmd_werase(void) +cmd_werase() { if (cp > cmdbuf && cp[-1] == ' ') { @@ -596,7 +585,7 @@ cmd_werase(void) * Delete the "word" under the cursor. */ static int -cmd_wdelete(void) +cmd_wdelete() { if (*cp == ' ') { @@ -622,7 +611,7 @@ cmd_wdelete(void) * Delete all chars in the command buffer. */ static int -cmd_kill(void) +cmd_kill() { if (cmdbuf[0] == '\0') { @@ -648,7 +637,9 @@ cmd_kill(void) * Select an mlist structure to be the current command history. */ public void -set_mlist(constant void *mlist, int cmdflags) +set_mlist(mlist, cmdflags) + void *mlist; + int cmdflags; { #if CMD_HISTORY curr_mlist = (struct mlist *) mlist; @@ -667,9 +658,10 @@ set_mlist(constant void *mlist, int cmdflags) * cmdbuf's corresponding chars. */ static int -cmd_updown(int action) +cmd_updown(action) + int action; { - char *s; + constant char *s; struct mlist *ml; if (curr_mlist == NULL) @@ -729,7 +721,10 @@ cmd_updown(int action) * Add a string to an mlist. */ public void -cmd_addhist(struct mlist *constant mlist, char *cmd, int modified) +cmd_addhist(mlist, cmd, modified) + struct mlist *mlist; + constant char *cmd; + int modified; { #if CMD_HISTORY struct mlist *ml; @@ -772,7 +767,7 @@ cmd_addhist(struct mlist *constant mlist, char *cmd, int modified) * Add it to the currently selected history list. */ public void -cmd_accept(void) +cmd_accept() { #if CMD_HISTORY /* @@ -794,7 +789,8 @@ cmd_accept(void) * CC_QUIT The char requests the current command to be aborted. */ static int -cmd_edit(int c) +cmd_edit(c) + int c; { int action; int flags; @@ -909,7 +905,8 @@ cmd_edit(int c) * Insert a string into the command buffer, at the current position. */ static int -cmd_istr(char *str) +cmd_istr(str) + char *str; { char *s; int action; @@ -918,7 +915,7 @@ cmd_istr(char *str) for (s = str; *s != '\0'; ) { char *os = s; - step_char((constant char **)&s, +1, endline); + step_char(&s, +1, endline); action = cmd_ichar(os, s - os); if (action != CC_OK) { @@ -936,14 +933,14 @@ cmd_istr(char *str) * cursor at the end of the word. */ static char * -delimit_word(void) +delimit_word() { char *word; #if SPACES_IN_FILENAMES char *p; int delim_quoted = 0; int meta_quoted = 0; - char *esc = get_meta_escape(); + constant char *esc = get_meta_escape(); int esclen = (int) strlen(esc); #endif @@ -1023,7 +1020,7 @@ delimit_word(void) * which start with that word, and set tk_text to that list. */ static void -init_compl(void) +init_compl() { char *word; char c; @@ -1086,7 +1083,9 @@ init_compl(void) * Return the next word in the current completion list. */ static char * -next_compl(int action, char *prev) +next_compl(action, prev) + int action; + char *prev; { switch (action) { @@ -1106,7 +1105,8 @@ next_compl(int action, char *prev) * or a subsequent time (step thru the list). */ static int -cmd_complete(int action) +cmd_complete(action) + int action; { char *s; @@ -1203,7 +1203,8 @@ fail: * CC_ERROR The char could not be accepted due to an error. */ public int -cmd_char(int c) +cmd_char(c) + int c; { int action; int len; @@ -1292,7 +1293,8 @@ cmd_char(int c) * Return the number currently in the command buffer. */ public LINENUM -cmd_int(long *frac) +cmd_int(frac) + long *frac; { char *p; LINENUM n = 0; @@ -1313,7 +1315,7 @@ cmd_int(long *frac) * Return a pointer to the command buffer. */ public char * -get_cmdbuf(void) +get_cmdbuf() { return (cmdbuf); } @@ -1323,7 +1325,7 @@ get_cmdbuf(void) * Return the last (most recent) string in the current command history. */ public char * -cmd_lastpattern(void) +cmd_lastpattern() { if (curr_mlist == NULL) return (NULL); @@ -1335,7 +1337,8 @@ cmd_lastpattern(void) /* */ static int -mlist_size(struct mlist *ml) +mlist_size(ml) + struct mlist *ml; { int size = 0; for (ml = ml->next; ml->string != NULL; ml = ml->next) @@ -1347,7 +1350,7 @@ mlist_size(struct mlist *ml) * Get the name of the history file. */ static char * -histfile_name(void) +histfile_name() { char *home; char *name; @@ -1387,8 +1390,11 @@ histfile_name(void) * Read a .lesshst file and call a callback for each line in the file. */ static void -read_cmdhist2(void (*action)(void*,struct mlist*,char*), void *uparam, - int skip_search, int skip_shell) +read_cmdhist2(action, uparam, skip_search, skip_shell) + void (*action)(void*,struct mlist*,char*); + void *uparam; + int skip_search; + int skip_shell; { struct mlist *ml = NULL; char line[CMDBUF_SIZE]; @@ -1448,8 +1454,11 @@ read_cmdhist2(void (*action)(void*,struct mlist*,char*), void *uparam, } static void -read_cmdhist(void (*action)(void*,struct mlist*,char*), void *uparam, - int skip_search, int skip_shell) +read_cmdhist(action, uparam, skip_search, skip_shell) + void (*action)(void*,struct mlist*,char*); + void *uparam; + int skip_search; + int skip_shell; { read_cmdhist2(action, uparam, skip_search, skip_shell); (*action)(uparam, NULL, NULL); /* signal end of file */ @@ -1468,7 +1477,7 @@ addhist_init(void *uparam, struct mlist *ml, char *string) * Initialize history from a .lesshist file. */ public void -init_cmdhist(void) +init_cmdhist() { #if CMD_HISTORY read_cmdhist(&addhist_init, NULL, 0, 0); @@ -1480,7 +1489,9 @@ init_cmdhist(void) */ #if CMD_HISTORY static void -write_mlist_header(struct mlist *ml, FILE *f) +write_mlist_header(ml, f) + struct mlist *ml; + FILE *f; { if (ml == &mlist_search) fprintf(f, "%s\n", HISTFILE_SEARCH_SECTION); @@ -1494,7 +1505,9 @@ write_mlist_header(struct mlist *ml, FILE *f) * Write all modified entries in an mlist to the history file. */ static void -write_mlist(struct mlist *ml, FILE *f) +write_mlist(ml, f) + struct mlist *ml; + FILE *f; { for (ml = ml->next; ml->string != NULL; ml = ml->next) { @@ -1510,7 +1523,8 @@ write_mlist(struct mlist *ml, FILE *f) * Make a temp name in the same directory as filename. */ static char * -make_tempname(char *filename) +make_tempname(filename) + char *filename; { char lastch; char *tempname = ecalloc(1, strlen(filename)+1); @@ -1573,7 +1587,8 @@ copy_hist(void *uparam, struct mlist *ml, char *string) * Make a file readable only by its owner. */ static void -make_file_private(FILE *f) +make_file_private(f) + FILE *f; { #if HAVE_FCHMOD int do_chmod = 1; @@ -1593,7 +1608,7 @@ make_file_private(FILE *f) * Does the history file need to be updated? */ static int -histfile_modified(void) +histfile_modified() { if (mlist_search.modified) return 1; @@ -1608,7 +1623,7 @@ histfile_modified(void) * Update the .lesshst file. */ public void -save_cmdhist(void) +save_cmdhist() { #if CMD_HISTORY char *histname; diff --git a/contrib/less/command.c b/contrib/less/command.c index a8fc00753cec..72d7c9d43280 100644 --- a/contrib/less/command.c +++ b/contrib/less/command.c @@ -1,6 +1,6 @@ /* $FreeBSD$ */ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -44,10 +44,10 @@ extern char *curr_altfilename; extern char version[]; extern struct scrpos initial_scrpos; extern IFILE curr_ifile; -extern void constant *ml_search; -extern void constant *ml_examine; +extern void *ml_search; +extern void *ml_examine; #if SHELL_ESCAPE || PIPEC -extern void constant *ml_shell; +extern void *ml_shell; #endif #if EDITOR extern char *editor; @@ -84,7 +84,7 @@ struct ungot { }; static struct ungot* ungot = NULL; -static void multi_search(char *pattern, int n, int silent); +static void multi_search(); /* * Move the cursor to start of prompt line before executing a command. @@ -92,7 +92,7 @@ static void multi_search(char *pattern, int n, int silent); * updating the screen. */ static void -cmd_exec(void) +cmd_exec() { #if HILITE_SEARCH clear_attn(); @@ -105,7 +105,11 @@ cmd_exec(void) * Set up the display to start a new multi-character command. */ static void -start_mca(int action, constant char *prompt, constant void *mlist, int cmdflags) +start_mca(action, prompt, mlist, cmdflags) + int action; + constant char *prompt; + void *mlist; + int cmdflags; { mca = action; clear_bot(); @@ -115,7 +119,7 @@ start_mca(int action, constant char *prompt, constant void *mlist, int cmdflags) } public int -in_mca(void) +in_mca() { return (mca != 0 && mca != A_PREFIX); } @@ -124,7 +128,7 @@ in_mca(void) * Set up the display to start a new search command. */ static void -mca_search(void) +mca_search() { #if HILITE_SEARCH if (search_type & SRCH_FILTER) @@ -167,7 +171,7 @@ mca_search(void) * Set up the display to start a new toggle-option command. */ static void -mca_opt_toggle(void) +mca_opt_toggle() { int no_prompt; int flag; @@ -202,7 +206,7 @@ mca_opt_toggle(void) * Execute a multicharacter command. */ static void -exec_mca(void) +exec_mca() { char *cbuf; @@ -292,7 +296,8 @@ exec_mca(void) * Is a character an erase or kill char? */ static int -is_erase_char(int c) +is_erase_char(c) + int c; { return (c == erase_char || c == erase2_char || c == kill_char); } @@ -301,7 +306,8 @@ is_erase_char(int c) * Handle the first char of an option (after the initial dash). */ static int -mca_opt_first_char(int c) +mca_opt_first_char(c) + int c; { int flag = (optflag & ~OPT_NO_PROMPT); if (flag == OPT_NO_TOGGLE) @@ -352,7 +358,8 @@ mca_opt_first_char(int c) * accepting chars until user hits RETURN. */ static int -mca_opt_nonfirst_char(int c) +mca_opt_nonfirst_char(c) + int c; { char *p; char *oname; @@ -401,7 +408,8 @@ mca_opt_nonfirst_char(int c) * Handle a char of an option toggle command. */ static int -mca_opt_char(int c) +mca_opt_char(c) + int c; { PARG parg; @@ -466,7 +474,8 @@ mca_opt_char(int c) * Handle a char of a search command. */ static int -mca_search_char(int c) +mca_search_char(c) + int c; { int flag = 0; @@ -522,7 +531,8 @@ mca_search_char(int c) * Handle a character of a multi-character command. */ static int -mca_char(int c) +mca_char(c) + int c; { int ret; @@ -624,7 +634,7 @@ mca_char(int c) * Discard any buffered file data. */ static void -clear_buffers(void) +clear_buffers() { if (!(ch_getflags() & CH_CANSEEK)) return; @@ -639,7 +649,7 @@ clear_buffers(void) * Make sure the screen is displayed. */ static void -make_display(void) +make_display() { /* * If nothing is displayed yet, display starting from initial_scrpos. @@ -679,7 +689,7 @@ make_display(void) * Display the appropriate prompt. */ static void -prompt(void) +prompt() { constant char *p; @@ -756,7 +766,7 @@ prompt(void) * Display the less version message. */ public void -dispversion(void) +dispversion() { PARG parg; @@ -771,7 +781,7 @@ dispversion(void) * (characters previously given to ungetcc or ungetsc). */ public int -getcc(void) +getcc() { if (ungot == NULL) { @@ -826,7 +836,8 @@ getcc(void) * The next getcc() will return this character. */ public void -ungetcc(int c) +ungetcc(c) + int c; { struct ungot *ug = (struct ungot *) ecalloc(1, sizeof(struct ungot)); @@ -841,7 +852,8 @@ ungetcc(int c) * The next sequence of getcc()'s will return this string. */ public void -ungetsc(char *s) +ungetsc(s) + char *s; { char *p; @@ -855,7 +867,10 @@ ungetsc(char *s) * If SRCH_PAST_EOF is set, continue the search thru multiple files. */ static void -multi_search(char *pattern, int n, int silent) +multi_search(pattern, n, silent) + char *pattern; + int n; + int silent; { int nomore; IFILE save_ifile; @@ -949,7 +964,8 @@ multi_search(char *pattern, int n, int silent) * Forward forever, or until a highlighted line appears. */ static int -forw_loop(int until_hilite) +forw_loop(until_hilite) + int until_hilite; { POSITION curr_len; @@ -989,7 +1005,7 @@ forw_loop(int until_hilite) * Accept and execute commands until a quit command. */ public void -commands(void) +commands() { int c; int action; @@ -1769,6 +1785,16 @@ commands(void) screen_trashed = 1; break; + case A_LLSHIFT: + hshift = 0; + screen_trashed = 1; + break; + + case A_RRSHIFT: + hshift = rrshift(); + screen_trashed = 1; + break; + case A_PREFIX: /* * The command is incomplete (more chars are needed). diff --git a/contrib/less/compose.uni b/contrib/less/compose.uni index b814ce9916ae..e3e1fa4017eb 100644 --- a/contrib/less/compose.uni +++ b/contrib/less/compose.uni @@ -1,4 +1,4 @@ -/* Generated by "./mkutable -f2 Mn Me -- unicode/UnicodeData.txt" on Mon Jul 14 16:21:21 PDT 2014 */ +/* Generated by "./mkutable -f2 Mn Me -- unicode/UnicodeData.txt" on Tue Sep 20 10:51:43 PDT 2016 */ { 0x0300, 0x036f }, /* Mn */ { 0x0483, 0x0487 }, /* Mn */ { 0x0488, 0x0489 }, /* Me */ @@ -23,7 +23,8 @@ { 0x0825, 0x0827 }, /* Mn */ { 0x0829, 0x082d }, /* Mn */ { 0x0859, 0x085b }, /* Mn */ - { 0x08e4, 0x0902 }, /* Mn */ + { 0x08d4, 0x08e1 }, /* Mn */ + { 0x08e3, 0x0902 }, /* Mn */ { 0x093a, 0x093a }, /* Mn */ { 0x093c, 0x093c }, /* Mn */ { 0x0941, 0x0948 }, /* Mn */ @@ -117,6 +118,7 @@ { 0x17c9, 0x17d3 }, /* Mn */ { 0x17dd, 0x17dd }, /* Mn */ { 0x180b, 0x180d }, /* Mn */ + { 0x1885, 0x1886 }, /* Mn */ { 0x18a9, 0x18a9 }, /* Mn */ { 0x1920, 0x1922 }, /* Mn */ { 0x1927, 0x1928 }, /* Mn */ @@ -156,7 +158,7 @@ { 0x1cf4, 0x1cf4 }, /* Mn */ { 0x1cf8, 0x1cf9 }, /* Mn */ { 0x1dc0, 0x1df5 }, /* Mn */ - { 0x1dfc, 0x1dff }, /* Mn */ + { 0x1dfb, 0x1dff }, /* Mn */ { 0x20d0, 0x20dc }, /* Mn */ { 0x20dd, 0x20e0 }, /* Me */ { 0x20e1, 0x20e1 }, /* Mn */ @@ -170,13 +172,13 @@ { 0xa66f, 0xa66f }, /* Mn */ { 0xa670, 0xa672 }, /* Me */ { 0xa674, 0xa67d }, /* Mn */ - { 0xa69f, 0xa69f }, /* Mn */ + { 0xa69e, 0xa69f }, /* Mn */ { 0xa6f0, 0xa6f1 }, /* Mn */ { 0xa802, 0xa802 }, /* Mn */ { 0xa806, 0xa806 }, /* Mn */ { 0xa80b, 0xa80b }, /* Mn */ { 0xa825, 0xa826 }, /* Mn */ - { 0xa8c4, 0xa8c4 }, /* Mn */ + { 0xa8c4, 0xa8c5 }, /* Mn */ { 0xa8e0, 0xa8f1 }, /* Mn */ { 0xa926, 0xa92d }, /* Mn */ { 0xa947, 0xa951 }, /* Mn */ @@ -203,7 +205,7 @@ { 0xabed, 0xabed }, /* Mn */ { 0xfb1e, 0xfb1e }, /* Mn */ { 0xfe00, 0xfe0f }, /* Mn */ - { 0xfe20, 0xfe2d }, /* Mn */ + { 0xfe20, 0xfe2f }, /* Mn */ { 0x101fd, 0x101fd }, /* Mn */ { 0x102e0, 0x102e0 }, /* Mn */ { 0x10376, 0x1037a }, /* Mn */ @@ -224,16 +226,21 @@ { 0x11173, 0x11173 }, /* Mn */ { 0x11180, 0x11181 }, /* Mn */ { 0x111b6, 0x111be }, /* Mn */ + { 0x111ca, 0x111cc }, /* Mn */ { 0x1122f, 0x11231 }, /* Mn */ { 0x11234, 0x11234 }, /* Mn */ { 0x11236, 0x11237 }, /* Mn */ + { 0x1123e, 0x1123e }, /* Mn */ { 0x112df, 0x112df }, /* Mn */ { 0x112e3, 0x112ea }, /* Mn */ - { 0x11301, 0x11301 }, /* Mn */ + { 0x11300, 0x11301 }, /* Mn */ { 0x1133c, 0x1133c }, /* Mn */ { 0x11340, 0x11340 }, /* Mn */ { 0x11366, 0x1136c }, /* Mn */ { 0x11370, 0x11374 }, /* Mn */ + { 0x11438, 0x1143f }, /* Mn */ + { 0x11442, 0x11444 }, /* Mn */ + { 0x11446, 0x11446 }, /* Mn */ { 0x114b3, 0x114b8 }, /* Mn */ { 0x114ba, 0x114ba }, /* Mn */ { 0x114bf, 0x114c0 }, /* Mn */ @@ -241,6 +248,7 @@ { 0x115b2, 0x115b5 }, /* Mn */ { 0x115bc, 0x115bd }, /* Mn */ { 0x115bf, 0x115c0 }, /* Mn */ + { 0x115dc, 0x115dd }, /* Mn */ { 0x11633, 0x1163a }, /* Mn */ { 0x1163d, 0x1163d }, /* Mn */ { 0x1163f, 0x11640 }, /* Mn */ @@ -248,6 +256,16 @@ { 0x116ad, 0x116ad }, /* Mn */ { 0x116b0, 0x116b5 }, /* Mn */ { 0x116b7, 0x116b7 }, /* Mn */ + { 0x1171d, 0x1171f }, /* Mn */ + { 0x11722, 0x11725 }, /* Mn */ + { 0x11727, 0x1172b }, /* Mn */ + { 0x11c30, 0x11c36 }, /* Mn */ + { 0x11c38, 0x11c3d }, /* Mn */ + { 0x11c3f, 0x11c3f }, /* Mn */ + { 0x11c92, 0x11ca7 }, /* Mn */ + { 0x11caa, 0x11cb0 }, /* Mn */ + { 0x11cb2, 0x11cb3 }, /* Mn */ + { 0x11cb5, 0x11cb6 }, /* Mn */ { 0x16af0, 0x16af4 }, /* Mn */ { 0x16b30, 0x16b36 }, /* Mn */ { 0x16f8f, 0x16f92 }, /* Mn */ @@ -257,5 +275,17 @@ { 0x1d185, 0x1d18b }, /* Mn */ { 0x1d1aa, 0x1d1ad }, /* Mn */ { 0x1d242, 0x1d244 }, /* Mn */ + { 0x1da00, 0x1da36 }, /* Mn */ + { 0x1da3b, 0x1da6c }, /* Mn */ + { 0x1da75, 0x1da75 }, /* Mn */ + { 0x1da84, 0x1da84 }, /* Mn */ + { 0x1da9b, 0x1da9f }, /* Mn */ + { 0x1daa1, 0x1daaf }, /* Mn */ + { 0x1e000, 0x1e006 }, /* Mn */ + { 0x1e008, 0x1e018 }, /* Mn */ + { 0x1e01b, 0x1e021 }, /* Mn */ + { 0x1e023, 0x1e024 }, /* Mn */ + { 0x1e026, 0x1e02a }, /* Mn */ { 0x1e8d0, 0x1e8d6 }, /* Mn */ + { 0x1e944, 0x1e94a }, /* Mn */ { 0xe0100, 0xe01ef }, /* Mn */ diff --git a/contrib/less/cvt.c b/contrib/less/cvt.c index 0c0b08be5600..54473e0c0863 100644 --- a/contrib/less/cvt.c +++ b/contrib/less/cvt.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -20,7 +20,9 @@ extern int utf_mode; * Get the length of a buffer needed to convert a string. */ public int -cvt_length(int len, int ops) +cvt_length(len, ops) + int len; + int ops; { if (utf_mode) /* @@ -36,7 +38,8 @@ cvt_length(int len, int ops) * Allocate a chpos array for use by cvt_text. */ public int * -cvt_alloc_chpos(int len) +cvt_alloc_chpos(len) + int len; { int i; int *chpos = (int *) ecalloc(sizeof(int), len); @@ -52,7 +55,12 @@ cvt_alloc_chpos(int len) * odst character (when it was in osrc) is returned in the chpos array. */ public void -cvt_text(char *odst, char *osrc, int *chpos, int *lenp, int ops) +cvt_text(odst, osrc, chpos, lenp, ops) + char *odst; + char *osrc; + int *chpos; + int *lenp; + int ops; { char *dst; char *edst = odst; @@ -69,7 +77,7 @@ cvt_text(char *odst, char *osrc, int *chpos, int *lenp, int ops) { int src_pos = (int) (src - osrc); int dst_pos = (int) (dst - odst); - ch = step_char((constant char **)&src, +1, src_end); + ch = step_char(&src, +1, src_end); if ((ops & CVT_BS) && ch == '\b' && dst > odst) { /* Delete backspace and preceding char. */ diff --git a/contrib/less/decode.c b/contrib/less/decode.c index 7f857fd52cee..851672a1b0df 100644 --- a/contrib/less/decode.c +++ b/contrib/less/decode.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -94,8 +94,12 @@ static unsigned char cmdtable[] = ESC,']',0, A_RSHIFT, ESC,'(',0, A_LSHIFT, ESC,')',0, A_RSHIFT, + ESC,'{',0, A_LLSHIFT, + ESC,'}',0, A_RRSHIFT, SK(SK_RIGHT_ARROW),0, A_RSHIFT, SK(SK_LEFT_ARROW),0, A_LSHIFT, + SK(SK_CTL_RIGHT_ARROW),0, A_RRSHIFT, + SK(SK_CTL_LEFT_ARROW),0, A_LLSHIFT, '{',0, A_F_BRACKET|A_EXTRA, '{','}',0, '}',0, A_B_BRACKET|A_EXTRA, '{','}',0, '(',0, A_F_BRACKET|A_EXTRA, '(',')',0, @@ -229,7 +233,9 @@ static struct tablelist *list_sysvar_tables = NULL; * Expand special key abbreviations in a command table. */ static void -expand_special_keys(char *table, int len) +expand_special_keys(table, len) + char *table; + int len; { char *fm; char *to; @@ -288,7 +294,7 @@ expand_special_keys(char *table, int len) * Initialize the command lists. */ public void -init_cmds(void) +init_cmds() { /* * Add the default command tables. @@ -318,7 +324,10 @@ init_cmds(void) * Add a command table. */ static int -add_cmd_table(struct tablelist **tlist, char *buf, int len) +add_cmd_table(tlist, buf, len) + struct tablelist **tlist; + char *buf; + int len; { struct tablelist *t; @@ -345,7 +354,9 @@ add_cmd_table(struct tablelist **tlist, char *buf, int len) * Add a command table. */ public void -add_fcmd_table(char *buf, int len) +add_fcmd_table(buf, len) + char *buf; + int len; { if (add_cmd_table(&list_fcmd_tables, buf, len) < 0) error("Warning: some commands disabled", NULL_PARG); @@ -355,7 +366,9 @@ add_fcmd_table(char *buf, int len) * Add an editing command table. */ public void -add_ecmd_table(char *buf, int len) +add_ecmd_table(buf, len) + char *buf; + int len; { if (add_cmd_table(&list_ecmd_tables, buf, len) < 0) error("Warning: some edit commands disabled", NULL_PARG); @@ -365,7 +378,10 @@ add_ecmd_table(char *buf, int len) * Add an environment variable table. */ static void -add_var_table(struct tablelist **tlist, char *buf, int len) +add_var_table(tlist, buf, len) + struct tablelist **tlist; + char *buf; + int len; { if (add_cmd_table(tlist, buf, len) < 0) error("Warning: environment variables from lesskey file unavailable", NULL_PARG); @@ -375,7 +391,11 @@ add_var_table(struct tablelist **tlist, char *buf, int len) * Search a single command table for the command string in cmd. */ static int -cmd_search(char *cmd, char *table, char *endtable, char **sp) +cmd_search(cmd, table, endtable, sp) + char *cmd; + char *table; + char *endtable; + char **sp; { char *p; char *q; @@ -463,7 +483,10 @@ cmd_search(char *cmd, char *table, char *endtable, char **sp) * The "extra" string, if any, is returned in sp. */ static int -cmd_decode(struct tablelist *tlist, char *cmd, char **sp) +cmd_decode(tlist, cmd, sp) + struct tablelist *tlist; + char *cmd; + char **sp; { struct tablelist *t; int action = A_INVALID; @@ -487,7 +510,9 @@ cmd_decode(struct tablelist *tlist, char *cmd, char **sp) * Decode a command from the cmdtables list. */ public int -fcmd_decode(char *cmd, char **sp) +fcmd_decode(cmd, sp) + char *cmd; + char **sp; { return (cmd_decode(list_fcmd_tables, cmd, sp)); } @@ -496,7 +521,9 @@ fcmd_decode(char *cmd, char **sp) * Decode a command from the edittables list. */ public int -ecmd_decode(char *cmd, char **sp) +ecmd_decode(cmd, sp) + char *cmd; + char **sp; { return (cmd_decode(list_ecmd_tables, cmd, sp)); } @@ -506,7 +533,8 @@ ecmd_decode(char *cmd, char **sp) * Looks first in the lesskey file, then in the real environment. */ public char * -lgetenv(char *var) +lgetenv(var) + char *var; { int a; char *s; @@ -530,7 +558,8 @@ lgetenv(char *var) * two bytes, low order first, in radix KRADIX. */ static int -gint(char **sp) +gint(sp) + char **sp; { int n; @@ -543,7 +572,9 @@ gint(char **sp) * Process an old (pre-v241) lesskey file. */ static int -old_lesskey(char *buf, int len) +old_lesskey(buf, len) + char *buf; + int len; { /* * Old-style lesskey file. @@ -562,7 +593,10 @@ old_lesskey(char *buf, int len) * Process a new (post-v241) lesskey file. */ static int -new_lesskey(char *buf, int len, int sysvar) +new_lesskey(buf, len, sysvar) + char *buf; + int len; + int sysvar; { char *p; int c; @@ -613,7 +647,9 @@ new_lesskey(char *buf, int len, int sysvar) * Set up a user command table, based on a "lesskey" file. */ public int -lesskey(char *filename, int sysvar) +lesskey(filename, sysvar) + char *filename; + int sysvar; { char *buf; POSITION len; @@ -681,7 +717,10 @@ lesskey(char *filename, int sysvar) * Add the standard lesskey file "$HOME/.less" */ public void -add_hometable(char *envname, char *def_filename, int sysvar) +add_hometable(envname, def_filename, sysvar) + char *envname; + char *def_filename; + int sysvar; { char *filename; PARG parg; @@ -707,7 +746,9 @@ add_hometable(char *envname, char *def_filename, int sysvar) * See if a char is a special line-editing command. */ public int -editchar(int c, int flags) +editchar(c, flags) + int c; + int flags; { int action; int nch; diff --git a/contrib/less/edit.c b/contrib/less/edit.c index 9a89314ef13d..f2a74a049200 100644 --- a/contrib/less/edit.c +++ b/contrib/less/edit.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -26,7 +26,7 @@ extern int sigs; extern IFILE curr_ifile; extern IFILE old_ifile; extern struct scrpos initial_scrpos; -extern void * constant ml_examine; +extern void *ml_examine; #if SPACES_IN_FILENAMES extern char openquote; extern char closequote; @@ -55,7 +55,9 @@ static void *curr_altpipe; * back_textlist does the same, but runs thru the list backwards. */ public void -init_textlist(struct textlist *tlist, char *str) +init_textlist(tlist, str) + struct textlist *tlist; + char *str; { char *s; #if SPACES_IN_FILENAMES @@ -97,7 +99,9 @@ init_textlist(struct textlist *tlist, char *str) } public char * -forw_textlist(struct textlist *tlist, char *prev) +forw_textlist(tlist, prev) + struct textlist *tlist; + char *prev; { char *s; @@ -119,7 +123,9 @@ forw_textlist(struct textlist *tlist, char *prev) } public char * -back_textlist(struct textlist *tlist, char *prev) +back_textlist(tlist, prev) + struct textlist *tlist; + char *prev; { char *s; @@ -146,7 +152,7 @@ back_textlist(struct textlist *tlist, char *prev) * Close the current input file. */ static void -close_file(void) +close_file() { struct scrpos scrpos; @@ -190,7 +196,8 @@ close_file(void) * Filename == NULL means just close the current file. */ public int -edit(char *filename) +edit(filename) + char *filename; { if (filename == NULL) return (edit_ifile(NULL_IFILE)); @@ -202,7 +209,8 @@ edit(char *filename) * ifile == NULL means just close the current file. */ public int -edit_ifile(IFILE ifile) +edit_ifile(ifile) + IFILE ifile; { int f; int answer; @@ -452,7 +460,8 @@ edit_ifile(IFILE ifile) * Then edit the first one. */ public int -edit_list(char *filelist) +edit_list(filelist) + char *filelist; { IFILE save_ifile; char *good_filename; @@ -509,7 +518,7 @@ edit_list(char *filelist) * Edit the first file in the command line (ifile) list. */ public int -edit_first(void) +edit_first() { curr_ifile = NULL_IFILE; return (edit_next(1)); @@ -519,7 +528,7 @@ edit_first(void) * Edit the last file in the command line (ifile) list. */ public int -edit_last(void) +edit_last() { curr_ifile = NULL_IFILE; return (edit_prev(1)); @@ -530,7 +539,10 @@ edit_last(void) * Edit the n-th next or previous file in the command line (ifile) list. */ static int -edit_istep(IFILE h, int n, int dir) +edit_istep(h, n, dir) + IFILE h; + int n; + int dir; { IFILE next; @@ -569,25 +581,31 @@ edit_istep(IFILE h, int n, int dir) } static int -edit_inext(IFILE h, int n) +edit_inext(h, n) + IFILE h; + int n; { return (edit_istep(h, n, +1)); } public int -edit_next(int n) +edit_next(n) + int n; { return edit_istep(curr_ifile, n, +1); } static int -edit_iprev(IFILE h, int n) +edit_iprev(h, n) + IFILE h; + int n; { return (edit_istep(h, n, -1)); } public int -edit_prev(int n) +edit_prev(n) + int n; { return edit_istep(curr_ifile, n, -1); } @@ -596,7 +614,8 @@ edit_prev(int n) * Edit a specific file in the command line (ifile) list. */ public int -edit_index(int n) +edit_index(n) + int n; { IFILE h; @@ -616,7 +635,7 @@ edit_index(int n) } public IFILE -save_curr_ifile(void) +save_curr_ifile() { if (curr_ifile != NULL_IFILE) hold_ifile(curr_ifile, 1); @@ -624,7 +643,8 @@ save_curr_ifile(void) } public void -unsave_ifile(IFILE save_ifile) +unsave_ifile(save_ifile) + IFILE save_ifile; { if (save_ifile != NULL_IFILE) hold_ifile(save_ifile, -1); @@ -634,7 +654,8 @@ unsave_ifile(IFILE save_ifile) * Reedit the ifile which was previously open. */ public void -reedit_ifile(IFILE save_ifile) +reedit_ifile(save_ifile) + IFILE save_ifile; { IFILE next; IFILE prev; @@ -667,7 +688,7 @@ reedit_ifile(IFILE save_ifile) } public void -reopen_curr_ifile(void) +reopen_curr_ifile() { IFILE save_ifile = save_curr_ifile(); close_file(); @@ -678,7 +699,7 @@ reopen_curr_ifile(void) * Edit standard input. */ public int -edit_stdin(void) +edit_stdin() { if (isatty(fd0)) { @@ -693,7 +714,7 @@ edit_stdin(void) * Used if standard output is not a tty. */ public void -cat_file(void) +cat_file() { int c; @@ -710,7 +731,8 @@ cat_file(void) * We take care not to blindly overwrite an existing file. */ public void -use_logfile(char *filename) +use_logfile(filename) + char *filename; { int exists; int answer; diff --git a/contrib/less/filename.c b/contrib/less/filename.c index 715a96a85a78..a153207ba635 100644 --- a/contrib/less/filename.c +++ b/contrib/less/filename.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -63,7 +63,8 @@ extern char closequote; * Remove quotes around a filename. */ public char * -shell_unquote(char *str) +shell_unquote(str) + char *str; { char *name; char *p; @@ -101,7 +102,7 @@ shell_unquote(char *str) * Get the shell's escape character. */ public char * -get_meta_escape(void) +get_meta_escape() { char *s; @@ -115,7 +116,7 @@ get_meta_escape(void) * Get the characters which the shell considers to be "metacharacters". */ static char * -metachars(void) +metachars() { static char *mchars = NULL; @@ -132,7 +133,8 @@ metachars(void) * Is this a shell metacharacter? */ static int -metachar(char c) +metachar(c) + char c; { return (strchr(metachars(), c) != NULL); } @@ -141,7 +143,8 @@ metachar(char c) * Insert a backslash before each metacharacter in a string. */ public char * -shell_quote(char *s) +shell_quote(s) + char *s; { char *p; char *newstr; @@ -218,7 +221,9 @@ shell_quote(char *s) * Return NULL if the file does not exist in the directory. */ static char * -dirfile(char *dirname, char *filename) +dirfile(dirname, filename) + char *dirname; + char *filename; { char *pathname; char *qpathname; @@ -256,7 +261,8 @@ dirfile(char *dirname, char *filename) * Return the full pathname of the given file in the "home directory". */ public char * -homefile(char *filename) +homefile(filename) + char *filename; { char *pathname; @@ -305,7 +311,8 @@ homefile(char *filename) * {{ This is a lot of work just to support % and #. }} */ public char * -fexpand(char *s) +fexpand(s) + char *s; { char *fr, *to; int n; @@ -400,7 +407,8 @@ fexpand(char *s) * the given string. */ public char * -fcomplete(char *s) +fcomplete(s) + char *s; { char *fpat; char *qs; @@ -459,12 +467,13 @@ fcomplete(char *s) * This is just a guess, and we need not try too hard to make it accurate. */ public int -bin_file(int f) +bin_file(f) + int f; { int n; int bin_count = 0; char data[256]; - constant char* p; + char* p; char* pend; if (!seekable(f)) @@ -503,7 +512,8 @@ bin_file(int f) * Try to determine the size of a file by seeking to the end. */ static POSITION -seek_filesize(int f) +seek_filesize(f) + int f; { off_t spos; @@ -518,7 +528,8 @@ seek_filesize(int f) * Return a pointer to the string in memory. */ static char * -readfd(FILE *fd) +readfd(fd) + FILE *fd; { int len; int ch; @@ -566,7 +577,8 @@ FILE *popen(); * Return a pointer to a pipe connected to the shell command's standard output. */ static FILE * -shellcmd(char *cmd) +shellcmd(cmd) + char *cmd; { FILE *fd; @@ -616,7 +628,8 @@ shellcmd(char *cmd) * Expand a filename, doing any system-specific metacharacter substitutions. */ public char * -lglob(char *filename) +lglob(filename) + char *filename; { char *gfilename; char *ofilename; @@ -805,7 +818,8 @@ lglob(char *filename) * Return a large number if there are any other % escapes besides %s. */ static int -num_pct_s(char *lessopen) +num_pct_s(lessopen) + char *lessopen; { int num = 0; @@ -830,7 +844,10 @@ num_pct_s(char *lessopen) * instead of the file we're about to open. */ public char * -open_altfile(char *filename, int *pf, void **pfd) +open_altfile(filename, pf, pfd) + char *filename; + int *pf; + void **pfd; { #if !HAVE_POPEN return (NULL); @@ -939,7 +956,10 @@ open_altfile(char *filename, int *pf, void **pfd) * Close a replacement file. */ public void -close_altfile(char *altfilename, char *filename, void *pipefd) +close_altfile(altfilename, filename, pipefd) + char *altfilename; + char *filename; + void *pipefd; { #if HAVE_POPEN char *lessclose; @@ -981,7 +1001,8 @@ close_altfile(char *altfilename, char *filename, void *pipefd) * Is the specified file a directory? */ public int -is_dir(char *filename) +is_dir(filename) + char *filename; { int isdir = 0; @@ -1016,7 +1037,8 @@ is_dir(char *filename) * (if it cannot be opened or is a directory, etc.) */ public char * -bad_file(char *filename) +bad_file(filename) + char *filename; { char *m = NULL; @@ -1061,7 +1083,8 @@ bad_file(char *filename) * In Unix, we can stat the file. */ public POSITION -filesize(int f) +filesize(f) + int f; { #if HAVE_STAT struct stat statbuf; @@ -1083,7 +1106,7 @@ filesize(int f) * */ public char * -shell_coption(void) +shell_coption() { return ("-c"); } @@ -1092,7 +1115,8 @@ shell_coption(void) * Return last component of a pathname. */ public char * -last_component(char *name) +last_component(name) + char *name; { char *slash; diff --git a/contrib/less/forwback.c b/contrib/less/forwback.c index 4624f6f0c1ba..9fe0cb07d0e7 100644 --- a/contrib/less/forwback.c +++ b/contrib/less/forwback.c @@ -1,6 +1,6 @@ /* $FreeBSD$ */ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -48,7 +48,7 @@ extern char *tagoption; * Sound the bell to indicate user is trying to move past end of file. */ static void -eof_bell(void) +eof_bell() { if (quiet == NOT_QUIET) bell(); @@ -60,7 +60,7 @@ eof_bell(void) * Check to see if the end of file is currently displayed. */ public int -eof_displayed(void) +eof_displayed() { POSITION pos; @@ -87,7 +87,7 @@ eof_displayed(void) * Check to see if the entire file is currently displayed. */ public int -entire_file_displayed(void) +entire_file_displayed() { POSITION pos; @@ -107,7 +107,7 @@ entire_file_displayed(void) * for the first time. */ public void -squish_check(void) +squish_check() { if (!squished) return; @@ -125,7 +125,12 @@ squish_check(void) * The first real line after the blanks will start at ch_zero(). */ public void -forw(int n, POSITION pos, int force, int only_last, int nblank) +forw(n, pos, force, only_last, nblank) + int n; + POSITION pos; + int force; + int only_last; + int nblank; { int nlines = 0; int do_repaint; @@ -297,7 +302,11 @@ forw(int n, POSITION pos, int force, int only_last, int nblank) * Display n lines, scrolling backward. */ public void -back(int n, POSITION pos, int force, int only_last) +back(n, pos, force, only_last) + int n; + POSITION pos; + int force; + int only_last; { int nlines = 0; int do_repaint; @@ -355,7 +364,10 @@ back(int n, POSITION pos, int force, int only_last) * Start just after the line currently displayed at the bottom of the screen. */ public void -forward(int n, int force, int only_last) +forward(n, force, only_last) + int n; + int force; + int only_last; { POSITION pos; @@ -404,7 +416,10 @@ forward(int n, int force, int only_last) * Start just before the line currently displayed at the top of the screen. */ public void -backward(int n, int force, int only_last) +backward(n, force, only_last) + int n; + int force; + int only_last; { POSITION pos; @@ -424,7 +439,7 @@ backward(int n, int force, int only_last) * top_scroll, as well as back_scroll. */ public int -get_back_scroll(void) +get_back_scroll() { if (no_back_scroll) return (0); @@ -434,3 +449,21 @@ get_back_scroll(void) return (sc_height - 2); return (10000); /* infinity */ } + +/* + * Get line count of file up to the screen height + 1 char + */ + public int +get_line_count() +{ + int nlines; + POSITION pos; + + pos = ch_zero(); + for (nlines = 0; nlines <= sc_height; nlines++) + { + pos = forw_line(pos); + if (pos == NULL_POSITION) break; + } + return nlines; +} diff --git a/contrib/less/funcs.h b/contrib/less/funcs.h index fa8ecc345cdb..1fe28c849474 100644 --- a/contrib/less/funcs.h +++ b/contrib/less/funcs.h @@ -1,302 +1,300 @@ - public char * save (constant char *s); - public VOID_POINTER ecalloc (int count, unsigned int size); - public char * skipsp (char *s); - public char * skipnsp(char *s); - public int sprefix (char *ps, char *s, int uppercase); - public void quit (int status); - public void raw_mode (int on); - public void scrsize (void); - public char * special_key_str (int key); - public void get_term (void); - public void init (void); - public void deinit (void); - public void home (void); - public void add_line (void); - public void remove_top (int n); - public void win32_scroll_up (int n); - public void lower_left (void); - public void line_left (void); - public void check_winch (void); - public void goto_line (int slinenum); - public void vbell (void); - public void bell (void); - public void clear (void); - public void clear_eol (void); - public void clear_bot (void); - public void at_enter (int attr); - public void at_exit (void); - public void at_switch (int attr); - public int is_at_equiv (int attr1, int attr2); - public int apply_at_specials (int attr); - public void backspace (void); - public void putbs (void); - public char WIN32getch (int tty); - public void WIN32setcolors (int fg, int bg); - public void WIN32textout (char *text, int len); - public void match_brac(int obrac, int cbrac, int forwdir, int n); - public void ch_ungetchar (int c); - public void end_logfile (void); - public void sync_logfile (void); - public int ch_seek (POSITION pos); - public int ch_end_seek (void); - public int ch_end_buffer_seek (void); - public int ch_beg_seek (void); - public POSITION ch_length (void); - public POSITION ch_tell (void); - public int ch_forw_get (void); - public int ch_back_get (void); - public void ch_setbufspace (int bufspace); - public void ch_flush (void); - public int seekable (int f); - public void ch_set_eof (void); - public void ch_init (int f, int flags); - public void ch_close (void); - public int ch_getflags (void); -struct filestate; - public void ch_dump (struct filestate *fs); - public void init_charset (void); - public int binary_char (LWCHAR c); - public int control_char (LWCHAR c); - public char * prchar (LWCHAR c); - public char * prutfchar (LWCHAR ch); - public int utf_len (char ch); - public int is_utf8_well_formed (unsigned char *s, int slen); - public int utf_bin_count (unsigned char *data, int len); - public LWCHAR get_wchar (constant char *p); - public void put_wchar (char **pp, LWCHAR ch); - public LWCHAR step_char (constant char **pp, signed int dir, constant char *limit); - public int is_composing_char (LWCHAR ch); - public int is_ubin_char (LWCHAR ch); - public int is_wide_char (LWCHAR ch); - public int is_combining_char (LWCHAR ch1, LWCHAR ch2); - public void cmd_reset (void); - public void clear_cmd (void); - public void cmd_putstr (constant char *s); - public int len_cmdbuf (void); - public void set_mlist (constant void *mlist, int cmdflags); -struct mlist; - public void cmd_addhist (struct mlist *constant mlist, char *cmd, int modified); - public void cmd_accept (void); - public int cmd_char (int c); - public LINENUM cmd_int (long *frac); - public char * get_cmdbuf (void); - public char * cmd_lastpattern (void); - public void init_cmdhist (void); - public void save_cmdhist (void); - public int in_mca (void); - public void dispversion (void); - public int getcc (void); - public void ungetcc (int c); - public void ungetsc (char *s); - public void commands (void); - public int cvt_length (int len, int ops); - public int * cvt_alloc_chpos (int len); - public void cvt_text (char *odst, char *osrc, int *chpos, int *lenp, int ops); - public void init_cmds (void); - public void add_fcmd_table (char *buf, int len); - public void add_ecmd_table (char *buf, int len); - public int fcmd_decode (char *cmd, char **sp); - public int ecmd_decode (char *cmd, char **sp); - public char * lgetenv (char *var); - public int lesskey (char *filename, int sysvar); - public void add_hometable (char *envname, char *def_filename, int sysvar); - public int editchar (int c, int flags); - public void init_textlist (struct textlist *tlist, char *str); - public char * forw_textlist (struct textlist *tlist, char *prev); - public char * back_textlist (struct textlist *tlist, char *prev); - public int edit (char *filename); - public int edit_ifile (IFILE ifile); - public int edit_list (char *filelist); - public int edit_first (void); - public int edit_last (void); - public int edit_next (int n); - public int edit_prev (int n); - public int edit_index (int n); - public IFILE save_curr_ifile (void); - public void unsave_ifile (IFILE save_ifile); - public void reedit_ifile (IFILE save_ifiler); - public void reopen_curr_ifile (void); - public int edit_stdin (void); - public void cat_file (void); - public void use_logfile (char *filename); - public char * shell_unquote (char *str); - public char * get_meta_escape (void); - public char * shell_quote (char *s); - public char * homefile (char *filename); - public char * fexpand (char *s); - public char * fcomplete (char *s); - public int bin_file (int f); - public char * lglob (char *filename); - public char * open_altfile (char *filename, int *pf, void **pfd); - public void close_altfile (char *altfilename, char *filename, void *pipefd); - public int is_dir (char *filename); - public char * bad_file (char *filename); - public POSITION filesize (int f); - public char * shell_coption (void); - public char * last_component (char *name); - public int eof_displayed (void); - public int entire_file_displayed (void); - public void squish_check (void); - public void forw (int n, POSITION pos, int force, int only_last, int nblank); - public void back (int n, POSITION pos, int force, int only_last); - public void forward (int n, int force, int only_last); - public void backward (int n, int force, int only_last); - public int get_back_scroll (void); - public void del_ifile (IFILE h); - public IFILE next_ifile (IFILE h); - public IFILE prev_ifile (IFILE h); - public IFILE getoff_ifile (IFILE ifile); - public int nifile (void); - public IFILE get_ifile (char *filename, IFILE prev); - public char * get_filename (IFILE ifile); - public int get_index (IFILE ifile); - public void store_pos (IFILE ifile, struct scrpos *scrpos); - public void get_pos (IFILE ifile, struct scrpos *scrpos); - public void set_open (IFILE ifile); - public int opened (IFILE ifile); - public void hold_ifile (IFILE ifile, int incr); - public int held_ifile (IFILE ifile); - public void * get_filestate (IFILE ifile); - public void set_filestate (IFILE ifile, void *filestate); - public void if_dump (void); - public POSITION forw_line (POSITION curr_pos); - public POSITION back_line (POSITION curr_pos); - public void set_attnpos (POSITION pos); - public void jump_forw (void); - public void jump_forw_buffered (void); - public void jump_back (LINENUM linenum); - public void repaint (void); - public void jump_percent (int percent, long fraction); - public void jump_line_loc (POSITION pos, int sline); - public void jump_loc (POSITION pos, int sline); - public void init_line (void); - public int is_ascii_char (LWCHAR ch); - public void prewind (void); - public void plinenum (POSITION pos); - public void pshift_all (void); - public int is_ansi_end (LWCHAR ch); - public int is_ansi_middle (LWCHAR ch); - public int pappend (unsigned char c, POSITION pos); - public int pflushmbc (void); - public void pdone (int endline, int forw); - public void set_status_col (char c); - public int gline (int i, int *ap); - public void null_line (void); - public POSITION forw_raw_line (POSITION curr_pos, char **linep, int *line_lenp); - public POSITION back_raw_line (POSITION curr_pos, char **linep, int *line_lenp); - public void clr_linenum (void); - public void add_lnum (LINENUM linenum, POSITION pos); - public LINENUM find_linenum (POSITION pos); - public POSITION find_pos (LINENUM linenum); - public LINENUM currline (int where); - public void lsystem (char *cmd, char *donemsg); - public int pipe_mark (int c, char *cmd); - public int pipe_data (char *cmd, POSITION spos, POSITION epos); - public void init_mark (void); - public int badmark (int c); - public void setmark (int c); - public void lastmark (void); - public void gomark (int c); - public POSITION markpos (int c); - public void unmark (IFILE ifile); - public void opt_o (int type, char *s); - public void opt__O (int type, char *s); - public void opt_j (int type, char *s); - public void calc_jump_sline (void); - public void opt_shift (int type, char *s); - public void calc_shift_count (void); - public void opt_k (int type, char *s); - public void opt_t (int type, char *s); - public void opt__T (int type, char *s); - public void opt_p (int type, char *s); - public void opt__P (int type, char *s); - public void opt_b (int type, char *s); - public void opt_i (int type, char *s); - public void opt__V (int type, char *s); - public void opt_D (int type, char *s); - public void opt_x (int type, char *s); - public void opt_quote (int type, char *s); - public void opt_query (int type, char *s); - public int get_swindow (void); - public char * propt (int c); - public void scan_option (char *s); -struct loption; - public void toggle_option (struct loption *o, int lower, char *s, int how_toggle); - public int opt_has_param (struct loption *o); - public char * opt_prompt (struct loption *o); - public int isoptpending (void); - public void nopendopt (void); - public int getnum (char **sp, char *printopt, int *errp); - public long getfraction (char **sp, char *printopt, int *errp); - public int get_quit_at_eof (void); - public void init_option (void); - public struct loption * findopt (int c); - public struct loption * findopt_name (char **p_optname, char **p_oname, int *p_err); - public int iread (int fd, char *buf, unsigned int len); - public void intread (void); - public time_type get_time (void); - public char * errno_message (char *filename); - public int percentage (POSITION num, POSITION den); - public POSITION percent_pos (POSITION pos, int percent, long fraction); - public int os9_signal (int type, RETSIGTYPE (*handler)()); - public void put_line (void); - public void flush (void); - public int putchr (int c); - public void putstr (constant char *s); - public void get_return (void); - public void error (char *fmt, PARG *parg); - public void ierror (char *fmt, PARG *parg); - public int query (char *fmt, PARG *parg); - public int compile_pattern (char *pattern, int search_type, void **comp_pattern); - public void uncompile_pattern (void **pattern); - public int valid_pattern (char *pattern); - public int is_null_pattern (void *pattern); - public int match_pattern (void *pattern, char *tpattern, char *line, int line_len, char **sp, char **ep, int notbol, int search_type); - public POSITION position (int where); - public void add_forw_pos (POSITION pos); - public void add_back_pos (POSITION pos); - public void pos_clear (void); - public void pos_init (void); - public int onscreen (POSITION pos); - public int empty_screen (void); - public int empty_lines (int s, int e); - public void get_scrpos (struct scrpos *scrpos); - public int adjsline (int sline); - public void init_prompt (void); - public char * pr_expand (constant char *proto, int maxwidth); - public char * eq_message (void); - public char * pr_string (void); - public char * wait_message (void); - public void init_search (void); - public void repaint_hilite (int on); - public void clear_attn (void); - public void undo_search (void); -struct hilite_tree; - public void clr_hlist (struct hilite_tree *anchor); - public void clr_hilite (void); - public void clr_filter (void); - public int is_filtered (POSITION pos); - public POSITION next_unfiltered (POSITION pos); - public POSITION prev_unfiltered (POSITION pos); - public int is_hilited (POSITION pos, POSITION epos, int nohide, int *p_matches); - public void chg_caseless (void); - public void chg_hilite (void); - public int search (int search_type, char *pattern, int n); - public void prep_hilite (POSITION spos, POSITION epos, int maxlines); - public void set_filter_pattern (char *pattern, int search_type); - public int is_filtering (void); - public RETSIGTYPE winch (int type); - public void init_signals (int on); - public void psignals (void); - public void cleantags (void); - public int gettagtype (void); - public void findtag (char *tag); - public POSITION tagsearch (void); - public char * nexttag (int n); - public char * prevtag (int n); - public int ntags (void); - public int curr_tag (void); - public int edit_tagfile (void); - public void open_getchr (void); - public void close_getchr (void); - public int getchr (void); +public char * save LESSPARAMS((constant char *s)); +public VOID_POINTER ecalloc LESSPARAMS((int count, unsigned int size)); +public char * skipsp LESSPARAMS((char *s)); +public int sprefix LESSPARAMS((char *ps, char *s, int uppercase)); +public void quit LESSPARAMS((int status)); +public void raw_mode LESSPARAMS((int on)); +public void scrsize LESSPARAMS((VOID_PARAM)); +public char * special_key_str LESSPARAMS((int key)); +public void get_term LESSPARAMS((VOID_PARAM)); +public void init LESSPARAMS((VOID_PARAM)); +public void deinit LESSPARAMS((VOID_PARAM)); +public void home LESSPARAMS((VOID_PARAM)); +public void add_line LESSPARAMS((VOID_PARAM)); +public void remove_top LESSPARAMS((int n)); +public void win32_scroll_up LESSPARAMS((int n)); +public void lower_left LESSPARAMS((VOID_PARAM)); +public void line_left LESSPARAMS((VOID_PARAM)); +public void check_winch LESSPARAMS((VOID_PARAM)); +public void goto_line LESSPARAMS((int slinenum)); +public void vbell LESSPARAMS((VOID_PARAM)); +public void bell LESSPARAMS((VOID_PARAM)); +public void clear LESSPARAMS((VOID_PARAM)); +public void clear_eol LESSPARAMS((VOID_PARAM)); +public void clear_bot LESSPARAMS((VOID_PARAM)); +public void at_enter LESSPARAMS((int attr)); +public void at_exit LESSPARAMS((VOID_PARAM)); +public void at_switch LESSPARAMS((int attr)); +public int is_at_equiv LESSPARAMS((int attr1, int attr2)); +public int apply_at_specials LESSPARAMS((int attr)); +public void backspace LESSPARAMS((VOID_PARAM)); +public void putbs LESSPARAMS((VOID_PARAM)); +public char WIN32getch LESSPARAMS((int tty)); +public void WIN32setcolors LESSPARAMS((int fg, int bg)); +public void WIN32textout LESSPARAMS((char *text, int len)); +public void match_brac LESSPARAMS((int obrac, int cbrac, int forwdir, int n)); +public void ch_ungetchar LESSPARAMS((int c)); +public void end_logfile LESSPARAMS((VOID_PARAM)); +public void sync_logfile LESSPARAMS((VOID_PARAM)); +public int ch_seek LESSPARAMS((POSITION pos)); +public int ch_end_seek LESSPARAMS((VOID_PARAM)); +public int ch_end_buffer_seek LESSPARAMS((VOID_PARAM)); +public int ch_beg_seek LESSPARAMS((VOID_PARAM)); +public POSITION ch_length LESSPARAMS((VOID_PARAM)); +public POSITION ch_tell LESSPARAMS((VOID_PARAM)); +public int ch_forw_get LESSPARAMS((VOID_PARAM)); +public int ch_back_get LESSPARAMS((VOID_PARAM)); +public void ch_setbufspace LESSPARAMS((int bufspace)); +public void ch_flush LESSPARAMS((VOID_PARAM)); +public int seekable LESSPARAMS((int f)); +public void ch_set_eof LESSPARAMS((VOID_PARAM)); +public void ch_init LESSPARAMS((int f, int flags)); +public void ch_close LESSPARAMS((VOID_PARAM)); +public int ch_getflags LESSPARAMS((VOID_PARAM)); +public void ch_dump LESSPARAMS((VOID_PARAM)); +public void init_charset LESSPARAMS((VOID_PARAM)); +public int binary_char LESSPARAMS((LWCHAR c)); +public int control_char LESSPARAMS((LWCHAR c)); +public char * prchar LESSPARAMS((LWCHAR c)); +public char * prutfchar LESSPARAMS((LWCHAR ch)); +public int utf_len LESSPARAMS((unsigned char ch)); +public int is_utf8_well_formed LESSPARAMS((char *ss, int slen)); +public int utf_bin_count LESSPARAMS((char *data, int len)); +public LWCHAR get_wchar LESSPARAMS((constant char *p)); +public void put_wchar LESSPARAMS((char **pp, LWCHAR ch)); +public LWCHAR step_char LESSPARAMS((char **pp, signed int dir, constant char *limit)); +public int is_composing_char LESSPARAMS((LWCHAR ch)); +public int is_ubin_char LESSPARAMS((LWCHAR ch)); +public int is_wide_char LESSPARAMS((LWCHAR ch)); +public int is_combining_char LESSPARAMS((LWCHAR ch1, LWCHAR ch2)); +public void cmd_reset LESSPARAMS((VOID_PARAM)); +public void clear_cmd LESSPARAMS((VOID_PARAM)); +public void cmd_putstr LESSPARAMS((constant char *s)); +public int len_cmdbuf LESSPARAMS((VOID_PARAM)); +public void set_mlist LESSPARAMS((void *mlist, int cmdflags)); +public void cmd_addhist LESSPARAMS((struct mlist *mlist, constant char *cmd, int modified)); +public void cmd_accept LESSPARAMS((VOID_PARAM)); +public int cmd_char LESSPARAMS((int c)); +public LINENUM cmd_int LESSPARAMS((long *frac)); +public char * get_cmdbuf LESSPARAMS((VOID_PARAM)); +public char * cmd_lastpattern LESSPARAMS((VOID_PARAM)); +public void init_cmdhist LESSPARAMS((VOID_PARAM)); +public void save_cmdhist LESSPARAMS((VOID_PARAM)); +public int in_mca LESSPARAMS((VOID_PARAM)); +public void dispversion LESSPARAMS((VOID_PARAM)); +public int getcc LESSPARAMS((VOID_PARAM)); +public void ungetcc LESSPARAMS((int c)); +public void ungetsc LESSPARAMS((char *s)); +public void commands LESSPARAMS((VOID_PARAM)); +public int cvt_length LESSPARAMS((int len, int ops)); +public int * cvt_alloc_chpos LESSPARAMS((int len)); +public void cvt_text LESSPARAMS((char *odst, char *osrc, int *chpos, int *lenp, int ops)); +public void init_cmds LESSPARAMS((VOID_PARAM)); +public void add_fcmd_table LESSPARAMS((char *buf, int len)); +public void add_ecmd_table LESSPARAMS((char *buf, int len)); +public int fcmd_decode LESSPARAMS((char *cmd, char **sp)); +public int ecmd_decode LESSPARAMS((char *cmd, char **sp)); +public char * lgetenv LESSPARAMS((char *var)); +public int lesskey LESSPARAMS((char *filename, int sysvar)); +public void add_hometable LESSPARAMS((char *envname, char *def_filename, int sysvar)); +public int editchar LESSPARAMS((int c, int flags)); +public void init_textlist LESSPARAMS((struct textlist *tlist, char *str)); +public char * forw_textlist LESSPARAMS((struct textlist *tlist, char *prev)); +public char * back_textlist LESSPARAMS((struct textlist *tlist, char *prev)); +public int edit LESSPARAMS((char *filename)); +public int edit_ifile LESSPARAMS((IFILE ifile)); +public int edit_list LESSPARAMS((char *filelist)); +public int edit_first LESSPARAMS((VOID_PARAM)); +public int edit_last LESSPARAMS((VOID_PARAM)); +public int edit_next LESSPARAMS((int n)); +public int edit_prev LESSPARAMS((int n)); +public int edit_index LESSPARAMS((int n)); +public IFILE save_curr_ifile LESSPARAMS((VOID_PARAM)); +public void unsave_ifile LESSPARAMS((IFILE save_ifile)); +public void reedit_ifile LESSPARAMS((IFILE save_ifile)); +public void reopen_curr_ifile LESSPARAMS((VOID_PARAM)); +public int edit_stdin LESSPARAMS((VOID_PARAM)); +public void cat_file LESSPARAMS((VOID_PARAM)); +public void use_logfile LESSPARAMS((char *filename)); +public char * shell_unquote LESSPARAMS((char *str)); +public char * get_meta_escape LESSPARAMS((VOID_PARAM)); +public char * shell_quote LESSPARAMS((char *s)); +public char * homefile LESSPARAMS((char *filename)); +public char * fexpand LESSPARAMS((char *s)); +public char * fcomplete LESSPARAMS((char *s)); +public int bin_file LESSPARAMS((int f)); +public char * lglob LESSPARAMS((char *filename)); +public char * open_altfile LESSPARAMS((char *filename, int *pf, void **pfd)); +public void close_altfile LESSPARAMS((char *altfilename, char *filename, void *pipefd)); +public int is_dir LESSPARAMS((char *filename)); +public char * bad_file LESSPARAMS((char *filename)); +public POSITION filesize LESSPARAMS((int f)); +public char * shell_coption LESSPARAMS((VOID_PARAM)); +public char * last_component LESSPARAMS((char *name)); +public int eof_displayed LESSPARAMS((VOID_PARAM)); +public int entire_file_displayed LESSPARAMS((VOID_PARAM)); +public void squish_check LESSPARAMS((VOID_PARAM)); +public void forw LESSPARAMS((int n, POSITION pos, int force, int only_last, int nblank)); +public void back LESSPARAMS((int n, POSITION pos, int force, int only_last)); +public void forward LESSPARAMS((int n, int force, int only_last)); +public void backward LESSPARAMS((int n, int force, int only_last)); +public int get_back_scroll LESSPARAMS((VOID_PARAM)); +public int get_line_count LESSPARAMS((VOID_PARAM)); +public void del_ifile LESSPARAMS((IFILE h)); +public IFILE next_ifile LESSPARAMS((IFILE h)); +public IFILE prev_ifile LESSPARAMS((IFILE h)); +public IFILE getoff_ifile LESSPARAMS((IFILE ifile)); +public int nifile LESSPARAMS((VOID_PARAM)); +public IFILE get_ifile LESSPARAMS((char *filename, IFILE prev)); +public char * get_filename LESSPARAMS((IFILE ifile)); +public int get_index LESSPARAMS((IFILE ifile)); +public void store_pos LESSPARAMS((IFILE ifile, struct scrpos *scrpos)); +public void get_pos LESSPARAMS((IFILE ifile, struct scrpos *scrpos)); +public void set_open LESSPARAMS((IFILE ifile)); +public int opened LESSPARAMS((IFILE ifile)); +public void hold_ifile LESSPARAMS((IFILE ifile, int incr)); +public int held_ifile LESSPARAMS((IFILE ifile)); +public void * get_filestate LESSPARAMS((IFILE ifile)); +public void set_filestate LESSPARAMS((IFILE ifile, void *filestate)); +public void if_dump LESSPARAMS((VOID_PARAM)); +public POSITION forw_line LESSPARAMS((POSITION curr_pos)); +public POSITION back_line LESSPARAMS((POSITION curr_pos)); +public void set_attnpos LESSPARAMS((POSITION pos)); +public void jump_forw LESSPARAMS((VOID_PARAM)); +public void jump_forw_buffered LESSPARAMS((VOID_PARAM)); +public void jump_back LESSPARAMS((LINENUM linenum)); +public void repaint LESSPARAMS((VOID_PARAM)); +public void jump_percent LESSPARAMS((int percent, long fraction)); +public void jump_line_loc LESSPARAMS((POSITION pos, int sline)); +public void jump_loc LESSPARAMS((POSITION pos, int sline)); +public void init_line LESSPARAMS((VOID_PARAM)); +public int is_ascii_char LESSPARAMS((LWCHAR ch)); +public void prewind LESSPARAMS((VOID_PARAM)); +public void plinenum LESSPARAMS((POSITION pos)); +public void pshift_all LESSPARAMS((VOID_PARAM)); +public int is_ansi_end LESSPARAMS((LWCHAR ch)); +public int is_ansi_middle LESSPARAMS((LWCHAR ch)); +public int pappend LESSPARAMS((unsigned char c, POSITION pos)); +public int pflushmbc LESSPARAMS((VOID_PARAM)); +public void pdone LESSPARAMS((int endline, int forw)); +public void set_status_col LESSPARAMS((char c)); +public int gline LESSPARAMS((int i, int *ap)); +public void null_line LESSPARAMS((VOID_PARAM)); +public POSITION forw_raw_line LESSPARAMS((POSITION curr_pos, char **linep, int *line_lenp)); +public POSITION back_raw_line LESSPARAMS((POSITION curr_pos, char **linep, int *line_lenp)); +public int rrshift LESSPARAMS((VOID_PARAM)); +public void clr_linenum LESSPARAMS((VOID_PARAM)); +public void add_lnum LESSPARAMS((LINENUM linenum, POSITION pos)); +public LINENUM find_linenum LESSPARAMS((POSITION pos)); +public POSITION find_pos LESSPARAMS((LINENUM linenum)); +public LINENUM currline LESSPARAMS((int where)); +public void lsystem LESSPARAMS((char *cmd, char *donemsg)); +public int pipe_mark LESSPARAMS((int c, char *cmd)); +public int pipe_data LESSPARAMS((char *cmd, POSITION spos, POSITION epos)); +public void init_mark LESSPARAMS((VOID_PARAM)); +public int badmark LESSPARAMS((int c)); +public void setmark LESSPARAMS((int c)); +public void lastmark LESSPARAMS((VOID_PARAM)); +public void gomark LESSPARAMS((int c)); +public POSITION markpos LESSPARAMS((int c)); +public void unmark LESSPARAMS((IFILE ifile)); +public void opt_o LESSPARAMS((int type, char *s)); +public void opt__O LESSPARAMS((int type, char *s)); +public void opt_j LESSPARAMS((int type, char *s)); +public void calc_jump_sline LESSPARAMS((VOID_PARAM)); +public void opt_shift LESSPARAMS((int type, char *s)); +public void calc_shift_count LESSPARAMS((VOID_PARAM)); +public void opt_k LESSPARAMS((int type, char *s)); +public void opt_t LESSPARAMS((int type, char *s)); +public void opt__T LESSPARAMS((int type, char *s)); +public void opt_p LESSPARAMS((int type, char *s)); +public void opt__P LESSPARAMS((int type, char *s)); +public void opt_b LESSPARAMS((int type, char *s)); +public void opt_i LESSPARAMS((int type, char *s)); +public void opt__V LESSPARAMS((int type, char *s)); +public void opt_D LESSPARAMS((int type, char *s)); +public void opt_x LESSPARAMS((int type, char *s)); +public void opt_quote LESSPARAMS((int type, char *s)); +public void opt_query LESSPARAMS((int type, char *s)); +public int get_swindow LESSPARAMS((VOID_PARAM)); +public char * propt LESSPARAMS((int c)); +public void scan_option LESSPARAMS((char *s)); +public void toggle_option LESSPARAMS((struct loption *o, int lower, char *s, int how_toggle)); +public int opt_has_param LESSPARAMS((struct loption *o)); +public char * opt_prompt LESSPARAMS((struct loption *o)); +public int isoptpending LESSPARAMS((VOID_PARAM)); +public void nopendopt LESSPARAMS((VOID_PARAM)); +public int getnum LESSPARAMS((char **sp, char *printopt, int *errp)); +public long getfraction LESSPARAMS((char **sp, char *printopt, int *errp)); +public int get_quit_at_eof LESSPARAMS((VOID_PARAM)); +public void init_option LESSPARAMS((VOID_PARAM)); +public struct loption * findopt LESSPARAMS((int c)); +public struct loption * findopt_name LESSPARAMS((char **p_optname, char **p_oname, int *p_err)); +public int iread LESSPARAMS((int fd, unsigned char *buf, unsigned int len)); +public void intread LESSPARAMS((VOID_PARAM)); +public time_type get_time LESSPARAMS((VOID_PARAM)); +public char * errno_message LESSPARAMS((char *filename)); +public int percentage LESSPARAMS((POSITION num, POSITION den)); +public POSITION percent_pos LESSPARAMS((POSITION pos, int percent, long fraction)); +public int os9_signal LESSPARAMS((int type, RETSIGTYPE (*handler)())); +public void put_line LESSPARAMS((VOID_PARAM)); +public void flush LESSPARAMS((VOID_PARAM)); +public int putchr LESSPARAMS((int c)); +public void putstr LESSPARAMS((constant char *s)); +public void get_return LESSPARAMS((VOID_PARAM)); +public void error LESSPARAMS((char *fmt, PARG *parg)); +public void ierror LESSPARAMS((char *fmt, PARG *parg)); +public int query LESSPARAMS((char *fmt, PARG *parg)); +public int compile_pattern LESSPARAMS((char *pattern, int search_type, PATTERN_TYPE *comp_pattern)); +public void uncompile_pattern LESSPARAMS((PATTERN_TYPE *pattern)); +public int valid_pattern LESSPARAMS((char *pattern)); +public int is_null_pattern LESSPARAMS((PATTERN_TYPE pattern)); +public int match_pattern LESSPARAMS((PATTERN_TYPE pattern, char *tpattern, char *line, int line_len, char **sp, char **ep, int notbol, int search_type)); +public POSITION position LESSPARAMS((int where)); +public void add_forw_pos LESSPARAMS((POSITION pos)); +public void add_back_pos LESSPARAMS((POSITION pos)); +public void pos_clear LESSPARAMS((VOID_PARAM)); +public void pos_init LESSPARAMS((VOID_PARAM)); +public int onscreen LESSPARAMS((POSITION pos)); +public int empty_screen LESSPARAMS((VOID_PARAM)); +public int empty_lines LESSPARAMS((int s, int e)); +public void get_scrpos LESSPARAMS((struct scrpos *scrpos)); +public int adjsline LESSPARAMS((int sline)); +public void init_prompt LESSPARAMS((VOID_PARAM)); +public char * pr_expand LESSPARAMS((constant char *proto, int maxwidth)); +public char * eq_message LESSPARAMS((VOID_PARAM)); +public char * pr_string LESSPARAMS((VOID_PARAM)); +public char * wait_message LESSPARAMS((VOID_PARAM)); +public void init_search LESSPARAMS((VOID_PARAM)); +public void repaint_hilite LESSPARAMS((int on)); +public void clear_attn LESSPARAMS((VOID_PARAM)); +public void undo_search LESSPARAMS((VOID_PARAM)); +public void clr_hlist LESSPARAMS((struct hilite_tree *anchor)); +public void clr_hilite LESSPARAMS((VOID_PARAM)); +public void clr_filter LESSPARAMS((VOID_PARAM)); +public int is_filtered LESSPARAMS((POSITION pos)); +public POSITION next_unfiltered LESSPARAMS((POSITION pos)); +public POSITION prev_unfiltered LESSPARAMS((POSITION pos)); +public int is_hilited LESSPARAMS((POSITION pos, POSITION epos, int nohide, int *p_matches)); +public void chg_hilite LESSPARAMS((VOID_PARAM)); +public void chg_caseless LESSPARAMS((VOID_PARAM)); +public int search LESSPARAMS((int search_type, char *pattern, int n)); +public void prep_hilite LESSPARAMS((POSITION spos, POSITION epos, int maxlines)); +public void set_filter_pattern LESSPARAMS((char *pattern, int search_type)); +public int is_filtering LESSPARAMS((VOID_PARAM)); +public RETSIGTYPE winch LESSPARAMS((int type)); +public RETSIGTYPE winch LESSPARAMS((int type)); +public void init_signals LESSPARAMS((int on)); +public void psignals LESSPARAMS((VOID_PARAM)); +public void cleantags LESSPARAMS((VOID_PARAM)); +public int gettagtype LESSPARAMS((VOID_PARAM)); +public void findtag LESSPARAMS((char *tag)); +public POSITION tagsearch LESSPARAMS((VOID_PARAM)); +public char * nexttag LESSPARAMS((int n)); +public char * prevtag LESSPARAMS((int n)); +public int ntags LESSPARAMS((VOID_PARAM)); +public int curr_tag LESSPARAMS((VOID_PARAM)); +public int edit_tagfile LESSPARAMS((VOID_PARAM)); +public void open_getchr LESSPARAMS((VOID_PARAM)); +public void close_getchr LESSPARAMS((VOID_PARAM)); +public int getchr LESSPARAMS((VOID_PARAM)); diff --git a/contrib/less/help.c b/contrib/less/help.c index aba711677f7a..3b0d1bd94f72 100644 --- a/contrib/less/help.c +++ b/contrib/less/help.c @@ -23,8 +23,10 @@ constant char helpdata[] = { ' ',' ','E','S','C','-','S','P','A','C','E',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','F','o','r','w','a','r','d',' ',' ','o','n','e',' ','w','i','n','d','o','w',',',' ','b','u','t',' ','d','o','n','\'','t',' ','s','t','o','p',' ','a','t',' ','e','n','d','-','o','f','-','f','i','l','e','.','\n', ' ',' ','d',' ',' ','^','D',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','F','o','r','w','a','r','d',' ',' ','o','n','e',' ','h','a','l','f','-','w','i','n','d','o','w',' ','(','a','n','d',' ','s','e','t',' ','h','a','l','f','-','w','i','n','d','o','w',' ','t','o',' ','_','\b','N',')','.','\n', ' ',' ','u',' ',' ','^','U',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*',' ',' ','B','a','c','k','w','a','r','d',' ','o','n','e',' ','h','a','l','f','-','w','i','n','d','o','w',' ','(','a','n','d',' ','s','e','t',' ','h','a','l','f','-','w','i','n','d','o','w',' ','t','o',' ','_','\b','N',')','.','\n', -' ',' ','E','S','C','-',')',' ',' ','R','i','g','h','t','A','r','r','o','w',' ','*',' ',' ','L','e','f','t',' ',' ','o','n','e',' ','h','a','l','f',' ','s','c','r','e','e','n',' ','w','i','d','t','h',' ','(','o','r',' ','_','\b','N',' ','p','o','s','i','t','i','o','n','s',')','.','\n', -' ',' ','E','S','C','-','(',' ',' ','L','e','f','t','A','r','r','o','w',' ',' ','*',' ',' ','R','i','g','h','t',' ','o','n','e',' ','h','a','l','f',' ','s','c','r','e','e','n',' ','w','i','d','t','h',' ','(','o','r',' ','_','\b','N',' ','p','o','s','i','t','i','o','n','s',')','.','\n', +' ',' ','E','S','C','-',')',' ',' ','R','i','g','h','t','A','r','r','o','w',' ','*',' ',' ','R','i','g','h','t',' ','o','n','e',' ','h','a','l','f',' ','s','c','r','e','e','n',' ','w','i','d','t','h',' ','(','o','r',' ','_','\b','N',' ','p','o','s','i','t','i','o','n','s',')','.','\n', +' ',' ','E','S','C','-','(',' ',' ','L','e','f','t','A','r','r','o','w',' ',' ','*',' ',' ','L','e','f','t',' ',' ','o','n','e',' ','h','a','l','f',' ','s','c','r','e','e','n',' ','w','i','d','t','h',' ','(','o','r',' ','_','\b','N',' ','p','o','s','i','t','i','o','n','s',')','.','\n', +' ',' ','E','S','C','-','}',' ',' ','^','R','i','g','h','t','A','r','r','o','w',' ',' ',' ','R','i','g','h','t',' ','t','o',' ','l','a','s','t',' ','c','o','l','u','m','n',' ','d','i','s','p','l','a','y','e','d','.','\n', +' ',' ','E','S','C','-','{',' ',' ','^','L','e','f','t','A','r','r','o','w',' ',' ',' ',' ','L','e','f','t',' ',' ','t','o',' ','f','i','r','s','t',' ','c','o','l','u','m','n','.','\n', ' ',' ','F',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','F','o','r','w','a','r','d',' ','f','o','r','e','v','e','r',';',' ','l','i','k','e',' ','"','t','a','i','l',' ','-','f','"','.','\n', ' ',' ','E','S','C','-','F',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','L','i','k','e',' ','F',' ','b','u','t',' ','s','t','o','p',' ','w','h','e','n',' ','s','e','a','r','c','h',' ','p','a','t','t','e','r','n',' ','i','s',' ','f','o','u','n','d','.','\n', ' ',' ','r',' ',' ','^','R',' ',' ','^','L',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','R','e','p','a','i','n','t',' ','s','c','r','e','e','n','.','\n', @@ -102,6 +104,7 @@ constant char helpdata[] = { '\n', ' ',' ','!','_','\b','c','_','\b','o','_','\b','m','_','\b','m','_','\b','a','_','\b','n','_','\b','d',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','x','e','c','u','t','e',' ','t','h','e',' ','s','h','e','l','l',' ','c','o','m','m','a','n','d',' ','w','i','t','h',' ','$','S','H','E','L','L','.','\n', ' ',' ','|','X','\b','X','_','\b','c','_','\b','o','_','\b','m','_','\b','m','_','\b','a','_','\b','n','_','\b','d',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','P','i','p','e',' ','f','i','l','e',' ','b','e','t','w','e','e','n',' ','c','u','r','r','e','n','t',' ','p','o','s',' ','&',' ','m','a','r','k',' ','X','\b','X',' ','t','o',' ','s','h','e','l','l',' ','c','o','m','m','a','n','d','.','\n', +' ',' ','s',' ','_','\b','f','_','\b','i','_','\b','l','_','\b','e',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','S','a','v','e',' ','i','n','p','u','t',' ','t','o',' ','a',' ','f','i','l','e','.','\n', ' ',' ','v',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','E','d','i','t',' ','t','h','e',' ','c','u','r','r','e','n','t',' ','f','i','l','e',' ','w','i','t','h',' ','$','V','I','S','U','A','L',' ','o','r',' ','$','E','D','I','T','O','R','.','\n', ' ',' ','V',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','P','r','i','n','t',' ','v','e','r','s','i','o','n',' ','n','u','m','b','e','r',' ','o','f',' ','"','l','e','s','s','"','.','\n', ' ','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','-','\n', diff --git a/contrib/less/ifile.c b/contrib/less/ifile.c index 0d921558444c..53a280c406c4 100644 --- a/contrib/less/ifile.c +++ b/contrib/less/ifile.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -49,7 +49,9 @@ static struct ifile anchor = { &anchor, &anchor, NULL, NULL, 0, 0, '\0', static int ifiles = 0; static void -incr_index(struct ifile *p, int incr) +incr_index(p, incr) + struct ifile *p; + int incr; { for (; p != &anchor; p = p->h_next) p->h_index += incr; @@ -59,7 +61,9 @@ incr_index(struct ifile *p, int incr) * Link an ifile into the ifile list. */ static void -link_ifile(struct ifile *p, struct ifile *prev) +link_ifile(p, prev) + struct ifile *p; + struct ifile *prev; { /* * Link into list. @@ -83,7 +87,8 @@ link_ifile(struct ifile *p, struct ifile *prev) * Unlink an ifile from the ifile list. */ static void -unlink_ifile(struct ifile *p) +unlink_ifile(p) + struct ifile *p; { p->h_next->h_prev = p->h_prev; p->h_prev->h_next = p->h_next; @@ -98,7 +103,9 @@ unlink_ifile(struct ifile *p) * Return a pointer to the new ifile structure. */ static struct ifile * -new_ifile(char *filename, struct ifile *prev) +new_ifile(filename, prev) + char *filename; + struct ifile *prev; { struct ifile *p; @@ -119,7 +126,8 @@ new_ifile(char *filename, struct ifile *prev) * Delete an existing ifile structure. */ public void -del_ifile(IFILE h) +del_ifile(h) + IFILE h; { struct ifile *p; @@ -142,7 +150,8 @@ del_ifile(IFILE h) * Get the ifile after a given one in the list. */ public IFILE -next_ifile(IFILE h) +next_ifile(h) + IFILE h; { struct ifile *p; @@ -156,7 +165,8 @@ next_ifile(IFILE h) * Get the ifile before a given one in the list. */ public IFILE -prev_ifile(IFILE h) +prev_ifile(h) + IFILE h; { struct ifile *p; @@ -170,7 +180,8 @@ prev_ifile(IFILE h) * Return a different ifile from the given one. */ public IFILE -getoff_ifile(IFILE ifile) +getoff_ifile(ifile) + IFILE ifile; { IFILE newifile; @@ -185,7 +196,7 @@ getoff_ifile(IFILE ifile) * Return the number of ifiles. */ public int -nifile(void) +nifile() { return (ifiles); } @@ -194,7 +205,8 @@ nifile(void) * Find an ifile structure, given a filename. */ static struct ifile * -find_ifile(char *filename) +find_ifile(filename) + char *filename; { struct ifile *p; @@ -210,7 +222,9 @@ find_ifile(char *filename) * insert the new ifile after "prev" in the list. */ public IFILE -get_ifile(char *filename, IFILE prev) +get_ifile(filename, prev) + char *filename; + IFILE prev; { struct ifile *p; @@ -223,7 +237,8 @@ get_ifile(char *filename, IFILE prev) * Get the filename associated with a ifile. */ public char * -get_filename(IFILE ifile) +get_filename(ifile) + IFILE ifile; { if (ifile == NULL) return (NULL); @@ -234,7 +249,8 @@ get_filename(IFILE ifile) * Get the index of the file associated with a ifile. */ public int -get_index(IFILE ifile) +get_index(ifile) + IFILE ifile; { return (int_ifile(ifile)->h_index); } @@ -243,7 +259,9 @@ get_index(IFILE ifile) * Save the file position to be associated with a given file. */ public void -store_pos(IFILE ifile, struct scrpos *scrpos) +store_pos(ifile, scrpos) + IFILE ifile; + struct scrpos *scrpos; { int_ifile(ifile)->h_scrpos = *scrpos; } @@ -253,7 +271,9 @@ store_pos(IFILE ifile, struct scrpos *scrpos) * If no position has been associated with the file, return NULL_POSITION. */ public void -get_pos(IFILE ifile, struct scrpos *scrpos) +get_pos(ifile, scrpos) + IFILE ifile; + struct scrpos *scrpos; { *scrpos = int_ifile(ifile)->h_scrpos; } @@ -262,7 +282,8 @@ get_pos(IFILE ifile, struct scrpos *scrpos) * Mark the ifile as "opened". */ public void -set_open(IFILE ifile) +set_open(ifile) + IFILE ifile; { int_ifile(ifile)->h_opened = 1; } @@ -271,38 +292,45 @@ set_open(IFILE ifile) * Return whether the ifile has been opened previously. */ public int -opened(IFILE ifile) +opened(ifile) + IFILE ifile; { return (int_ifile(ifile)->h_opened); } public void -hold_ifile(IFILE ifile, int incr) +hold_ifile(ifile, incr) + IFILE ifile; + int incr; { int_ifile(ifile)->h_hold += incr; } public int -held_ifile(IFILE ifile) +held_ifile(ifile) + IFILE ifile; { return (int_ifile(ifile)->h_hold); } public void * -get_filestate(IFILE ifile) +get_filestate(ifile) + IFILE ifile; { return (int_ifile(ifile)->h_filestate); } public void -set_filestate(IFILE ifile, void *filestate) +set_filestate(ifile, filestate) + IFILE ifile; + void *filestate; { int_ifile(ifile)->h_filestate = filestate; } #if 0 public void -if_dump(void) +if_dump() { struct ifile *p; diff --git a/contrib/less/input.c b/contrib/less/input.c index b9e5de931b1b..34689bf6a5a5 100644 --- a/contrib/less/input.c +++ b/contrib/less/input.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -42,7 +42,8 @@ extern int size_linebuf; * of the NEXT line. The line obtained is the line starting at curr_pos. */ public POSITION -forw_line(POSITION curr_pos) +forw_line(curr_pos) + POSITION curr_pos; { POSITION base_pos; POSITION new_pos; @@ -248,7 +249,8 @@ get_forw_line: * of the PREVIOUS line. The line obtained is the one starting at new_pos. */ public POSITION -back_line(POSITION curr_pos) +back_line(curr_pos) + POSITION curr_pos; { POSITION new_pos, begin_new_pos, base_pos; int c; @@ -427,7 +429,8 @@ get_back_line: * Set attnpos. */ public void -set_attnpos(POSITION pos) +set_attnpos(pos) + POSITION pos; { int c; diff --git a/contrib/less/jump.c b/contrib/less/jump.c index 16bd22d58036..618d0b87105b 100644 --- a/contrib/less/jump.c +++ b/contrib/less/jump.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -26,7 +26,7 @@ extern int top_scroll; * Jump to the end of the file. */ public void -jump_forw(void) +jump_forw() { POSITION pos; POSITION end_pos; @@ -64,7 +64,7 @@ jump_forw(void) * Jump to the last buffered line in the file. */ public void -jump_forw_buffered(void) +jump_forw_buffered() { POSITION end; @@ -82,7 +82,8 @@ jump_forw_buffered(void) * Jump to line n in the file. */ public void -jump_back(LINENUM linenum) +jump_back(linenum) + LINENUM linenum; { POSITION pos; PARG parg; @@ -114,7 +115,7 @@ jump_back(LINENUM linenum) * Repaint the screen. */ public void -repaint(void) +repaint() { struct scrpos scrpos; /* @@ -123,14 +124,20 @@ repaint(void) */ get_scrpos(&scrpos); pos_clear(); - jump_loc(scrpos.pos, scrpos.ln); + if (scrpos.pos == NULL_POSITION) + /* Screen hasn't been drawn yet. */ + jump_loc(0, 0); + else + jump_loc(scrpos.pos, scrpos.ln); } /* * Jump to a specified percentage into the file. */ public void -jump_percent(int percent, long fraction) +jump_percent(percent, fraction) + int percent; + long fraction; { POSITION pos, len; @@ -161,7 +168,9 @@ jump_percent(int percent, long fraction) * the first character in a line. */ public void -jump_line_loc(POSITION pos, int sline) +jump_line_loc(pos, sline) + POSITION pos; + int sline; { int c; @@ -187,7 +196,9 @@ jump_line_loc(POSITION pos, int sline) * Place the target line on a specified line on the screen. */ public void -jump_loc(POSITION pos, int sline) +jump_loc(pos, sline) + POSITION pos; + int sline; { int nline; POSITION tpos; diff --git a/contrib/less/less.h b/contrib/less/less.h index 4123c352d258..69576bbde4cd 100644 --- a/contrib/less/less.h +++ b/contrib/less/less.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -39,10 +39,17 @@ /* * Language details. */ +#if HAVE_ANSI_PROTOS +#define LESSPARAMS(a) a +#else +#define LESSPARAMS(a) () +#endif #if HAVE_VOID #define VOID_POINTER void * +#define VOID_PARAM void #else #define VOID_POINTER char * +#define VOID_PARAM #define void int #endif #if HAVE_CONST @@ -525,9 +532,13 @@ struct wchar_range_table #define time_type long #endif +struct mlist; +struct loption; +struct hilite_tree; +#include "pattern.h" #include "funcs.h" /* Functions not included in funcs.h */ -void postoa(POSITION num, char *buf); -void linenumtoa(LINENUM num, char *buf); -void inttoa(int num, char *buf); +void postoa(); +void linenumtoa(); +void inttoa(); diff --git a/contrib/less/less.hlp b/contrib/less/less.hlp index 2a8e3e7233e7..255dc7e0ab2b 100644 --- a/contrib/less/less.hlp +++ b/contrib/less/less.hlp @@ -20,8 +20,10 @@ 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). + ESC-) RightArrow * Right one half screen width (or _N positions). + ESC-( LeftArrow * Left one half screen width (or _N positions). + ESC-} ^RightArrow Right to last column displayed. + ESC-{ ^LeftArrow Left to first column. F Forward forever; like "tail -f". ESC-F Like F but stop when search pattern is found. r ^R ^L Repaint screen. @@ -99,6 +101,7 @@ !_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. + s _f_i_l_e Save input to a file. v Edit the current file with $VISUAL or $EDITOR. V Print version number of "less". --------------------------------------------------------------------------- diff --git a/contrib/less/less.nro b/contrib/less/less.nro index b3d98746aad9..2f7bb7faa1de 100644 --- a/contrib/less/less.nro +++ b/contrib/less/less.nro @@ -1,4 +1,4 @@ -.TH LESS 1 "Version 481: 31 Aug 2015" +.TH LESS 1 "Version 491: 07 Apr 2017" .SH NAME less \- opposite of more .SH SYNOPSIS @@ -101,6 +101,10 @@ Scroll horizontally left N characters, default half the screen width (see the \-# option). If a number N is specified, it becomes the default for future RIGHTARROW and LEFTARROW commands. +.IP "ESC-} or ^RIGHTARROW" +Scroll horizontally right to show the end of the longest displayed line. +.IP "ESC-{ or ^LEFTARROW" +Scroll horizontally left back to the first column. .IP "r or ^R or ^L" Repaint the screen. .IP R @@ -547,6 +551,7 @@ The first number selects the foreground color and the second selects the background color of the text. A single number \fIN\fP is the same as \fIN.M\fP, where \fIM\fP is the normal background color. +\fBx\fP may also be \fBa\fP to toggle strict ANSI sequence rendering (SGR mode). .IP "\-e or \-\-quit-at-eof" Causes @@ -1740,7 +1745,7 @@ The name of the editor (used for the v command). lesskey(1) .SH COPYRIGHT -Copyright (C) 1984-2015 Mark Nudelman +Copyright (C) 1984-2017 Mark Nudelman .PP less is part of the GNU project and is free software. You can redistribute it and/or modify it diff --git a/contrib/less/lessecho.c b/contrib/less/lessecho.c index e4a23f5f39c5..4ed4830e1641 100644 --- a/contrib/less/lessecho.c +++ b/contrib/less/lessecho.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -38,14 +38,14 @@ static char metachars[64] = ""; static int num_metachars = 0; static void -pr_usage(void) +pr_usage() { fprintf(stderr, "usage: lessecho [-ox] [-cx] [-pn] [-dn] [-mx] [-nn] [-ex] [-fn] [-a] file ...\n"); } static void -pr_version(void) +pr_version() { char *p; char buf[10]; @@ -61,14 +61,18 @@ pr_version(void) } static void -pr_error(char *s) +pr_error(s) + char *s; { fprintf(stderr, "%s\n", s); exit(1); } static long -lstrtol(char *s, int radix, char **pend) +lstrtol(s, radix, pend) + char *s; + int radix; + char **pend; { int v; int neg = 0; diff --git a/contrib/less/lessecho.nro b/contrib/less/lessecho.nro index 78b893f18d97..f5922fa4ab79 100644 --- a/contrib/less/lessecho.nro +++ b/contrib/less/lessecho.nro @@ -1,4 +1,4 @@ -.TH LESSECHO 1 "Version 481: 31 Aug 2015" +.TH LESSECHO 1 "Version 491: 07 Apr 2017" .SH NAME lessecho \- expand metacharacters .SH SYNOPSIS diff --git a/contrib/less/lesskey.c b/contrib/less/lesskey.c index 47b765424fbc..686f6e4ffdad 100644 --- a/contrib/less/lesskey.c +++ b/contrib/less/lesskey.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -104,6 +104,7 @@ struct cmdname cmdnames[] = { "display-flag", A_DISP_OPTION }, { "display-option", A_DISP_OPTION }, { "end", A_GOEND }, + { "end-scroll", A_RRSHIFT }, { "examine", A_EXAMINE }, { "filter", A_FILTER }, { "first-cmd", A_FIRSTCMD }, @@ -130,6 +131,7 @@ struct cmdname cmdnames[] = { "next-file", A_NEXT_FILE }, { "next-tag", A_NEXT_TAG }, { "noaction", A_NOACTION }, + { "no-scroll", A_LLSHIFT }, { "percent", A_PERCENT }, { "pipe", A_PIPE }, { "prev-file", A_PREV_FILE }, @@ -213,19 +215,19 @@ char *outfile = NULL ; int linenum; int errors; -static void lk_error(char *s); - extern char version[]; void -usage(void) +usage() { fprintf(stderr, "usage: lesskey [-o output] [input]\n"); exit(1); } char * -mkpathname(char *dirname, char *filename) +mkpathname(dirname, filename) + char *dirname; + char *filename; { char *pathname; @@ -240,7 +242,8 @@ mkpathname(char *dirname, char *filename) * Figure out the name of a default file (in the user's HOME directory). */ char * -homefile(char *filename) +homefile(filename) + char *filename; { char *p; char *pathname; @@ -263,7 +266,9 @@ homefile(char *filename) * Parse command line arguments. */ void -parse_args(int argc, char **argv) +parse_args(argc, argv) + int argc; + char **argv; { char *arg; @@ -336,7 +341,7 @@ parse_args(int argc, char **argv) * Initialize data structures. */ void -init_tables(void) +init_tables() { cmdtable.names = cmdnames; cmdtable.pbuffer = cmdtable.buffer; @@ -352,7 +357,9 @@ init_tables(void) * Parse one character of a string. */ char * -tstr(char **pp, int xlate) +tstr(pp, xlate) + char **pp; + int xlate; { char *p; char ch; @@ -416,7 +423,7 @@ tstr(char **pp, int xlate) case 'e': ch = SK_END; break; case 'x': ch = SK_DELETE; break; default: - lk_error("illegal char after \\k"); + error("illegal char after \\k", NULL_PARG); *pp = p+1; return (""); } @@ -466,7 +473,8 @@ tstr(char **pp, int xlate) * Skip leading spaces in a string. */ public char * -skipsp(char *s) +skipsp(s) + char *s; { while (*s == ' ' || *s == '\t') s++; @@ -477,7 +485,8 @@ skipsp(char *s) * Skip non-space characters in a string. */ public char * -skipnsp(char *s) +skipnsp(s) + char *s; { while (*s != '\0' && *s != ' ' && *s != '\t') s++; @@ -489,7 +498,8 @@ skipnsp(char *s) * strip off the trailing newline & any trailing # comment. */ char * -clean_line(char *s) +clean_line(s) + char *s; { int i; @@ -505,11 +515,12 @@ clean_line(char *s) * Add a byte to the output command table. */ void -add_cmd_char(int c) +add_cmd_char(c) + int c; { if (currtable->pbuffer >= currtable->buffer + MAX_USERCMD) { - lk_error("too many commands"); + error("too many commands", NULL_PARG); exit(1); } *(currtable->pbuffer)++ = c; @@ -519,7 +530,8 @@ add_cmd_char(int c) * Add a string to the output command table. */ void -add_cmd_str(char *s) +add_cmd_str(s) + char *s; { for ( ; *s != '\0'; s++) add_cmd_char(*s); @@ -529,7 +541,8 @@ add_cmd_str(char *s) * See if we have a special "control" line. */ int -control_line(char *s) +control_line(s) + char *s; { #define PREFIX(str,pat) (strncmp(str,pat,strlen(pat)) == 0) @@ -561,7 +574,10 @@ control_line(char *s) * Output some bytes. */ void -fputbytes(FILE *fd, char *buf, int len) +fputbytes(fd, buf, len) + FILE *fd; + char *buf; + int len; { while (len-- > 0) { @@ -574,7 +590,9 @@ fputbytes(FILE *fd, char *buf, int len) * Output an integer, in special KRADIX form. */ void -fputint(FILE *fd, unsigned int val) +fputint(fd, val) + FILE *fd; + unsigned int val; { char c; @@ -594,27 +612,32 @@ fputint(FILE *fd, unsigned int val) * Find an action, given the name of the action. */ int -findaction(char *actname) +findaction(actname) + char *actname; { int i; for (i = 0; currtable->names[i].cn_name != NULL; i++) if (strcmp(currtable->names[i].cn_name, actname) == 0) return (currtable->names[i].cn_action); - lk_error("unknown action"); + error("unknown action", NULL_PARG); return (A_INVALID); } - static void -lk_error(char *s) + void +error(s, parg) + char *s; + PARG *parg; { fprintf(stderr, "line %d: %s\n", linenum, s); errors++; + (void) parg; } void -parse_cmdline(char *p) +parse_cmdline(p) + char *p; { int cmdlen; char *actname; @@ -631,7 +654,7 @@ parse_cmdline(char *p) s = tstr(&p, 1); cmdlen += (int) strlen(s); if (cmdlen > MAX_CMDLEN) - lk_error("command too long"); + error("command too long", NULL_PARG); else add_cmd_str(s); } while (*p != ' ' && *p != '\t' && *p != '\0'); @@ -648,7 +671,7 @@ parse_cmdline(char *p) p = skipsp(p); if (*p == '\0') { - lk_error("missing action"); + error("missing action", NULL_PARG); return; } actname = p; @@ -683,7 +706,8 @@ parse_cmdline(char *p) } void -parse_varline(char *p) +parse_varline(p) + char *p; { char *s; @@ -700,7 +724,7 @@ parse_varline(char *p) p = skipsp(p); if (*p++ != '=') { - lk_error("missing ="); + error("missing =", NULL_PARG); return; } @@ -719,7 +743,8 @@ parse_varline(char *p) * Parse a line from the lesskey file. */ void -parse_line(char *line) +parse_line(line) + char *line; { char *p; @@ -744,7 +769,9 @@ parse_line(char *line) } int -main(int argc, char *argv[]) +main(argc, argv) + int argc; + char *argv[]; { FILE *desc; FILE *out; diff --git a/contrib/less/lesskey.h b/contrib/less/lesskey.h index 34b8c1758c7b..92d4d93af179 100644 --- a/contrib/less/lesskey.h +++ b/contrib/less/lesskey.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. diff --git a/contrib/less/lesskey.nro b/contrib/less/lesskey.nro index 826332de5eff..a13be9329c97 100644 --- a/contrib/less/lesskey.nro +++ b/contrib/less/lesskey.nro @@ -1,4 +1,4 @@ -.TH LESSKEY 1 "Version 481: 31 Aug 2015" +.TH LESSKEY 1 "Version 491: 07 Apr 2017" .SH NAME lesskey \- specify key bindings for less .SH SYNOPSIS @@ -134,7 +134,7 @@ default command keys used by less: \en forw-line e forw-line j forw-line - \ekd forw-line + \ekd forw-line ^E forw-line ^N forw-line k back-line @@ -149,15 +149,15 @@ default command keys used by less: ^D forw-scroll u back-scroll ^U back-scroll - \e40 forw-screen + \e40 forw-screen f forw-screen ^F forw-screen ^V forw-screen - \ekD forw-screen + \ekD forw-screen b back-screen ^B back-screen \eev back-screen - \ekU back-screen + \ekU back-screen z forw-window w back-window \ee\e40 forw-screen-force @@ -169,7 +169,7 @@ default command keys used by less: ^L repaint \eeu undo-hilite g goto-line - \ekh goto-line + \ekh goto-line < goto-line \ee< goto-line p percent @@ -180,6 +180,8 @@ default command keys used by less: \ee) right-scroll \ekl left-scroll \ekr right-scroll + \ee{ no-scroll + \ee} end-scroll { forw-bracket {} } back-bracket {} ( forw-bracket () @@ -191,7 +193,7 @@ default command keys used by less: G goto-end \ee> goto-end > goto-end - \eke goto-end + \eke goto-end \eeG goto-end-buffered = status ^G status @@ -359,7 +361,7 @@ which start with a NUL character (0). This NUL character should be represented as \e340 in a lesskey file. .SH COPYRIGHT -Copyright (C) 1984-2015 Mark Nudelman +Copyright (C) 1984-2017 Mark Nudelman .PP less is part of the GNU project and is free software. You can redistribute it and/or modify it diff --git a/contrib/less/lglob.h b/contrib/less/lglob.h index 87b5fb45cc7c..0d9fb5b989bc 100644 --- a/contrib/less/lglob.h +++ b/contrib/less/lglob.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. diff --git a/contrib/less/line.c b/contrib/less/line.c index 464afda3b885..3715d5805af4 100644 --- a/contrib/less/line.c +++ b/contrib/less/line.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -16,6 +16,7 @@ #include "less.h" #include "charset.h" +#include "position.h" static char *linebuf = NULL; /* Buffer which holds the current output line */ static char *attr = NULL; /* Extension of linebuf to hold attributes */ @@ -40,9 +41,9 @@ static POSITION pendpos; static char *end_ansi_chars; static char *mid_ansi_chars; -static int attr_swidth(int); -static int attr_ewidth(int); -static int do_append(LWCHAR, char *, POSITION); +static int attr_swidth(); +static int attr_ewidth(); +static int do_append(); extern int sigs; extern int bs_mode; @@ -70,7 +71,7 @@ static POSITION mbc_pos; * Initialize from environment variables. */ public void -init_line(void) +init_line() { end_ansi_chars = lgetenv("LESSANSIENDCHARS"); if (end_ansi_chars == NULL || *end_ansi_chars == '\0') @@ -89,7 +90,7 @@ init_line(void) * Expand the line buffer. */ static int -expand_linebuf(void) +expand_linebuf() { /* Double the size of the line buffer. */ int new_size = size_linebuf * 2; @@ -137,7 +138,8 @@ expand_linebuf(void) * Is a character ASCII? */ public int -is_ascii_char(LWCHAR ch) +is_ascii_char(ch) + LWCHAR ch; { return (ch <= 0x7F); } @@ -146,7 +148,7 @@ is_ascii_char(LWCHAR ch) * Rewind the line buffer. */ public void -prewind(void) +prewind() { curr = 0; column = 0; @@ -165,7 +167,8 @@ prewind(void) * Insert the line number (of the given position) into the line buffer. */ public void -plinenum(POSITION pos) +plinenum(pos) + POSITION pos; { LINENUM linenum = 0; int i; @@ -213,7 +216,7 @@ plinenum(POSITION pos) sprintf(linebuf+curr, "%*s ", n, buf); n++; /* One space after the line number. */ for (i = 0; i < n; i++) - attr[curr+i] = AT_NORMAL; + attr[curr+i] = AT_BOLD; curr += n; column += n; lmargin += n; @@ -235,7 +238,8 @@ plinenum(POSITION pos) * This means discarding N printable chars at the start of the buffer. */ static void -pshift(int shift) +pshift(shift) + int shift; { LWCHAR prev_ch = 0; unsigned char c; @@ -352,7 +356,7 @@ pshift(int shift) * */ public void -pshift_all(void) +pshift_all() { pshift(column); } @@ -362,7 +366,8 @@ pshift_all(void) * for a given character attribute. */ static int -attr_swidth(int a) +attr_swidth(a) + int a; { int w = 0; @@ -385,7 +390,8 @@ attr_swidth(int a) * for a given character attribute. */ static int -attr_ewidth(int a) +attr_ewidth(a) + int a; { int w = 0; @@ -410,7 +416,10 @@ attr_ewidth(int a) * attribute sequence to be inserted, so this must be taken into account. */ static int -pwidth(LWCHAR ch, int a, LWCHAR prev_ch) +pwidth(ch, a, prev_ch) + LWCHAR ch; + int a; + LWCHAR prev_ch; { int w; @@ -471,10 +480,10 @@ pwidth(LWCHAR ch, int a, LWCHAR prev_ch) * Return 1 if one is found. */ static int -backc(void) +backc() { LWCHAR prev_ch; - constant char *p = linebuf + curr; + char *p = linebuf + curr; LWCHAR ch = step_char(&p, -1, linebuf + lmargin); int width; @@ -499,9 +508,9 @@ backc(void) * Are we currently within a recognized ANSI escape sequence? */ static int -in_ansi_esc_seq(void) +in_ansi_esc_seq() { - constant char *p; + char *p; /* * Search backwards for either an ESC (which means we ARE in a seq); @@ -522,7 +531,8 @@ in_ansi_esc_seq(void) * Is a character the end of an ANSI escape sequence? */ public int -is_ansi_end(LWCHAR ch) +is_ansi_end(ch) + LWCHAR ch; { if (!is_ascii_char(ch)) return (0); @@ -533,7 +543,8 @@ is_ansi_end(LWCHAR ch) * */ public int -is_ansi_middle(LWCHAR ch) +is_ansi_middle(ch) + LWCHAR ch; { if (!is_ascii_char(ch)) return (0); @@ -551,7 +562,11 @@ is_ansi_middle(LWCHAR ch) } while (0) static int -store_char(LWCHAR ch, int a, char *rep, POSITION pos) +store_char(ch, a, rep, pos) + LWCHAR ch; + int a; + char *rep; + POSITION pos; { int w; int replen; @@ -585,7 +600,7 @@ store_char(LWCHAR ch, int a, char *rep, POSITION pos) { if (!is_ansi_end(ch) && !is_ansi_middle(ch)) { /* Remove whole unrecognized sequence. */ - constant char *p = &linebuf[curr]; + char *p = &linebuf[curr]; LWCHAR bch; do { bch = step_char(&p, -1, linebuf); @@ -603,7 +618,7 @@ store_char(LWCHAR ch, int a, char *rep, POSITION pos) } else { - constant char *p = &linebuf[curr]; + char *p = &linebuf[curr]; LWCHAR prev_ch = step_char(&p, -1, linebuf); w = pwidth(ch, a, prev_ch); } @@ -651,7 +666,9 @@ store_char(LWCHAR ch, int a, char *rep, POSITION pos) do { if (store_tab((a),(pos))) return (1); } while (0) static int -store_tab(int attr, POSITION pos) +store_tab(attr, pos) + int attr; + POSITION pos; { int to_tab = column + cshift - lmargin; int i; @@ -680,7 +697,9 @@ store_tab(int attr, POSITION pos) do { if (store_prchar((c), (pos))) return 1; } while (0) static int -store_prchar(LWCHAR c, POSITION pos) +store_prchar(c, pos) + LWCHAR c; + POSITION pos; { char *s; @@ -704,7 +723,8 @@ store_prchar(LWCHAR c, POSITION pos) } static int -flush_mbc_buf(POSITION pos) +flush_mbc_buf(pos) + POSITION pos; { int i; @@ -721,7 +741,9 @@ flush_mbc_buf(POSITION pos) * Returns 0 if ok, 1 if couldn't fit in buffer. */ public int -pappend(unsigned char c, POSITION pos) +pappend(c, pos) + unsigned char c; + POSITION pos; { int r; @@ -824,7 +846,10 @@ pappend(unsigned char c, POSITION pos) } static int -do_append(LWCHAR ch, char *rep, POSITION pos) +do_append(ch, rep, pos) + LWCHAR ch; + char *rep; + POSITION pos; { int a; LWCHAR prev_ch; @@ -961,7 +986,7 @@ do_append(LWCHAR ch, char *rep, POSITION pos) * */ public int -pflushmbc(void) +pflushmbc() { int r = 0; @@ -978,7 +1003,9 @@ pflushmbc(void) * Terminate the line in the line buffer. */ public void -pdone(int endline, int forw) +pdone(endline, forw) + int endline; + int forw; { (void) pflushmbc(); @@ -1055,7 +1082,8 @@ pdone(int endline, int forw) * */ public void -set_status_col(char c) +set_status_col(c) + char c; { linebuf[0] = c; attr[0] = AT_NORMAL|AT_HILITE; @@ -1067,7 +1095,9 @@ set_status_col(char c) * and the character attribute in *ap. */ public int -gline(int i, int *ap) +gline(i, ap) + int i; + int *ap; { if (is_null_line) { @@ -1097,7 +1127,7 @@ gline(int i, int *ap) * Indicate that there is no current line. */ public void -null_line(void) +null_line() { is_null_line = 1; cshift = 0; @@ -1109,7 +1139,10 @@ null_line(void) * {{ This is supposed to be more efficient than forw_line(). }} */ public POSITION -forw_raw_line(POSITION curr_pos, char **linep, int *line_lenp) +forw_raw_line(curr_pos, linep, line_lenp) + POSITION curr_pos; + char **linep; + int *line_lenp; { int n; int c; @@ -1155,7 +1188,10 @@ forw_raw_line(POSITION curr_pos, char **linep, int *line_lenp) * {{ This is supposed to be more efficient than back_line(). }} */ public POSITION -back_raw_line(POSITION curr_pos, char **linep, int *line_lenp) +back_raw_line(curr_pos, linep, line_lenp) + POSITION curr_pos; + char **linep; + int *line_lenp; { int n; int c; @@ -1220,3 +1256,30 @@ back_raw_line(POSITION curr_pos, char **linep, int *line_lenp) *line_lenp = size_linebuf - 1 - n; return (new_pos); } + +/* + * Find the shift necessary to show the end of the longest displayed line. + */ + public int +rrshift() +{ + POSITION pos; + int save_width; + int line; + int longest = 0; + + save_width = sc_width; + sc_width = INT_MAX; + hshift = 0; + pos = position(TOP); + for (line = 0; line < sc_height && pos != NULL_POSITION; line++) + { + pos = forw_line(pos); + if (column > longest) + longest = column; + } + sc_width = save_width; + if (longest < sc_width) + return 0; + return longest - sc_width; +} diff --git a/contrib/less/linenum.c b/contrib/less/linenum.c index 776db34352c5..4e726377e38d 100644 --- a/contrib/less/linenum.c +++ b/contrib/less/linenum.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -73,7 +73,7 @@ extern int screen_trashed; * Initialize the line number structures. */ public void -clr_linenum(void) +clr_linenum() { struct linenum_info *p; @@ -101,7 +101,8 @@ clr_linenum(void) * Calculate the gap for an entry. */ static void -calcgap(struct linenum_info *p) +calcgap(p) + struct linenum_info *p; { /* * Don't bother to compute a gap for the anchor. @@ -120,7 +121,9 @@ calcgap(struct linenum_info *p) * FIRST character in the specified line. */ public void -add_lnum(LINENUM linenum, POSITION pos) +add_lnum(linenum, pos) + LINENUM linenum; + POSITION pos; { struct linenum_info *p; struct linenum_info *new; @@ -206,7 +209,7 @@ add_lnum(LINENUM linenum, POSITION pos) * line number, print a message to tell the user what we're doing. */ static void -longloopmessage(void) +longloopmessage() { ierror("Calculating line numbers", NULL_PARG); } @@ -217,7 +220,7 @@ static time_type startime; #endif static void -longish(void) +longish() { #if HAVE_TIME if (loopcount >= 0 && ++loopcount > 100) @@ -243,7 +246,7 @@ longish(void) * a lengthy line number calculation. */ static void -abort_long(void) +abort_long() { if (linenums == OPT_ONPLUS) /* @@ -259,7 +262,8 @@ abort_long(void) * Return 0 if we can't figure it out. */ public LINENUM -find_linenum(POSITION pos) +find_linenum(pos) + POSITION pos; { struct linenum_info *p; LINENUM linenum; @@ -373,7 +377,8 @@ find_linenum(POSITION pos) * Return NULL_POSITION if we can't figure it out. */ public POSITION -find_pos(LINENUM linenum) +find_pos(linenum) + LINENUM linenum; { struct linenum_info *p; POSITION cpos; @@ -445,7 +450,8 @@ find_pos(LINENUM linenum) * the "current" line (e.g. TOP, BOTTOM, MIDDLE, etc). */ public LINENUM -currline(int where) +currline(where) + int where; { POSITION pos; POSITION len; diff --git a/contrib/less/lsystem.c b/contrib/less/lsystem.c index 93a5e03ae590..10911ebe15d4 100644 --- a/contrib/less/lsystem.c +++ b/contrib/less/lsystem.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -38,7 +38,9 @@ extern IFILE curr_ifile; * Like plain "system()", but handles resetting terminal modes, etc. */ public void -lsystem(char *cmd, char *donemsg) +lsystem(cmd, donemsg) + char *cmd; + char *donemsg; { int inp; #if HAVE_SHELL @@ -248,7 +250,9 @@ lsystem(char *cmd, char *donemsg) * the whole current screen is piped. */ public int -pipe_mark(int c, char *cmd) +pipe_mark(c, cmd) + int c; + char *cmd; { POSITION mpos, tpos, bpos; @@ -280,7 +284,10 @@ pipe_mark(int c, char *cmd) * Feed it the file contents between the positions spos and epos. */ public int -pipe_data(char *cmd, POSITION spos, POSITION epos) +pipe_data(cmd, spos, epos) + char *cmd; + POSITION spos; + POSITION epos; { FILE *f; int c; diff --git a/contrib/less/main.c b/contrib/less/main.c index 3c99db6c8f9b..b4025656b027 100644 --- a/contrib/less/main.c +++ b/contrib/less/main.c @@ -1,6 +1,6 @@ /* $FreeBSD$ */ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -54,11 +54,13 @@ extern int jump_sline; static char consoleTitle[256]; #endif +public int line_count; extern int less_is_more; extern int missing_cap; extern int know_dumb; extern int no_init; extern int pr_type; +extern int quit_if_one_screen; /* @@ -283,10 +285,25 @@ main(argc, argv) { if (edit_stdin()) /* Edit standard input */ quit(QUIT_ERROR); + if (quit_if_one_screen) + line_count = get_line_count(); } else { if (edit_first()) /* Edit first valid file in cmd line */ quit(QUIT_ERROR); + /* + * In case that we have only one file and -F, have to get a line + * count fot init(). If the line count is less then a height of a term, + * the content of the file is printed out and then less quits. Otherwise + * -F can not be used + */ + if (quit_if_one_screen) + { + if (nifile() == 1) + line_count = get_line_count(); + else /* In case more than one file, -F can not be used */ + quit_if_one_screen = FALSE; + } } init(); @@ -301,7 +318,8 @@ main(argc, argv) * (that is, to a buffer allocated by calloc). */ public char * -save(constant char *s) +save(s) + constant char *s; { char *p; @@ -315,7 +333,9 @@ save(constant char *s) * Like calloc(), but never returns an error (NULL). */ public VOID_POINTER -ecalloc(int count, unsigned int size) +ecalloc(count, size) + int count; + unsigned int size; { VOID_POINTER p; @@ -332,7 +352,8 @@ ecalloc(int count, unsigned int size) * Skip leading spaces in a string. */ public char * -skipsp(char *s) +skipsp(s) + char *s; { while (*s == ' ' || *s == '\t') s++; @@ -345,7 +366,10 @@ skipsp(char *s) * character; the remainder of the first string may be either case. */ public int -sprefix(char *ps, char *s, int uppercase) +sprefix(ps, s, uppercase) + char *ps; + char *s; + int uppercase; { int c; int sc; @@ -375,7 +399,8 @@ sprefix(char *ps, char *s, int uppercase) * Exit the program. */ public void -quit(int status) +quit(status) + int status; { static int save_status; diff --git a/contrib/less/mark.c b/contrib/less/mark.c index 59eda4b2d56e..12a0b6c159ff 100644 --- a/contrib/less/mark.c +++ b/contrib/less/mark.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -27,7 +27,7 @@ static struct mark marks[NMARKS]; * Initialize the mark table to show no marks are set. */ public void -init_mark(void) +init_mark() { int i; @@ -39,7 +39,8 @@ init_mark(void) * See if a mark letter is valid (between a and z). */ static struct mark * -getumark(int c) +getumark(c) + int c; { if (c >= 'a' && c <= 'z') return (&marks[c-'a']); @@ -57,7 +58,8 @@ getumark(int c) * or may be constructed on the fly for certain characters like ^, $. */ static struct mark * -getmark(int c) +getmark(c) + int c; { struct mark *m; static struct mark sm; @@ -122,7 +124,8 @@ getmark(int c) * Is a mark letter is invalid? */ public int -badmark(int c) +badmark(c) + int c; { return (getmark(c) == NULL); } @@ -131,7 +134,8 @@ badmark(int c) * Set a user-defined mark. */ public void -setmark(int c) +setmark(c) + int c; { struct mark *m; struct scrpos scrpos; @@ -148,7 +152,7 @@ setmark(int c) * Set lmark (the mark named by the apostrophe). */ public void -lastmark(void) +lastmark() { struct scrpos scrpos; @@ -165,7 +169,8 @@ lastmark(void) * Go to a mark. */ public void -gomark(int c) +gomark(c) + int c; { struct mark *m; struct scrpos scrpos; @@ -212,7 +217,8 @@ gomark(int c) * because it's always the first non-blank line on the screen. */ public POSITION -markpos(int c) +markpos(c) + int c; { struct mark *m; @@ -232,7 +238,8 @@ markpos(int c) * Clear the marks associated with a specified ifile. */ public void -unmark(IFILE ifile) +unmark(ifile) + IFILE ifile; { int i; diff --git a/contrib/less/mkhelp.c b/contrib/less/mkhelp.c index bc66e7d5ff1d..16275d4bcf13 100644 --- a/contrib/less/mkhelp.c +++ b/contrib/less/mkhelp.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -18,7 +18,9 @@ #include <stdio.h> int -main(int argc, char *argv[]) +main(argc, argv) + int argc; + char *argv[]; { int ch; int prevch; diff --git a/contrib/less/mkutable b/contrib/less/mkutable index 803335b924eb..ff107b51f007 100755 --- a/contrib/less/mkutable +++ b/contrib/less/mkutable @@ -4,14 +4,14 @@ use strict; my $USAGE = <<__EOF__; usage: mkutable [-n] [-f#] type... [--] [<] UnicodeData.txt -n = take non-matching types - -f = zero-based type field (default 2) + -f = zero-based type field (default 2) __EOF__ use vars qw( $opt_f $opt_n ); use Getopt::Std; my $type_field = 2; -exit (main() ? 1 : 0); +exit (main() ? 0 : 1); sub main { my $date = `date`; @@ -28,48 +28,58 @@ sub main { $types{$arg} = 1; } my %out = ( 'types' => \%types ); - my $last_code = 0; print $header; + my $last_code = 0; while (<>) { chomp; s/#.*//; my @fields = split /;/; next if not @fields; - my $code = hex $fields[0]; + my ($lo_code, $hi_code); + my $codes = $fields[0]; + if ($codes =~ /(\w+)\.\.(\w+)/) { + $lo_code = hex $1; + $hi_code = hex $2; + } else { + $lo_code = $hi_code = hex $fields[0]; + } my $type = $fields[$type_field]; $type =~ s/\s//g; - while (++$last_code < $code) { - output(\%out, $last_code, '?'); + for ($last_code = $lo_code; $last_code <= $hi_code; ++$last_code) { + output(\%out, $last_code, $type); } - output(\%out, $code, $type); } - output(\%out, $last_code+1, '?'); + output(\%out, $last_code); + return 1; } sub output { my ($out, $code, $type) = @_; - my $match = ${${$out}{types}}{$type}; - my $type_change = (not $$out{start_type} or $type ne $$out{start_type}); - $match = not $match if $opt_n; - if ($match and (not $$out{in_run} or $type_change)) { - end_run($out, $code-1); + my $type_ok = ($type and ${${$out}{types}}{$type}); + $type_ok = not $type_ok if $opt_n; + my $prev_code = $$out{prev_code}; + + if (not $type_ok) { + end_run($out, $prev_code); + } elsif (not $$out{in_run} or $type ne $$out{run_type} or $code != $prev_code+1) { + end_run($out, $prev_code); start_run($out, $code, $type); - } elsif (not $match and $$out{in_run}) { - end_run($out, $code-1); } + $$out{prev_code} = $code; } sub start_run { my ($out, $code, $type) = @_; $$out{start_code} = $code; - $$out{start_type} = $type; + $$out{prev_code} = $code; + $$out{run_type} = $type; $$out{in_run} = 1; } sub end_run { my ($out, $code) = @_; return if not $$out{in_run}; - printf "\t{ 0x%04x, 0x%04x }, /* %s */\n", $$out{start_code}, $code, $$out{start_type}; + printf "\t{ 0x%04x, 0x%04x }, /* %s */\n", $$out{start_code}, $code, $$out{run_type}; $$out{in_run} = 0; } diff --git a/contrib/less/optfunc.c b/contrib/less/optfunc.c index 20ff1ea4cc04..4c79fe3f16b9 100644 --- a/contrib/less/optfunc.c +++ b/contrib/less/optfunc.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -47,9 +47,9 @@ extern char *every_first_cmd; extern IFILE curr_ifile; extern char version[]; extern int jump_sline; -extern int jump_sline_fraction; +extern long jump_sline_fraction; extern int shift_count; -extern int shift_count_fraction; +extern long shift_count_fraction; extern int less_is_more; #if LOGFILE extern char *namelogfile; @@ -67,6 +67,7 @@ extern int bo_fg_color, bo_bg_color; extern int ul_fg_color, ul_bg_color; extern int so_fg_color, so_bg_color; extern int bl_fg_color, bl_bg_color; +extern int sgr_mode; #endif @@ -75,7 +76,9 @@ extern int bl_fg_color, bl_bg_color; * Handler for -o option. */ public void -opt_o(int type, char *s) +opt_o(type, s) + int type; + char *s; { PARG parg; @@ -123,7 +126,9 @@ opt_o(int type, char *s) * Handler for -O option. */ public void -opt__O(int type, char *s) +opt__O(type, s) + int type; + char *s; { force_logfile = TRUE; opt_o(type, s); @@ -134,7 +139,9 @@ opt__O(int type, char *s) * Handlers for -j option. */ public void -opt_j(int type, char *s) +opt_j(type, s) + int type; + char *s; { PARG parg; char buf[16]; @@ -173,7 +180,7 @@ opt_j(int type, char *s) } else { - sprintf(buf, ".%06d", jump_sline_fraction); + sprintf(buf, ".%06ld", jump_sline_fraction); len = (int) strlen(buf); while (len > 2 && buf[len-1] == '0') len--; @@ -186,7 +193,7 @@ opt_j(int type, char *s) } public void -calc_jump_sline(void) +calc_jump_sline() { if (jump_sline_fraction < 0) return; @@ -197,7 +204,9 @@ calc_jump_sline(void) * Handlers for -# option. */ public void -opt_shift(int type, char *s) +opt_shift(type, s) + int type; + char *s; { PARG parg; char buf[16]; @@ -236,7 +245,7 @@ opt_shift(int type, char *s) } else { - sprintf(buf, ".%06d", shift_count_fraction); + sprintf(buf, ".%06ld", shift_count_fraction); len = (int) strlen(buf); while (len > 2 && buf[len-1] == '0') len--; @@ -248,7 +257,7 @@ opt_shift(int type, char *s) } } public void -calc_shift_count(void) +calc_shift_count() { if (shift_count_fraction < 0) return; @@ -257,7 +266,9 @@ calc_shift_count(void) #if USERFILE public void -opt_k(int type, char *s) +opt_k(type, s) + int type; + char *s; { PARG parg; @@ -279,7 +290,9 @@ opt_k(int type, char *s) * Handler for -t option. */ public void -opt_t(int type, char *s) +opt_t(type, s) + int type; + char *s; { IFILE save_ifile; POSITION pos; @@ -318,7 +331,9 @@ opt_t(int type, char *s) * Handler for -T option. */ public void -opt__T(int type, char *s) +opt__T(type, s) + int type; + char *s; { PARG parg; @@ -345,7 +360,9 @@ opt__T(int type, char *s) * Handler for -p option. */ public void -opt_p(int type, char *s) +opt_p(type, s) + int type; + char *s; { switch (type) { @@ -379,7 +396,9 @@ opt_p(int type, char *s) * Handler for -P option. */ public void -opt__P(int type, char *s) +opt__P(type, s) + int type; + char *s; { char **proto; PARG parg; @@ -416,7 +435,9 @@ opt__P(int type, char *s) */ /*ARGSUSED*/ public void -opt_b(int type, char *s) +opt_b(type, s) + int type; + char *s; { switch (type) { @@ -437,7 +458,9 @@ opt_b(int type, char *s) */ /*ARGSUSED*/ public void -opt_i(int type, char *s) +opt_i(type, s) + int type; + char *s; { switch (type) { @@ -455,7 +478,9 @@ opt_i(int type, char *s) */ /*ARGSUSED*/ public void -opt__V(int type, char *s) +opt__V(type, s) + int type; + char *s; { switch (type) { @@ -493,7 +518,7 @@ opt__V(int type, char *s) putstr("no "); #endif putstr("regular expressions)\n"); - putstr("Copyright (C) 1984-2015 Mark Nudelman\n\n"); + putstr("Copyright (C) 1984-2017 Mark Nudelman\n\n"); putstr("less comes with NO WARRANTY, to the extent permitted by law.\n"); putstr("For information about the terms of redistribution,\n"); putstr("see the file named README in the less distribution.\n"); @@ -508,7 +533,10 @@ opt__V(int type, char *s) * Parse an MSDOS color descriptor. */ static void -colordesc(char *s, int *fg_color, int *bg_color) +colordesc(s, fg_color, bg_color) + char *s; + int *fg_color; + int *bg_color; { int fg, bg; int err; @@ -542,8 +570,12 @@ colordesc(char *s, int *fg_color, int *bg_color) */ /*ARGSUSED*/ public void -opt_D(int type, char *s) +opt_D(type, s) + int type; + char *s; { + PARG p; + switch (type) { case INIT: @@ -565,8 +597,11 @@ opt_D(int type, char *s) case 's': colordesc(s, &so_fg_color, &so_bg_color); break; + case 'a': + sgr_mode = !sgr_mode; + break; default: - error("-D must be followed by n, d, u, k or s", NULL_PARG); + error("-D must be followed by n, d, u, k, s or a", NULL_PARG); break; } if (type == TOGGLE) @@ -576,6 +611,8 @@ opt_D(int type, char *s) } break; case QUERY: + p.p_string = (sgr_mode) ? "on" : "off"; + error("SGR mode is %s", &p); break; } } @@ -585,7 +622,9 @@ opt_D(int type, char *s) * Handler for the -x option. */ public void -opt_x(int type, char *s) +opt_x(type, s) + int type; + char *s; { extern int tabstops[]; extern int ntabstops; @@ -641,7 +680,9 @@ opt_x(int type, char *s) * Handler for the -" option. */ public void -opt_quote(int type, char *s) +opt_quote(type, s) + int type; + char *s; { char buf[3]; PARG parg; @@ -682,7 +723,9 @@ opt_quote(int type, char *s) */ /*ARGSUSED*/ public void -opt_query(int type, char *s) +opt_query(type, s) + int type; + char *s; { switch (type) { @@ -699,7 +742,7 @@ opt_query(int type, char *s) * Get the "screen window" size. */ public int -get_swindow(void) +get_swindow() { if (swindow > 0) return (swindow); diff --git a/contrib/less/option.c b/contrib/less/option.c index c5927e2c7722..8ba67bce3187 100644 --- a/contrib/less/option.c +++ b/contrib/less/option.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -23,8 +23,8 @@ static struct loption *pendopt; public int plusoption = FALSE; -static char *optstring(char *s, char **p_str, char *printopt, char *validchars); -static int flip_triple(int val, int lc); +static char *optstring(); +static int flip_triple(); extern int screen_trashed; extern int less_is_more; @@ -36,7 +36,8 @@ extern int opt_use_backslash; * Return a printable description of an option. */ static char * -opt_desc(struct loption *o) +opt_desc(o) + struct loption *o; { static char buf[OPTNAME_MAX + 10]; if (o->oletter == OLETTER_NONE) @@ -51,7 +52,8 @@ opt_desc(struct loption *o) * For example, if the option letter is 'x', just return "-x". */ public char * -propt(int c) +propt(c) + int c; { static char buf[8]; @@ -64,7 +66,8 @@ propt(int c) * LESS environment variable) and process it. */ public void -scan_option(char *s) +scan_option(s) + char *s; { struct loption *o; int optc; @@ -296,7 +299,11 @@ scan_option(char *s) * OPT_SET set to the inverse of the default value */ public void -toggle_option(struct loption *o, int lower, char *s, int how_toggle) +toggle_option(o, lower, s, how_toggle) + struct loption *o; + int lower; + char *s; + int how_toggle; { int num; int no_prompt; @@ -478,7 +485,9 @@ toggle_option(struct loption *o, int lower, char *s, int how_toggle) * "Toggle" a triple-valued option. */ static int -flip_triple(int val, int lc) +flip_triple(val, lc) + int val; + int lc; { if (lc) return ((val == OPT_ON) ? OPT_OFF : OPT_ON); @@ -490,7 +499,8 @@ flip_triple(int val, int lc) * Determine if an option takes a parameter. */ public int -opt_has_param(struct loption *o) +opt_has_param(o) + struct loption *o; { if (o == NULL) return (0); @@ -504,7 +514,8 @@ opt_has_param(struct loption *o) * Only string and number valued options have prompts. */ public char * -opt_prompt(struct loption *o) +opt_prompt(o) + struct loption *o; { if (o == NULL || (o->otype & (STRING|NUMBER)) == 0) return ("?"); @@ -519,7 +530,7 @@ opt_prompt(struct loption *o) * the previous option. */ public int -isoptpending(void) +isoptpending() { return (pendopt != NULL); } @@ -528,7 +539,8 @@ isoptpending(void) * Print error message about missing string. */ static void -nostring(char *printopt) +nostring(printopt) + char *printopt; { PARG parg; parg.p_string = printopt; @@ -539,7 +551,7 @@ nostring(char *printopt) * Print error message if a STRING type option is not followed by a string. */ public void -nopendopt(void) +nopendopt() { nostring(opt_desc(pendopt)); } @@ -550,7 +562,11 @@ nopendopt(void) * Return a pointer to the remainder of the string, if any. */ static char * -optstring(char *s, char **p_str, char *printopt, char *validchars) +optstring(s, p_str, printopt, validchars) + char *s; + char **p_str; + char *printopt; + char *validchars; { char *p; char *out; @@ -586,7 +602,9 @@ optstring(char *s, char **p_str, char *printopt, char *validchars) /* */ static int -num_error(char *printopt, int *errp) +num_error(printopt, errp) + char *printopt; + int *errp; { PARG parg; @@ -609,7 +627,10 @@ num_error(char *printopt, int *errp) * the char * to point after the translated number. */ public int -getnum(char **sp, char *printopt, int *errp) +getnum(sp, printopt, errp) + char **sp; + char *printopt; + int *errp; { char *s; int n; @@ -643,7 +664,10 @@ getnum(char **sp, char *printopt, int *errp) * That is, if "n" is returned, the fraction intended is n/NUM_FRAC_DENOM. */ public long -getfraction(char **sp, char *printopt, int *errp) +getfraction(sp, printopt, errp) + char **sp; + char *printopt; + int *errp; { char *s; long frac = 0; @@ -675,7 +699,7 @@ getfraction(char **sp, char *printopt, int *errp) * Get the value of the -e flag. */ public int -get_quit_at_eof(void) +get_quit_at_eof() { if (!less_is_more) return quit_at_eof; diff --git a/contrib/less/option.h b/contrib/less/option.h index dc97d75f77c9..6adcdde27dbe 100644 --- a/contrib/less/option.h +++ b/contrib/less/option.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -60,7 +60,7 @@ struct loption int otype; /* Type of the option */ int odefault; /* Default value */ int *ovar; /* Pointer to the associated variable */ - void (*ofunc)(); /* Pointer to special handling function */ + void (*ofunc) LESSPARAMS((int, char*)); /* Pointer to special handling function */ char *odesc[3]; /* Description of each value */ }; diff --git a/contrib/less/opttbl.c b/contrib/less/opttbl.c index 096524f94d2b..58ec347f4b68 100644 --- a/contrib/less/opttbl.c +++ b/contrib/less/opttbl.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -176,10 +176,10 @@ static struct loption option[] = }, #if MSDOS_COMPILER { 'D', &D__optname, - STRING|REPAINT|NO_QUERY, 0, NULL, opt_D, + STRING|REPAINT, 0, NULL, opt_D, { "color desc: ", - "Ddknsu0123456789.", + "Dadknsu0123456789.", NULL } }, @@ -464,7 +464,7 @@ static struct loption option[] = * Initialize each option to its default value. */ public void -init_option(void) +init_option() { struct loption *o; char *p; @@ -489,7 +489,8 @@ init_option(void) * Find an option in the option table, given its option letter. */ public struct loption * -findopt(int c) +findopt(c) + int c; { struct loption *o; @@ -507,7 +508,8 @@ findopt(int c) * */ static int -is_optchar(char c) +is_optchar(c) + char c; { if (ASCII_IS_UPPER(c)) return 1; @@ -525,7 +527,10 @@ is_optchar(char c) * p_oname if non-NULL is set to point to the full option name. */ public struct loption * -findopt_name(char **p_optname, char **p_oname, int *p_err) +findopt_name(p_optname, p_oname, p_err) + char **p_optname; + char **p_oname; + int *p_err; { char *optname = *p_optname; struct loption *o; diff --git a/contrib/less/os.c b/contrib/less/os.c index 2daf7349fff7..df117610d82f 100644 --- a/contrib/less/os.c +++ b/contrib/less/os.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -60,7 +60,10 @@ extern int sigs; * any pending iread(). */ public int -iread(int fd, char *buf, unsigned int len) +iread(fd, buf, len) + int fd; + unsigned char *buf; + unsigned int len; { int n; @@ -173,7 +176,7 @@ start: * Interrupt a pending iread(). */ public void -intread(void) +intread() { LONG_JUMP(read_label, 1); } @@ -183,7 +186,7 @@ intread(void) */ #if HAVE_TIME public time_type -get_time(void) +get_time() { time_type t; @@ -198,7 +201,8 @@ get_time(void) * Local version of strerror, if not available from the system. */ static char * -strerror(int err) +strerror(err) + int err; { #if HAVE_SYS_ERRLIST static char buf[16]; @@ -219,7 +223,8 @@ strerror(int err) * errno_message: Return an error message based on the value of "errno". */ public char * -errno_message(char *filename) +errno_message(filename) + char *filename; { char *p; char *m; @@ -241,7 +246,8 @@ errno_message(char *filename) /* #define HAVE_FLOAT 0 */ static POSITION -muldiv(POSITION val, POSITION num, POSITION den) +muldiv(val, num, den) + POSITION val, num, den; { #if HAVE_FLOAT double v = (((double) val) * num) / den; @@ -264,7 +270,9 @@ muldiv(POSITION val, POSITION num, POSITION den) * {{ Assumes a POSITION is a long int. }} */ public int -percentage(POSITION num, POSITION den) +percentage(num, den) + POSITION num; + POSITION den; { return (int) muldiv(num, (POSITION) 100, den); } @@ -273,7 +281,10 @@ percentage(POSITION num, POSITION den) * Return the specified percentage of a POSITION. */ public POSITION -percent_pos(POSITION pos, int percent, long fraction) +percent_pos(pos, percent, fraction) + POSITION pos; + int percent; + long fraction; { /* Change percent (parts per 100) to perden (parts per NUM_FRAC_DENOM). */ POSITION perden = (percent * (NUM_FRAC_DENOM / 100)) + (fraction / 100); @@ -324,7 +335,9 @@ memcpy(dst, src, len) * This implements an ANSI-style intercept setup for Microware C 3.2 */ public int -os9_signal(int type, RETSIGTYPE (*handler)()) +os9_signal(type, handler) + int type; + RETSIGTYPE (*handler)(); { intercept(handler); } diff --git a/contrib/less/output.c b/contrib/less/output.c index 4d1e2aaae540..cd9ccc25e7e1 100644 --- a/contrib/less/output.c +++ b/contrib/less/output.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -37,13 +37,14 @@ extern int bo_fg_color, bo_bg_color; extern int ul_fg_color, ul_bg_color; extern int so_fg_color, so_bg_color; extern int bl_fg_color, bl_bg_color; +extern int sgr_mode; #endif /* * Display the line which is in the line buffer. */ public void -put_line(void) +put_line() { int c; int i; @@ -93,7 +94,7 @@ static char *ob = obuf; * overwritten or scrolled away. */ public void -flush(void) +flush() { int n; int fd; @@ -126,8 +127,9 @@ flush(void) * the -D command-line option. */ char *anchor, *p, *p_next; - unsigned char fg, bg; + static unsigned char fg, fgi, bg, bgi; static unsigned char at; + unsigned char f, b; #if MSDOS_COMPILER==WIN32C /* Screen colors used by 3x and 4x SGR commands. */ static unsigned char screen_color[] = { @@ -147,6 +149,13 @@ flush(void) }; #endif + if (fg == 0 && bg == 0) + { + fg = nm_fg_color & 7; + fgi = nm_fg_color & 8; + bg = nm_bg_color & 7; + bgi = nm_bg_color & 8; + } for (anchor = p_next = obuf; (p_next = memchr(p_next, ESC, ob - p_next)) != NULL; ) { @@ -173,18 +182,21 @@ flush(void) */ p++; anchor = p_next = p; - at = 0; + fg = nm_fg_color & 7; + fgi = nm_fg_color & 8; + bg = nm_bg_color & 7; + bgi = nm_bg_color & 8; + at = 0; WIN32setcolors(nm_fg_color, nm_bg_color); continue; } p_next = p; + at &= ~32; /* * Select foreground/background colors * based on the escape sequence. */ - fg = nm_fg_color; - bg = nm_bg_color; while (!is_ansi_end(*p)) { char *q; @@ -212,17 +224,35 @@ flush(void) break; } if (*q == ';') + { q++; + at |= 32; + } switch (code) { default: /* case 0: all attrs off */ - fg = nm_fg_color; - bg = nm_bg_color; - at = 0; + fg = nm_fg_color & 7; + bg = nm_bg_color & 7; + at &= 32; + /* + * \e[0m use normal + * intensities, but + * \e[0;...m resets them + */ + if (at & 32) + { + fgi = 0; + bgi = 0; + } else + { + fgi = nm_fg_color & 8; + bgi = nm_bg_color & 8; + } break; case 1: /* bold on */ + fgi = 8; at |= 1; break; case 3: /* italic on */ @@ -230,16 +260,19 @@ flush(void) at |= 2; break; case 4: /* underline on */ + bgi = 8; at |= 4; break; case 5: /* slow blink on */ case 6: /* fast blink on */ + bgi = 8; at |= 8; break; case 8: /* concealed on */ - fg = (bg & 7) | 8; + at |= 16; break; case 22: /* bold off */ + fgi = 0; at &= ~1; break; case 23: /* italic off */ @@ -247,62 +280,84 @@ flush(void) at &= ~2; break; case 24: /* underline off */ + bgi = 0; at &= ~4; break; + case 28: /* concealed off */ + at &= ~16; + break; case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: - fg = (fg & 8) | (screen_color[code - 30]); + fg = screen_color[code - 30]; + at |= 32; break; case 39: /* default fg */ - fg = nm_fg_color; + fg = nm_fg_color & 7; + at |= 32; break; case 40: case 41: case 42: case 43: case 44: case 45: case 46: case 47: - bg = (bg & 8) | (screen_color[code - 40]); + bg = screen_color[code - 40]; + at |= 32; break; - case 49: /* default fg */ - bg = nm_bg_color; + case 49: /* default bg */ + bg = nm_bg_color & 7; + at |= 32; break; } p = q; } if (!is_ansi_end(*p) || p == p_next) break; - if (at & 1) + /* + * In SGR mode, the ANSI sequence is + * always honored; otherwise if an attr + * is used by itself ("\e[1m" versus + * "\e[1;33m", for example), set the + * color assigned to that attribute. + */ + if (sgr_mode || (at & 32)) { - /* - * If \e[1m use defined bold - * color, else set intensity. - */ - if (p[-2] == '[') + if (at & 2) { -#if MSDOS_COMPILER==WIN32C - fg |= FOREGROUND_INTENSITY; - bg |= BACKGROUND_INTENSITY; -#else - fg = bo_fg_color; - bg = bo_bg_color; -#endif + f = bg | bgi; + b = fg | fgi; } else - fg |= 8; - } 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) + { + f = fg | fgi; + b = bg | bgi; + } + } else { - fg = bl_fg_color; - bg = bl_bg_color; + if (at & 1) + { + f = bo_fg_color; + b = bo_bg_color; + } else if (at & 2) + { + f = so_fg_color; + b = so_bg_color; + } else if (at & 4) + { + f = ul_fg_color; + b = ul_bg_color; + } else if (at & 8) + { + f = bl_fg_color; + b = bl_bg_color; + } else + { + f = nm_fg_color; + b = nm_bg_color; + } } - fg &= 0xf; - bg &= 0xf; - WIN32setcolors(fg, bg); + if (at & 16) + f = b ^ 8; + f &= 0xf; + b &= 0xf; + WIN32setcolors(f, b); p_next = anchor = p + 1; } else p_next++; @@ -326,7 +381,8 @@ flush(void) * Output a character. */ public int -putchr(int c) +putchr(c) + int c; { #if 0 /* fake UTF-8 output for testing */ extern int utf_mode; @@ -379,7 +435,8 @@ putchr(int c) * Output a string. */ public void -putstr(constant char *s) +putstr(s) + constant char *s; { while (*s != '\0') putchr(*s++); @@ -414,7 +471,8 @@ TYPE_TO_A_FUNC(inttoa, int) * Output an integer in a given radix. */ static int -iprint_int(int num) +iprint_int(num) + int num; { char buf[INT_STRLEN_BOUND(num)]; @@ -427,7 +485,8 @@ iprint_int(int num) * Output a line number in a given radix. */ static int -iprint_linenum(LINENUM num) +iprint_linenum(num) + LINENUM num; { char buf[INT_STRLEN_BOUND(num)]; @@ -441,7 +500,9 @@ iprint_linenum(LINENUM num) * using a more portable argument list mechanism than printf's. */ static int -less_printf(char *fmt, PARG *parg) +less_printf(fmt, parg) + char *fmt; + PARG *parg; { char *s; int col; @@ -487,7 +548,7 @@ less_printf(char *fmt, PARG *parg) * become the next command. */ public void -get_return(void) +get_return() { int c; @@ -506,7 +567,9 @@ get_return(void) * and wait for carriage return. */ public void -error(char *fmt, PARG *parg) +error(fmt, parg) + char *fmt; + PARG *parg; { int col = 0; static char return_to_continue[] = " (press RETURN)"; @@ -559,7 +622,9 @@ static char intr_to_abort[] = "... (interrupt to abort)"; * time-consuming operation. */ public void -ierror(char *fmt, PARG *parg) +ierror(fmt, parg) + char *fmt; + PARG *parg; { at_exit(); clear_bot(); @@ -576,7 +641,9 @@ ierror(char *fmt, PARG *parg) * and return a single-character response. */ public int -query(char *fmt, PARG *parg) +query(fmt, parg) + char *fmt; + PARG *parg; { int c; int col = 0; diff --git a/contrib/less/pattern.c b/contrib/less/pattern.c index 0706f7258819..563bde0cc697 100644 --- a/contrib/less/pattern.c +++ b/contrib/less/pattern.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -12,7 +12,6 @@ */ #include "less.h" -#include "pattern.h" extern int caseless; @@ -20,7 +19,11 @@ extern int caseless; * Compile a search pattern, for future use by match_pattern. */ static int -compile_pattern2(char *pattern, int search_type, void **comp_pattern, int show_error) +compile_pattern2(pattern, search_type, comp_pattern, show_error) + char *pattern; + int search_type; + PATTERN_TYPE *comp_pattern; + int show_error; { if (search_type & SRCH_NO_REGEX) return (0); @@ -28,8 +31,6 @@ compile_pattern2(char *pattern, int search_type, void **comp_pattern, int show_e #if HAVE_GNU_REGEX struct re_pattern_buffer *comp = (struct re_pattern_buffer *) ecalloc(1, sizeof(struct re_pattern_buffer)); - struct re_pattern_buffer **pcomp = - (struct re_pattern_buffer **) comp_pattern; re_set_syntax(RE_SYNTAX_POSIX_EXTENDED); if (re_compile_pattern(pattern, strlen(pattern), comp)) { @@ -38,13 +39,15 @@ compile_pattern2(char *pattern, int search_type, void **comp_pattern, int show_e error("Invalid pattern", NULL_PARG); return (-1); } - if (*pcomp != NULL) - regfree(*pcomp); - *pcomp = comp; + if (*comp_pattern != NULL) + { + regfree(*comp_pattern); + free(*comp_pattern); + } + *comp_pattern = comp; #endif #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); @@ -52,13 +55,15 @@ compile_pattern2(char *pattern, int search_type, void **comp_pattern, int show_e error("Invalid pattern", NULL_PARG); return (-1); } - if (*pcomp != NULL) - regfree(*pcomp); - *pcomp = comp; + if (*comp_pattern != NULL) + { + regfree(*comp_pattern); + free(*comp_pattern); + } + *comp_pattern = comp; #endif #if HAVE_PCRE pcre *comp; - pcre **pcomp = (pcre **) comp_pattern; constant char *errstring; int erroffset; PARG parg; @@ -71,35 +76,32 @@ compile_pattern2(char *pattern, int search_type, void **comp_pattern, int show_e error("%s", &parg); return (-1); } - *pcomp = comp; + *comp_pattern = comp; #endif #if HAVE_RE_COMP PARG parg; - int *pcomp = (int *) comp_pattern; if ((parg.p_string = re_comp(pattern)) != NULL) { if (show_error) error("%s", &parg); return (-1); } - *pcomp = 1; + *comp_pattern = 1; #endif #if HAVE_REGCMP char *comp; - char **pcomp = (char **) comp_pattern; if ((comp = regcmp(pattern, 0)) == NULL) { if (show_error) error("Invalid pattern", NULL_PARG); return (-1); } - if (pcomp != NULL) - free(*pcomp); - *pcomp = comp; + if (comp_pattern != NULL) + free(*comp_pattern); + *comp_pattern = comp; #endif #if HAVE_V8_REGCOMP struct regexp *comp; - struct regexp **pcomp = (struct regexp **) comp_pattern; reg_show_error = show_error; comp = regcomp(pattern); reg_show_error = 1; @@ -111,9 +113,9 @@ compile_pattern2(char *pattern, int search_type, void **comp_pattern, int show_e */ return (-1); } - if (*pcomp != NULL) - free(*pcomp); - *pcomp = comp; + if (*comp_pattern != NULL) + free(*comp_pattern); + *comp_pattern = comp; #endif } return (0); @@ -123,7 +125,10 @@ compile_pattern2(char *pattern, int search_type, void **comp_pattern, int show_e * Like compile_pattern2, but convert the pattern to lowercase if necessary. */ public int -compile_pattern(char *pattern, int search_type, void **comp_pattern) +compile_pattern(pattern, search_type, comp_pattern) + char *pattern; + int search_type; + PATTERN_TYPE *comp_pattern; { char *cvt_pattern; int result; @@ -145,41 +150,42 @@ compile_pattern(char *pattern, int search_type, void **comp_pattern) * Forget that we have a compiled pattern. */ public void -uncompile_pattern(void **pattern) +uncompile_pattern(pattern) + PATTERN_TYPE *pattern; { #if HAVE_GNU_REGEX - struct re_pattern_buffer **pcomp = (struct re_pattern_buffer **) pattern; - if (*pcomp != NULL) - regfree(*pcomp); - *pcomp = NULL; + if (*pattern != NULL) + { + regfree(*pattern); + free(*pattern); + } + *pattern = NULL; #endif #if HAVE_POSIX_REGCOMP - regex_t **pcomp = (regex_t **) pattern; - if (*pcomp != NULL) - regfree(*pcomp); - *pcomp = NULL; + if (*pattern != NULL) + { + regfree(*pattern); + free(*pattern); + } + *pattern = NULL; #endif #if HAVE_PCRE - pcre **pcomp = (pcre **) pattern; - if (*pcomp != NULL) - pcre_free(*pcomp); - *pcomp = NULL; + if (*pattern != NULL) + pcre_free(*pattern); + *pattern = NULL; #endif #if HAVE_RE_COMP - int *pcomp = (int *) pattern; - *pcomp = 0; + *pattern = 0; #endif #if HAVE_REGCMP - char **pcomp = (char **) pattern; - if (*pcomp != NULL) - free(*pcomp); - *pcomp = NULL; + if (*pattern != NULL) + free(*pattern); + *pattern = NULL; #endif #if HAVE_V8_REGCOMP - struct regexp **pcomp = (struct regexp **) pattern; - if (*pcomp != NULL) - free(*pcomp); - *pcomp = NULL; + if (*pattern != NULL) + free(*pattern); + *pattern = NULL; #endif } @@ -187,9 +193,10 @@ uncompile_pattern(void **pattern) * Can a pattern be successfully compiled? */ public int -valid_pattern(char *pattern) +valid_pattern(pattern) + char *pattern; { - void *comp_pattern; + PATTERN_TYPE comp_pattern; int result; CLEAR_PATTERN(comp_pattern); @@ -204,7 +211,8 @@ valid_pattern(char *pattern) * Is a compiled pattern null? */ public int -is_null_pattern(void *pattern) +is_null_pattern(pattern) + PATTERN_TYPE pattern; { #if HAVE_GNU_REGEX return (pattern == NULL); @@ -234,7 +242,12 @@ is_null_pattern(void *pattern) * It supports no metacharacters like *, etc. */ static int -match(char *pattern, int pattern_len, char *buf, int buf_len, char **pfound, char **pend) +match(pattern, pattern_len, buf, buf_len, pfound, pend) + char *pattern; + int pattern_len; + char *buf; + int buf_len; + char **pfound, **pend; { char *pp, *lp; char *pattern_end = pattern + pattern_len; @@ -270,27 +283,17 @@ match(char *pattern, int pattern_len, char *buf, int buf_len, char **pfound, cha * Set sp and ep to the start and end of the matched string. */ public int -match_pattern(void *pattern, char *tpattern, char *line, int line_len, char **sp, char **ep, int notbol, int search_type) +match_pattern(pattern, tpattern, line, line_len, sp, ep, notbol, search_type) + PATTERN_TYPE pattern; + char *tpattern; + char *line; + int line_len; + char **sp; + char **ep; + int notbol; + int search_type; { int matched; -#if HAVE_GNU_REGEX - struct re_pattern_buffer *spattern = (struct re_pattern_buffer *) pattern; -#endif -#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 *sp = *ep = NULL; #if NO_REGEX @@ -303,9 +306,9 @@ match_pattern(void *pattern, char *tpattern, char *line, int line_len, char **sp #if HAVE_GNU_REGEX { struct re_registers search_regs; - spattern->not_bol = notbol; - spattern->regs_allocated = REGS_UNALLOCATED; - matched = re_search(spattern, line, line_len, 0, line_len, &search_regs) >= 0; + pattern->not_bol = notbol; + pattern->regs_allocated = REGS_UNALLOCATED; + matched = re_search(pattern, line, line_len, 0, line_len, &search_regs) >= 0; if (matched) { *sp = line + search_regs.start[0]; @@ -322,7 +325,7 @@ match_pattern(void *pattern, char *tpattern, char *line, int line_len, char **sp rm.rm_so = 0; rm.rm_eo = line_len; #endif - matched = !regexec(spattern, line, 1, &rm, flags); + matched = !regexec(pattern, line, 1, &rm, flags); if (matched) { #ifndef __WATCOMC__ @@ -339,7 +342,7 @@ match_pattern(void *pattern, char *tpattern, char *line, int line_len, char **sp { int flags = (notbol) ? PCRE_NOTBOL : 0; int ovector[3]; - matched = pcre_exec(spattern, NULL, line, line_len, + matched = pcre_exec(pattern, NULL, line, line_len, 0, flags, ovector, 3) >= 0; if (matched) { @@ -356,21 +359,21 @@ match_pattern(void *pattern, char *tpattern, char *line, int line_len, char **sp *sp = *ep = NULL; #endif #if HAVE_REGCMP - *ep = regex(spattern, line); + *ep = regex(pattern, line); matched = (*ep != NULL); if (matched) *sp = __loc1; #endif #if HAVE_V8_REGCOMP #if HAVE_REGEXEC2 - matched = regexec2(spattern, line, notbol); + matched = regexec2(pattern, line, notbol); #else - matched = regexec(spattern, line); + matched = regexec(pattern, line); #endif if (matched) { - *sp = spattern->startp[0]; - *ep = spattern->endp[0]; + *sp = pattern->startp[0]; + *ep = pattern->endp[0]; } #endif } diff --git a/contrib/less/pattern.h b/contrib/less/pattern.h index 712fdcf898c0..e226dc050ad4 100644 --- a/contrib/less/pattern.h +++ b/contrib/less/pattern.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -10,7 +10,7 @@ #if HAVE_GNU_REGEX #define __USE_GNU 1 #include <regex.h> -#define DEFINE_PATTERN(name) struct re_pattern_buffer *name +#define PATTERN_TYPE struct re_pattern_buffer * #define CLEAR_PATTERN(name) name = NULL #endif @@ -18,24 +18,24 @@ #include <regex.h> #ifdef REG_EXTENDED extern int less_is_more; -#define REGCOMP_FLAG (less_is_more ? 0 : REG_EXTENDED) +#define REGCOMP_FLAG (less_is_more ? 0 : REG_EXTENDED) #else -#define REGCOMP_FLAG 0 +#define REGCOMP_FLAG 0 #endif -#define DEFINE_PATTERN(name) regex_t *name +#define PATTERN_TYPE regex_t * #define CLEAR_PATTERN(name) name = NULL #endif #if HAVE_PCRE #include <pcre.h> -#define DEFINE_PATTERN(name) pcre *name +#define PATTERN_TYPE pcre * #define CLEAR_PATTERN(name) name = NULL #endif #if HAVE_RE_COMP char *re_comp(); int re_exec(); -#define DEFINE_PATTERN(name) int name +#define PATTERN_TYPE int #define CLEAR_PATTERN(name) name = 0 #endif @@ -43,18 +43,18 @@ int re_exec(); char *regcmp(); char *regex(); extern char *__loc1; -#define DEFINE_PATTERN(name) char *name +#define PATTERN_TYPE char ** #define CLEAR_PATTERN(name) name = NULL #endif #if HAVE_V8_REGCOMP #include "regexp.h" extern int reg_show_error; -#define DEFINE_PATTERN(name) struct regexp *name +#define PATTERN_TYPE struct regexp * #define CLEAR_PATTERN(name) name = NULL #endif #if NO_REGEX -#define DEFINE_PATTERN(name) +#define PATTERN_TYPE void * #define CLEAR_PATTERN(name) #endif diff --git a/contrib/less/pckeys.h b/contrib/less/pckeys.h index 8fb6800902c1..e0d86e7bdf36 100644 --- a/contrib/less/pckeys.h +++ b/contrib/less/pckeys.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. diff --git a/contrib/less/position.c b/contrib/less/position.c index a0e4e3a64417..d5e949e2919c 100644 --- a/contrib/less/position.c +++ b/contrib/less/position.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -36,7 +36,8 @@ extern int sc_width, sc_height; * the line after the bottom line on the screen */ public POSITION -position(int where) +position(where) + int where; { switch (where) { @@ -56,7 +57,8 @@ position(int where) * Add a new file position to the bottom of the position table. */ public void -add_forw_pos(POSITION pos) +add_forw_pos(pos) + POSITION pos; { int i; @@ -72,7 +74,8 @@ add_forw_pos(POSITION pos) * Add a new file position to the top of the position table. */ public void -add_back_pos(POSITION pos) +add_back_pos(pos) + POSITION pos; { int i; @@ -88,7 +91,7 @@ add_back_pos(POSITION pos) * Initialize the position table, done whenever we clear the screen. */ public void -pos_clear(void) +pos_clear() { int i; @@ -100,7 +103,7 @@ pos_clear(void) * Allocate or reallocate the position table. */ public void -pos_init(void) +pos_init() { struct scrpos scrpos; @@ -129,7 +132,8 @@ pos_init(void) * Return the position table entry if found, -1 if not. */ public int -onscreen(POSITION pos) +onscreen(pos) + POSITION pos; { int i; @@ -145,13 +149,15 @@ onscreen(POSITION pos) * See if the entire screen is empty. */ public int -empty_screen(void) +empty_screen() { return (empty_lines(0, sc_height-1)); } public int -empty_lines(int s, int e) +empty_lines(s, e) + int s; + int e; { int i; @@ -170,7 +176,8 @@ empty_lines(int s, int e) * the screen line to a number > 0. */ public void -get_scrpos(struct scrpos *scrpos) +get_scrpos(scrpos) + struct scrpos *scrpos; { int i; @@ -201,7 +208,8 @@ get_scrpos(struct scrpos *scrpos) * relative to the bottom of the screen. */ public int -adjsline(int sline) +adjsline(sline) + int sline; { /* * Negative screen line number means diff --git a/contrib/less/position.h b/contrib/less/position.h index e0e2bff490e4..30678962ccc7 100644 --- a/contrib/less/position.h +++ b/contrib/less/position.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. diff --git a/contrib/less/prompt.c b/contrib/less/prompt.c index c53f27351bfb..bf4f7291df28 100644 --- a/contrib/less/prompt.c +++ b/contrib/less/prompt.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -66,7 +66,7 @@ static char *mp; * Initialize the prompt prototype strings. */ public void -init_prompt(void) +init_prompt() { prproto[0] = save(s_proto); prproto[1] = save(less_is_more ? more_proto : m_proto); @@ -80,7 +80,8 @@ init_prompt(void) * Append a string to the end of the message. */ static void -ap_str(char *s) +ap_str(s) + char *s; { int len; @@ -96,7 +97,8 @@ ap_str(char *s) * Append a character to the end of the message. */ static void -ap_char(char c) +ap_char(c) + char c; { char buf[2]; @@ -109,7 +111,8 @@ ap_char(char c) * Append a POSITION (as a decimal integer) to the end of the message. */ static void -ap_pos(POSITION pos) +ap_pos(pos) + POSITION pos; { char buf[INT_STRLEN_BOUND(pos) + 2]; @@ -121,7 +124,8 @@ ap_pos(POSITION pos) * Append a line number to the end of the message. */ static void -ap_linenum(LINENUM linenum) +ap_linenum(linenum) + LINENUM linenum; { char buf[INT_STRLEN_BOUND(linenum) + 2]; @@ -133,7 +137,8 @@ ap_linenum(LINENUM linenum) * Append an integer to the end of the message. */ static void -ap_int(int num) +ap_int(num) + int num; { char buf[INT_STRLEN_BOUND(num) + 2]; @@ -145,7 +150,7 @@ ap_int(int num) * Append a question mark to the end of the message. */ static void -ap_quest(void) +ap_quest() { ap_str("?"); } @@ -154,7 +159,8 @@ ap_quest(void) * Return the "current" byte offset in the file. */ static POSITION -curr_byte(int where) +curr_byte(where) + int where; { POSITION pos; @@ -173,7 +179,9 @@ curr_byte(int where) * Here we decode that letter and return the appropriate boolean value. */ static int -cond(char c, int where) +cond(c, where) + char c; + int where; { POSITION len; @@ -235,7 +243,10 @@ cond(char c, int where) * usually by appending something to the message being built. */ static void -protochar(int c, int where, int iseditproto) +protochar(c, where, iseditproto) + int c; + int where; + int iseditproto; { POSITION pos; POSITION len; @@ -382,7 +393,8 @@ protochar(int c, int where, int iseditproto) * We must keep track of nested IFs and skip them properly. */ static constant char * -skipcond(constant char *p) +skipcond(p) + constant char *p; { int iflevel; @@ -439,7 +451,9 @@ skipcond(constant char *p) * Decode a char that represents a position on the screen. */ static constant char * -wherechar(char constant *p, int *wp) +wherechar(p, wp) + char constant *p; + int *wp; { switch (*p) { @@ -461,7 +475,9 @@ wherechar(char constant *p, int *wp) * Construct a message based on a prototype string. */ public char * -pr_expand(constant char *proto, int maxwidth) +pr_expand(proto, maxwidth) + constant char *proto; + int maxwidth; { constant char *p; int c; @@ -535,7 +551,7 @@ pr_expand(constant char *proto, int maxwidth) * Return a message suitable for printing by the "=" command. */ public char * -eq_message(void) +eq_message() { return (pr_expand(eqproto, 0)); } @@ -547,7 +563,7 @@ eq_message(void) * and the caller will prompt with a colon. */ public char * -pr_string(void) +pr_string() { char *prompt; int type; @@ -564,7 +580,7 @@ pr_string(void) * Return a message suitable for printing while waiting in the F command. */ public char * -wait_message(void) +wait_message() { return (pr_expand(wproto, sc_width-so_s_width-so_e_width-2)); } diff --git a/contrib/less/regexp.c b/contrib/less/regexp.c index b54c8f07ccc3..fcf7c9a83605 100644 --- a/contrib/less/regexp.c +++ b/contrib/less/regexp.c @@ -207,12 +207,13 @@ STATIC int strcspn(); * of the structure of the compiled regexp. */ regexp * -regcomp(char *exp) +regcomp(exp) +char *exp; { - regexp *r; - char *scan; - char *longest; - int len; + register regexp *r; + register char *scan; + register char *longest; + register int len; int flags; if (exp == NULL) @@ -296,12 +297,14 @@ regcomp(char *exp) * follows makes it hard to avoid. */ static char * -reg(int paren, int *flagp) +reg(paren, flagp) +int paren; /* Parenthesized? */ +int *flagp; { - char *ret; - char *br; - char *ender; - int parno = 0; + register char *ret; + register char *br; + register char *ender; + register int parno = 0; int flags; *flagp = HASWIDTH; /* Tentatively. */ @@ -366,11 +369,12 @@ reg(int paren, int *flagp) * Implements the concatenation operator. */ static char * -regbranch(int *flagp) +regbranch(flagp) +int *flagp; { - char *ret; - char *chain; - char *latest; + register char *ret; + register char *chain; + register char *latest; int flags; *flagp = WORST; /* Tentatively. */ @@ -404,11 +408,12 @@ regbranch(int *flagp) * endmarker role is not redundant. */ static char * -regpiece(int *flagp) +regpiece(flagp) +int *flagp; { - char *ret; - char op; - char *next; + register char *ret; + register char op; + register char *next; int flags; ret = regatom(&flags); @@ -467,9 +472,10 @@ regpiece(int *flagp) * separate node; the code is simpler that way and it's not worth fixing. */ static char * -regatom(int *flagp) +regatom(flagp) +int *flagp; { - char *ret; + register char *ret; int flags; *flagp = WORST; /* Tentatively. */ @@ -486,8 +492,8 @@ regatom(int *flagp) *flagp |= HASWIDTH|SIMPLE; break; case '[': { - int clss; - int classend; + register int clss; + register int classend; if (*regparse == '^') { /* Complement of range. */ ret = regnode(ANYBUT); @@ -547,8 +553,8 @@ regatom(int *flagp) *flagp |= HASWIDTH|SIMPLE; break; default: { - int len; - char ender; + register int len; + register char ender; regparse--; len = (int) strcspn(regparse, META); @@ -577,10 +583,11 @@ regatom(int *flagp) - regnode - emit a node */ static char * /* Location. */ -regnode(char op) +regnode(op) +char op; { - char *ret; - char *ptr; + register char *ret; + register char *ptr; ret = regcode; if (ret == ®dummy) { @@ -601,7 +608,8 @@ regnode(char op) - regc - emit (if appropriate) a byte of code */ static void -regc(char b) +regc(b) +char b; { if (regcode != ®dummy) *regcode++ = b; @@ -615,11 +623,13 @@ regc(char b) * Means relocating the operand. */ static void -reginsert(char op, char *opnd) +reginsert(op, opnd) +char op; +char *opnd; { - char *src; - char *dst; - char *place; + register char *src; + register char *dst; + register char *place; if (regcode == ®dummy) { regsize += 3; @@ -642,11 +652,13 @@ reginsert(char op, char *opnd) - regtail - set the next-pointer at the end of a node chain */ static void -regtail(char *p, char *val) +regtail(p, val) +char *p; +char *val; { - char *scan; - char *temp; - int offset; + register char *scan; + register char *temp; + register int offset; if (p == ®dummy) return; @@ -672,7 +684,9 @@ regtail(char *p, char *val) - regoptail - regtail on operand of first argument; nop if operandless */ static void -regoptail(char *p, char *val) +regoptail(p, val) +char *p; +char *val; { /* "Operandless" and "op != BRANCH" are synonymous in practice. */ if (p == NULL || p == ®dummy || OP(p) != BRANCH) @@ -709,9 +723,12 @@ STATIC char *regprop(); - regexec - match a regexp against a string */ int -regexec2(regexp *prog, char *string, int notbol) +regexec2(prog, string, notbol) +register regexp *prog; +register char *string; +int notbol; { - char *s; + register char *s; /* Be paranoid... */ if (prog == NULL || string == NULL) { @@ -768,7 +785,9 @@ regexec2(regexp *prog, char *string, int notbol) } int -regexec(regexp *prog, char *string) +regexec(prog, string) +register regexp *prog; +register char *string; { return regexec2(prog, string, 0); } @@ -777,11 +796,13 @@ regexec(regexp *prog, char *string) - regtry - try match at specific point */ static int /* 0 failure, 1 success */ -regtry(regexp *prog, char *string) +regtry(prog, string) +regexp *prog; +char *string; { - int i; - char **sp; - char **ep; + register int i; + register char **sp; + register char **ep; reginput = string; regstartp = prog->startp; @@ -812,10 +833,11 @@ regtry(regexp *prog, char *string) * by recursion. */ static int /* 0 failure, 1 success */ -regmatch(char *prog) +regmatch(prog) +char *prog; { - char *scan; /* Current node. */ - char *next; /* Next node. */ + register char *scan; /* Current node. */ + char *next; /* Next node. */ scan = prog; #ifdef DEBUG @@ -844,8 +866,8 @@ regmatch(char *prog) reginput++; break; case EXACTLY: { - int len; - char *opnd; + register int len; + register char *opnd; opnd = OPERAND(scan); /* Inline the first character, for speed. */ @@ -880,8 +902,8 @@ regmatch(char *prog) case OPEN+7: case OPEN+8: case OPEN+9: { - int no; - char *save; + register int no; + register char *save; no = OP(scan) - OPEN; save = reginput; @@ -909,8 +931,8 @@ regmatch(char *prog) case CLOSE+7: case CLOSE+8: case CLOSE+9: { - int no; - char *save; + register int no; + register char *save; no = OP(scan) - CLOSE; save = reginput; @@ -930,7 +952,7 @@ regmatch(char *prog) /* NOTREACHED */ break; case BRANCH: { - char *save; + register char *save; if (OP(next) != BRANCH) /* No choice. */ next = OPERAND(scan); /* Avoid recursion. */ @@ -950,10 +972,10 @@ regmatch(char *prog) break; case STAR: case PLUS: { - char nextch; - int no; - char *save; - int min; + register char nextch; + register int no; + register char *save; + register int min; /* * Lookahead to avoid useless match attempts @@ -1004,11 +1026,12 @@ regmatch(char *prog) - regrepeat - repeatedly match something simple, report how many */ static int -regrepeat(char *p) +regrepeat(p) +char *p; { - int count = 0; - char *scan; - char *opnd; + register int count = 0; + register char *scan; + register char *opnd; scan = reginput; opnd = OPERAND(p); @@ -1049,9 +1072,10 @@ regrepeat(char *p) - regnext - dig the "next" pointer out of a node */ static char * -regnext(char *p) +regnext(p) +register char *p; { - int offset; + register int offset; if (p == ®dummy) return(NULL); @@ -1074,11 +1098,12 @@ STATIC char *regprop(); - regdump - dump a regexp onto stdout in vaguely comprehensible form */ void -regdump(regexp *r) +regdump(r) +regexp *r; { - char *s; - char op = EXACTLY; /* Arbitrary non-END op. */ - char *next; + register char *s; + register char op = EXACTLY; /* Arbitrary non-END op. */ + register char *next; s = r->program + 1; @@ -1116,9 +1141,10 @@ regdump(regexp *r) - regprop - printable representation of opcode */ static char * -regprop(char *op) +regprop(op) +char *op; { - char *p; + register char *p; static char buf[50]; (void) strcpy(buf, ":"); @@ -1207,11 +1233,13 @@ regprop(char *op) */ static int -strcspn(char *s1, char *s2) +strcspn(s1, s2) +char *s1; +char *s2; { - char *scan1; - char *scan2; - int count; + register char *scan1; + register char *scan2; + register int count; count = 0; for (scan1 = s1; *scan1 != '\0'; scan1++) { diff --git a/contrib/less/screen.c b/contrib/less/screen.c index 8ae52fac80d8..5b3682731d10 100644 --- a/contrib/less/screen.c +++ b/contrib/less/screen.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -151,6 +151,7 @@ public int bl_fg_color; /* Color of blinking text */ public int bl_bg_color; static int sy_fg_color; /* Color of system text (before less) */ static int sy_bg_color; +public int sgr_mode; /* Honor ANSI sequences rather than using above */ #else @@ -203,11 +204,11 @@ public int missing_cap = 0; /* Some capability is missing */ static int attrmode = AT_NORMAL; extern int binattr; +extern int line_count; #if !MSDOS_COMPILER -static char *cheaper(char *t1, char *t2, char *def); -static void tmodes(char *incap, char *outcap, char **instr, char **outstr, - char *def_instr, char *def_outstr, char **spp); +static char *cheaper(); +static void tmodes(); #endif /* @@ -233,6 +234,7 @@ extern int wscroll; extern int screen_trashed; extern int tty; extern int top_scroll; +extern int quit_if_one_screen; extern int oldbot; #if HILITE_SEARCH extern int hilite_search; @@ -254,7 +256,8 @@ extern char *tgoto(); * It doesn't matter whether an input \n is mapped to \r, or vice versa. */ public void -raw_mode(int on) +raw_mode(on) + int on; { static int curr_on = 0; @@ -618,7 +621,8 @@ raw_mode(int on) static int hardcopy; static char * -ltget_env(char *capname) +ltget_env(capname) + char *capname; { char name[16]; char *s; @@ -646,7 +650,8 @@ ltget_env(char *capname) } static int -ltgetflag(char *capname) +ltgetflag(capname) + char *capname; { char *s; @@ -658,7 +663,8 @@ ltgetflag(char *capname) } static int -ltgetnum(char *capname) +ltgetnum(capname) + char *capname; { char *s; @@ -670,7 +676,9 @@ ltgetnum(char *capname) } static char * -ltgetstr(char *capname, char **pp) +ltgetstr(capname, pp) + char *capname; + char **pp; { char *s; @@ -686,7 +694,7 @@ ltgetstr(char *capname, char **pp) * Get size of the output screen. */ public void -scrsize(void) +scrsize() { char *s; int sys_height; @@ -816,7 +824,7 @@ scrsize(void) * Figure out how many empty loops it takes to delay a millisecond. */ static void -get_clock(void) +get_clock() { clock_t start; @@ -844,14 +852,15 @@ get_clock(void) * Delay for a specified number of milliseconds. */ static void -dummy_func(void) +dummy_func() { static long delay_dummy = 0; delay_dummy++; } static void -delay(int msec) +delay(msec) + int msec; { long i; @@ -873,7 +882,8 @@ delay(int msec) * Return the characters actually input by a "special" key. */ public char * -special_key_str(int key) +special_key_str(key) + int key; { static char tbuf[40]; char *s; @@ -1045,7 +1055,7 @@ special_key_str(int key) * Get terminal capabilities via termcap. */ public void -get_term(void) +get_term() { #if MSDOS_COMPILER auto_wrap = 1; @@ -1099,6 +1109,7 @@ get_term(void) so_bg_color = 9; bl_fg_color = 15; bl_bg_color = 0; + sgr_mode = 0; /* * Get size of the screen. @@ -1342,14 +1353,16 @@ static int costcount; /*ARGSUSED*/ static int -inc_costcount(int c) +inc_costcount(c) + int c; { costcount++; return (c); } static int -cost(char *t) +cost(t) + char *t; { costcount = 0; tputs(t, sc_height, inc_costcount); @@ -1362,7 +1375,9 @@ cost(char *t) * cost (see cost() function). */ static char * -cheaper(char *t1, char *t2, char *def) +cheaper(t1, t2, def) + char *t1, *t2; + char *def; { if (*t1 == '\0' && *t2 == '\0') { @@ -1379,8 +1394,14 @@ cheaper(char *t1, char *t2, char *def) } static void -tmodes(char *incap, char *outcap, char **instr, char **outstr, char *def_instr, - char *def_outstr, char **spp) +tmodes(incap, outcap, instr, outstr, def_instr, def_outstr, spp) + char *incap; + char *outcap; + char **instr; + char **outstr; + char *def_instr; + char *def_outstr; + char **spp; { *instr = ltgetstr(incap, spp); if (*instr == NULL) @@ -1429,8 +1450,11 @@ _settextposition(int row, int col) * Initialize the screen to the correct color at startup. */ static void -initcolor(void) +initcolor() { +#if MSDOS_COMPILER==BORLANDC || MSDOS_COMPILER==DJGPPC + intensevideo(); +#endif SETCOLORS(nm_fg_color, nm_bg_color); #if 0 /* @@ -1462,7 +1486,7 @@ initcolor(void) * Termcap-like init with a private win32 console. */ static void -win32_init_term(void) +win32_init_term() { CONSOLE_SCREEN_BUFFER_INFO scr; COORD size; @@ -1513,10 +1537,12 @@ win32_deinit_term() * Initialize terminal */ public void -init(void) +init() { #if !MSDOS_COMPILER - if (!no_init) + if (quit_if_one_screen && line_count >= sc_height) + quit_if_one_screen = FALSE; + if (!no_init && !quit_if_one_screen) tputs(sc_init, sc_height, putchr); if (!no_keypad) tputs(sc_s_keypad, sc_height, putchr); @@ -1549,14 +1575,14 @@ init(void) * Deinitialize terminal */ public void -deinit(void) +deinit() { if (!init_done) return; #if !MSDOS_COMPILER if (!no_keypad) tputs(sc_e_keypad, sc_height, putchr); - if (!no_init) + if (!no_init && !quit_if_one_screen) tputs(sc_deinit, sc_height, putchr); #else /* Restore system colors. */ @@ -1576,7 +1602,7 @@ deinit(void) * Home cursor (move to upper left corner of screen). */ public void -home(void) +home() { #if !MSDOS_COMPILER tputs(sc_home, 1, putchr); @@ -1591,7 +1617,7 @@ home(void) * Should scroll the display down. */ public void -add_line(void) +add_line() { #if !MSDOS_COMPILER tputs(sc_addline, sc_height, putchr); @@ -1649,7 +1675,8 @@ add_line(void) * into the scrollback buffer when we go down-one-line (in WIN32). */ public void -remove_top(int n) +remove_top(n) + int n; { #if MSDOS_COMPILER==WIN32C SMALL_RECT rcSrc, rcClip; @@ -1702,7 +1729,7 @@ remove_top(int n) * Clear the screen. */ static void -win32_clear(void) +win32_clear() { /* * This will clear only the currently visible rows of the NT @@ -1733,7 +1760,8 @@ win32_clear(void) * window upward. */ public void -win32_scroll_up(int n) +win32_scroll_up(n) + int n; { SMALL_RECT rcSrc, rcClip; CHAR_INFO fillchar; @@ -1798,7 +1826,7 @@ win32_scroll_up(int n) * Move cursor to lower left corner of screen. */ public void -lower_left(void) +lower_left() { #if !MSDOS_COMPILER tputs(sc_lower_left, 1, putchr); @@ -1812,7 +1840,7 @@ lower_left(void) * Move cursor to left position of current line. */ public void -line_left(void) +line_left() { #if !MSDOS_COMPILER tputs(sc_return, 1, putchr); @@ -1844,7 +1872,7 @@ line_left(void) * (in lieu of SIGWINCH for WIN32). */ public void -check_winch(void) +check_winch() { #if MSDOS_COMPILER==WIN32C CONSOLE_SCREEN_BUFFER_INFO scr; @@ -1874,7 +1902,8 @@ check_winch(void) * Goto a specific line on the screen. */ public void -goto_line(int slinenum) +goto_line(slinenum) + int slinenum; { #if !MSDOS_COMPILER tputs(tgoto(sc_move, 0, slinenum), 1, putchr); @@ -1892,7 +1921,7 @@ goto_line(int slinenum) * {{ Yuck! There must be a better way to get a visual bell. }} */ static void -create_flash(void) +create_flash() { #if MSDOS_COMPILER==MSOFTC struct videoconfig w; @@ -1951,7 +1980,7 @@ create_flash(void) * Output the "visual bell", if there is one. */ public void -vbell(void) +vbell() { #if !MSDOS_COMPILER if (*sc_visual_bell == '\0') @@ -2015,7 +2044,7 @@ vbell(void) * Make a noise. */ static void -beep(void) +beep() { #if !MSDOS_COMPILER putchr(CONTROL('G')); @@ -2032,7 +2061,7 @@ beep(void) * Ring the terminal bell. */ public void -bell(void) +bell() { if (quiet == VERY_QUIET) vbell(); @@ -2044,7 +2073,7 @@ bell(void) * Clear the screen. */ public void -clear(void) +clear() { #if !MSDOS_COMPILER tputs(sc_clear, sc_height, putchr); @@ -2063,7 +2092,7 @@ clear(void) * {{ This must not move the cursor. }} */ public void -clear_eol(void) +clear_eol() { #if !MSDOS_COMPILER tputs(sc_eol_clear, 1, putchr); @@ -2122,7 +2151,7 @@ clear_eol(void) * Clear the screen if there's off-screen memory below the display. */ static void -clear_eol_bot(void) +clear_eol_bot() { #if MSDOS_COMPILER clear_eol(); @@ -2139,7 +2168,7 @@ clear_eol_bot(void) * Leave the cursor at the beginning of the bottom line. */ public void -clear_bot(void) +clear_bot() { /* * If we're in a non-normal attribute mode, temporarily exit @@ -2164,7 +2193,8 @@ clear_bot(void) } public void -at_enter(int attr) +at_enter(attr) + int attr; { attr = apply_at_specials(attr); @@ -2202,7 +2232,7 @@ at_enter(int attr) } public void -at_exit(void) +at_exit() { #if !MSDOS_COMPILER /* Undo things in the reverse order we did them. */ @@ -2223,7 +2253,8 @@ at_exit(void) } public void -at_switch(int attr) +at_switch(attr) + int attr; { int new_attrmode = apply_at_specials(attr); int ignore_modes = AT_ANSI; @@ -2236,7 +2267,9 @@ at_switch(int attr) } public int -is_at_equiv(int attr1, int attr2) +is_at_equiv(attr1, attr2) + int attr1; + int attr2; { attr1 = apply_at_specials(attr1); attr2 = apply_at_specials(attr2); @@ -2245,7 +2278,8 @@ is_at_equiv(int attr1, int attr2) } public int -apply_at_specials(int attr) +apply_at_specials(attr) + int attr; { if (attr & AT_BINARY) attr |= binattr; @@ -2262,7 +2296,7 @@ apply_at_specials(int attr) * and move the cursor left. */ public void -backspace(void) +backspace() { #if !MSDOS_COMPILER /* @@ -2311,7 +2345,7 @@ backspace(void) * Output a plain backspace, without erasing the previous char. */ public void -putbs(void) +putbs() { #if !MSDOS_COMPILER tputs(sc_backspace, 1, putchr); @@ -2350,7 +2384,8 @@ putbs(void) * Determine whether an input character is waiting to be read. */ static int -win32_kbhit(HANDLE tty) +win32_kbhit(tty) + HANDLE tty; { INPUT_RECORD ip; DWORD read; @@ -2406,7 +2441,16 @@ win32_kbhit(HANDLE tty) currentKey.scan = PCK_CTL_DELETE; break; } + } else if (ip.Event.KeyEvent.dwControlKeyState & SHIFT_PRESSED) + { + switch (currentKey.scan) + { + case PCK_SHIFT_TAB: /* tab */ + currentKey.ascii = 0; + break; + } } + return (TRUE); } @@ -2414,7 +2458,8 @@ win32_kbhit(HANDLE tty) * Read a character from the keyboard. */ public char -WIN32getch(int tty) +WIN32getch(tty) + int tty; { int ascii; @@ -2447,7 +2492,9 @@ WIN32getch(int tty) /* */ public void -WIN32setcolors(int fg, int bg) +WIN32setcolors(fg, bg) + int fg; + int bg; { SETCOLORS(fg, bg); } @@ -2455,7 +2502,9 @@ WIN32setcolors(int fg, int bg) /* */ public void -WIN32textout(char *text, int len) +WIN32textout(text, len) + char *text; + int len; { #if MSDOS_COMPILER==WIN32C DWORD written; diff --git a/contrib/less/scrsize.c b/contrib/less/scrsize.c index c08d666704b5..001c55ace385 100644 --- a/contrib/less/scrsize.c +++ b/contrib/less/scrsize.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -45,7 +45,11 @@ #include <stdlib.h> #include <stdio.h> -static int get_winsize(Display *dpy, Window window, int *p_width, int *p_height) +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; @@ -75,7 +79,9 @@ static int get_winsize(Display *dpy, Window window, int *p_width, int *p_height) return 0; } -int main(int argc, char *argv[]) +int main(argc, argv) + int argc; + char *argv[]; { char *cp; Display *dpy; diff --git a/contrib/less/search.c b/contrib/less/search.c index cb302a94e411..84f9288a229c 100644 --- a/contrib/less/search.c +++ b/contrib/less/search.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -13,7 +13,6 @@ */ #include "less.h" -#include "pattern.h" #include "position.h" #include "charset.h" @@ -29,7 +28,7 @@ extern int jump_sline; extern int bs_mode; extern int ctldisp; extern int status_col; -extern void * constant ml_search; +extern void *ml_search; extern POSITION start_attnpos; extern POSITION end_attnpos; extern int utf_mode; @@ -103,7 +102,7 @@ static struct hilite_tree filter_anchor = HILITE_INITIALIZER(); * search pattern and filter pattern. */ struct pattern_info { - DEFINE_PATTERN(compiled); + PATTERN_TYPE compiled; char* text; int search_type; }; @@ -121,9 +120,10 @@ static struct pattern_info filter_info; * Are there any uppercase letters in this string? */ static int -is_ucase(constant char *str) +is_ucase(str) + char *str; { - constant char *str_end = str + strlen(str); + char *str_end = str + strlen(str); LWCHAR ch; while (str < str_end) @@ -139,13 +139,15 @@ is_ucase(constant char *str) * Compile and save a search pattern. */ static int -set_pattern(struct pattern_info *info, char *pattern, int search_type) +set_pattern(info, pattern, search_type) + struct pattern_info *info; + char *pattern; + int search_type; { #if !NO_REGEX if (pattern == NULL) CLEAR_PATTERN(info->compiled); - else if (compile_pattern(pattern, search_type, - (void **)&info->compiled) < 0) + else if (compile_pattern(pattern, search_type, &info->compiled) < 0) return -1; #endif /* Pattern compiled successfully; save the text too. */ @@ -175,13 +177,14 @@ set_pattern(struct pattern_info *info, char *pattern, int search_type) * Discard a saved pattern. */ static void -clear_pattern(struct pattern_info *info) +clear_pattern(info) + struct pattern_info *info; { if (info->text != NULL) free(info->text); info->text = NULL; #if !NO_REGEX - uncompile_pattern((void **)&info->compiled); + uncompile_pattern(&info->compiled); #endif } @@ -189,7 +192,8 @@ clear_pattern(struct pattern_info *info) * Initialize saved pattern to nothing. */ static void -init_pattern(struct pattern_info *info) +init_pattern(info) + struct pattern_info *info; { CLEAR_PATTERN(info->compiled); info->text = NULL; @@ -200,7 +204,7 @@ init_pattern(struct pattern_info *info) * Initialize search variables. */ public void -init_search(void) +init_search() { init_pattern(&search_info); init_pattern(&filter_info); @@ -210,7 +214,7 @@ init_search(void) * Determine which text conversions to perform before pattern matching. */ static int -get_cvt_ops(void) +get_cvt_ops() { int ops = 0; if (is_caseless || bs_mode == BS_SPECIAL) @@ -234,7 +238,8 @@ get_cvt_ops(void) * Is there a previous (remembered) search pattern? */ static int -prev_pattern(struct pattern_info *info) +prev_pattern(info) + struct pattern_info *info; { #if !NO_REGEX if ((info->search_type & SRCH_NO_REGEX) == 0) @@ -250,7 +255,8 @@ prev_pattern(struct pattern_info *info) * If on==0, force all hilites off. */ public void -repaint_hilite(int on) +repaint_hilite(on) + int on; { int slinenum; POSITION pos; @@ -291,7 +297,7 @@ repaint_hilite(int on) * Clear the attn hilite. */ public void -clear_attn(void) +clear_attn() { int slinenum; POSITION old_start_attnpos; @@ -338,7 +344,7 @@ clear_attn(void) * Hide search string highlighting. */ public void -undo_search(void) +undo_search() { if (!prev_pattern(&search_info)) { @@ -356,7 +362,8 @@ undo_search(void) * Clear the hilite list. */ public void -clr_hlist(struct hilite_tree *anchor) +clr_hlist(anchor) + struct hilite_tree *anchor; { struct hilite_storage *hls; struct hilite_storage *nexthls; @@ -377,13 +384,13 @@ clr_hlist(struct hilite_tree *anchor) } public void -clr_hilite(void) +clr_hilite() { clr_hlist(&hilite_anchor); } public void -clr_filter(void) +clr_filter() { clr_hlist(&filter_anchor); } @@ -512,7 +519,9 @@ hlist_find(anchor, pos) * Should any characters in a specified range be highlighted? */ static int -is_hilited_range(POSITION pos, POSITION epos) +is_hilited_range(pos, epos) + POSITION pos; + POSITION epos; { struct hilite_node *n = hlist_find(&hilite_anchor, pos); return (n != NULL && (epos == NULL_POSITION || epos > n->r.hl_startpos)); @@ -522,7 +531,8 @@ is_hilited_range(POSITION pos, POSITION epos) * Is a line "filtered" -- that is, should it be hidden? */ public int -is_filtered(POSITION pos) +is_filtered(pos) + POSITION pos; { struct hilite_node *n; @@ -538,7 +548,8 @@ is_filtered(POSITION pos) * just return pos. */ public POSITION -next_unfiltered(POSITION pos) +next_unfiltered(pos) + POSITION pos; { struct hilite_node *n; @@ -559,7 +570,8 @@ next_unfiltered(POSITION pos) * we're filtered right to the beginning, otherwise just return pos. */ public POSITION -prev_unfiltered(POSITION pos) +prev_unfiltered(pos) + POSITION pos; { struct hilite_node *n; @@ -584,7 +596,11 @@ prev_unfiltered(POSITION pos) * If nohide is nonzero, don't consider hide_hilite. */ public int -is_hilited(POSITION pos, POSITION epos, int nohide, int *p_matches) +is_hilited(pos, epos, nohide, p_matches) + POSITION pos; + POSITION epos; + int nohide; + int *p_matches; { int match; @@ -630,7 +646,8 @@ is_hilited(POSITION pos, POSITION epos, int nohide, int *p_matches) * capacity, or create a new one if not. */ static struct hilite_storage* -hlist_getstorage(struct hilite_tree *anchor) +hlist_getstorage(anchor) + struct hilite_tree *anchor; { int capacity = 1; struct hilite_storage *s; @@ -660,7 +677,8 @@ hlist_getstorage(struct hilite_tree *anchor) * tree. */ static struct hilite_node* -hlist_getnode(struct hilite_tree *anchor) +hlist_getnode(anchor) + struct hilite_tree *anchor; { struct hilite_storage *s = hlist_getstorage(anchor); return &s->nodes[s->used++]; @@ -670,7 +688,9 @@ hlist_getnode(struct hilite_tree *anchor) * Rotate the tree left around a pivot node. */ static void -hlist_rotate_left(struct hilite_tree *anchor, struct hilite_node *n) +hlist_rotate_left(anchor, n) + struct hilite_tree *anchor; + struct hilite_node *n; { struct hilite_node *np = n->parent; struct hilite_node *nr = n->right; @@ -699,7 +719,9 @@ hlist_rotate_left(struct hilite_tree *anchor, struct hilite_node *n) * Rotate the tree right around a pivot node. */ static void -hlist_rotate_right(struct hilite_tree *anchor, struct hilite_node *n) +hlist_rotate_right(anchor, n) + struct hilite_tree *anchor; + struct hilite_node *n; { struct hilite_node *np = n->parent; struct hilite_node *nl = n->left; @@ -729,7 +751,9 @@ hlist_rotate_right(struct hilite_tree *anchor, struct hilite_node *n) * Add a new hilite to a hilite list. */ static void -add_hilite(struct hilite_tree *anchor, struct hilite *hl) +add_hilite(anchor, hl) + struct hilite_tree *anchor; + struct hilite *hl; { struct hilite_node *p, *n, *u; @@ -906,7 +930,11 @@ add_hilite(struct hilite_tree *anchor, struct hilite *hl) * Hilight every character in a range of displayed characters. */ static void -create_hilites(POSITION linepos, int start_index, int end_index, int *chpos) +create_hilites(linepos, start_index, end_index, chpos) + POSITION linepos; + int start_index; + int end_index; + int *chpos; { struct hilite hl; int i; @@ -943,8 +971,14 @@ create_hilites(POSITION linepos, int start_index, int end_index, int *chpos) * sp,ep delimit the first match already found. */ static void -hilite_line(POSITION linepos, char *line, int line_len, int *chpos, char *sp, - char *ep, int cvt_ops) +hilite_line(linepos, line, line_len, chpos, sp, ep, cvt_ops) + POSITION linepos; + char *line; + int line_len; + int *chpos; + char *sp; + char *ep; + int cvt_ops; { char *searchp; char *line_end = line + line_len; @@ -980,33 +1014,12 @@ hilite_line(POSITION linepos, char *line, int line_len, int *chpos, char *sp, } #endif -/* - * Change the caseless-ness of searches. - * Updates the internal search state to reflect a change in the -i flag. - */ - public void -chg_caseless(void) -{ - if (!is_ucase_pattern) - /* - * Pattern did not have uppercase. - * Just set the search caselessness to the global caselessness. - */ - is_caseless = caseless; - else - /* - * Pattern did have uppercase. - * Discard the pattern; we can't change search caselessness now. - */ - clear_pattern(&search_info); -} - #if HILITE_SEARCH /* * Find matching text which is currently on screen and highlight it. */ static void -hilite_screen(void) +hilite_screen() { struct scrpos scrpos; @@ -1021,7 +1034,7 @@ hilite_screen(void) * Change highlighting parameters. */ public void -chg_hilite(void) +chg_hilite() { /* * Erase any highlights currently on screen. @@ -1041,7 +1054,8 @@ chg_hilite(void) * Figure out where to start a search. */ static POSITION -search_pos(int search_type) +search_pos(search_type) + int search_type; { POSITION pos; int linenum; @@ -1078,18 +1092,18 @@ search_pos(int search_type) * Search does not include current screen. */ if (search_type & SRCH_FORW) - linenum = BOTTOM_PLUS_ONE; + linenum = sc_height-1; /* BOTTOM_PLUS_ONE */ else - linenum = TOP; + linenum = 0; /* TOP */ } else if (how_search == OPT_ONPLUS && !(search_type & SRCH_AFTER_TARGET)) { /* * Search includes all of displayed screen. */ if (search_type & SRCH_FORW) - linenum = TOP; + linenum = 0; /* TOP */ else - linenum = BOTTOM_PLUS_ONE; + linenum = sc_height-1; /* BOTTOM_PLUS_ONE */ } else { /* @@ -1133,8 +1147,14 @@ search_pos(int search_type) * Search a subset of the file, specified by start/end position. */ static int -search_range(POSITION pos, POSITION endpos, int search_type, int matches, - int maxlines, POSITION *plinepos, POSITION *pendpos) +search_range(pos, endpos, search_type, matches, maxlines, plinepos, pendpos) + POSITION pos; + POSITION endpos; + int search_type; + int matches; + int maxlines; + POSITION *plinepos; + POSITION *pendpos; { char *line; char *cline; @@ -1250,6 +1270,8 @@ search_range(POSITION pos, POSITION endpos, int search_type, int matches, hl.hl_startpos = linepos; hl.hl_endpos = pos; add_hilite(&filter_anchor, &hl); + free(cline); + free(chpos); continue; } } @@ -1313,7 +1335,8 @@ search_range(POSITION pos, POSITION endpos, int search_type, int matches, * search for a pattern in history. If found, compile that pattern. */ static int -hist_pattern(int search_type) +hist_pattern(search_type) + int search_type; { #if CMD_HISTORY char *pattern; @@ -1338,6 +1361,30 @@ hist_pattern(int search_type) } /* + * Change the caseless-ness of searches. + * Updates the internal search state to reflect a change in the -i flag. + */ + public void +chg_caseless() +{ + if (!is_ucase_pattern) + /* + * Pattern did not have uppercase. + * Just set the search caselessness to the global caselessness. + */ + is_caseless = caseless; + else + { + /* + * Pattern did have uppercase. + * Regenerate the pattern using the new state. + */ + clear_pattern(&search_info); + hist_pattern(search_info.search_type); + } +} + +/* * Search for the n-th occurrence of a specified pattern, * either forward or backward. * Return the number of matches not yet found in this file @@ -1347,7 +1394,10 @@ hist_pattern(int search_type) * if less than n matches are found in this file. */ public int -search(int search_type, char *pattern, int n) +search(search_type, pattern, n) + int search_type; + char *pattern; + int n; { POSITION pos; @@ -1481,7 +1531,10 @@ search(int search_type, char *pattern, int n) * prep_hilite asks that the range (spos,epos) be covered by the prep region. */ public void -prep_hilite(POSITION spos, POSITION epos, int maxlines) +prep_hilite(spos, epos, maxlines) + POSITION spos; + POSITION epos; + int maxlines; { POSITION nprep_startpos = prep_startpos; POSITION nprep_endpos = prep_endpos; @@ -1648,7 +1701,9 @@ prep_hilite(POSITION spos, POSITION epos, int maxlines) * Set the pattern to be used for line filtering. */ public void -set_filter_pattern(char *pattern, int search_type) +set_filter_pattern(pattern, search_type) + char *pattern; + int search_type; { clr_filter(); if (pattern == NULL || *pattern == '\0') @@ -1662,7 +1717,7 @@ set_filter_pattern(char *pattern, int search_type) * Is there a line filter in effect? */ public int -is_filtering(void) +is_filtering() { if (ch_getflags() & CH_HELPFILE) return (0); diff --git a/contrib/less/signal.c b/contrib/less/signal.c index 6766e1d87417..5cc4b33f9268 100644 --- a/contrib/less/signal.c +++ b/contrib/less/signal.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -42,7 +42,8 @@ extern long jump_sline_fraction; */ /* ARGSUSED*/ static RETSIGTYPE -u_interrupt(int type) +u_interrupt(type) + int type; { bell(); #if OS2 @@ -71,7 +72,8 @@ u_interrupt(int type) */ /* ARGSUSED*/ static RETSIGTYPE -stop(int type) +stop(type) + int type; { LSIGNAL(SIGTSTP, stop); sigs |= S_STOP; @@ -86,7 +88,8 @@ stop(int type) */ /* ARGSUSED*/ public RETSIGTYPE -winch(int type) +winch(type) + int type; { LSIGNAL(SIGWINCH, winch); sigs |= S_WINCH; @@ -100,7 +103,8 @@ winch(int type) */ /* ARGSUSED*/ public RETSIGTYPE -winch(int type) +winch(type) + int type; { LSIGNAL(SIGWIND, winch); sigs |= S_WINCH; @@ -117,7 +121,8 @@ winch(int type) #include "windows.h" static BOOL WINAPI -wbreak_handler(DWORD dwCtrlType) +wbreak_handler(dwCtrlType) + DWORD dwCtrlType; { switch (dwCtrlType) { @@ -136,7 +141,8 @@ wbreak_handler(DWORD dwCtrlType) * Set up the signal handlers. */ public void -init_signals(int on) +init_signals(on) + int on; { if (on) { @@ -188,7 +194,7 @@ init_signals(int on) * A received signal cause a bit to be set in "sigs". */ public void -psignals(void) +psignals() { int tsignals; diff --git a/contrib/less/tags.c b/contrib/less/tags.c index 3fb65b0443f9..f59d25b411f4 100644 --- a/contrib/less/tags.c +++ b/contrib/less/tags.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -43,13 +43,13 @@ enum { T_GPATH /* 'GPATH': path name (global) */ }; -static enum tag_result findctag(char *tag); -static enum tag_result findgtag(char *tag, int type); -static char *nextgtag(void); -static char *prevgtag(void); -static POSITION ctagsearch(void); -static POSITION gtagsearch(void); -static int getentry(char *buf, char **tag, char **file, char **line); +static enum tag_result findctag(); +static enum tag_result findgtag(); +static char *nextgtag(); +static char *prevgtag(); +static POSITION ctagsearch(); +static POSITION gtagsearch(); +static int getentry(); /* * The list of tags generated by the last findgtag() call. @@ -63,8 +63,6 @@ struct taglist { struct tag *tl_first; struct tag *tl_last; }; -#define TAG_END ((struct tag *) &taglist) -static struct taglist taglist = { TAG_END, TAG_END }; struct tag { struct tag *next, *prev; /* List links */ char *tag_file; /* Source file containing the tag */ @@ -72,6 +70,8 @@ struct tag { char *tag_pattern; /* Pattern used to find the tag */ char tag_endline; /* True if the pattern includes '$' */ }; +#define TAG_END ((struct tag *) &taglist) +static struct taglist taglist = { TAG_END, TAG_END }; static struct tag *curtag; #define TAG_INS(tp) \ @@ -88,7 +88,7 @@ static struct tag *curtag; * Delete tag structures. */ public void -cleantags(void) +cleantags() { struct tag *tp; @@ -110,7 +110,12 @@ cleantags(void) * Create a new tag entry. */ static struct tag * -maketagent(char *name, char *file, LINENUM linenum, char *pattern, int endline) +maketagent(name, file, linenum, pattern, endline) + char *name; + char *file; + LINENUM linenum; + char *pattern; + int endline; { struct tag *tp; @@ -133,7 +138,7 @@ maketagent(char *name, char *file, LINENUM linenum, char *pattern, int endline) * Get tag mode. */ public int -gettagtype(void) +gettagtype() { int f; @@ -164,7 +169,8 @@ gettagtype(void) * to find the tag. */ public void -findtag(char *tag) +findtag(tag) + char *tag; { int type = gettagtype(); enum tag_result result; @@ -194,7 +200,7 @@ findtag(char *tag) * Search for a tag. */ public POSITION -tagsearch(void) +tagsearch() { if (curtag == NULL) return (NULL_POSITION); /* No gtags loaded! */ @@ -208,7 +214,8 @@ tagsearch(void) * Go to the next tag. */ public char * -nexttag(int n) +nexttag(n) + int n; { char *tagfile = (char *) NULL; @@ -221,7 +228,8 @@ nexttag(int n) * Go to the previous tag. */ public char * -prevtag(int n) +prevtag(n) + int n; { char *tagfile = (char *) NULL; @@ -234,7 +242,7 @@ prevtag(int n) * Return the total number of tags. */ public int -ntags(void) +ntags() { return total; } @@ -243,7 +251,7 @@ ntags(void) * Return the sequence number of current tag. */ public int -curr_tag(void) +curr_tag() { return curseq; } @@ -257,7 +265,8 @@ curr_tag(void) * Sets curtag to the first tag entry. */ static enum tag_result -findctag(char *tag) +findctag(tag) + char *tag; { char *p; FILE *f; @@ -368,7 +377,7 @@ findctag(char *tag) * Edit current tagged file. */ public int -edit_tagfile(void) +edit_tagfile() { if (curtag == NULL) return (1); @@ -385,7 +394,7 @@ edit_tagfile(void) * parentheses (which are almost always found in a tag). */ static POSITION -ctagsearch(void) +ctagsearch() { POSITION pos, linepos; LINENUM linenum; @@ -461,7 +470,9 @@ ctagsearch(void) * Sets curtag to the first tag entry. */ static enum tag_result -findgtag(char *tag, int type) +findgtag(tag, type) + char *tag; /* tag to load */ + int type; /* tags type */ { char buf[256]; FILE *fp; @@ -594,7 +605,7 @@ static int circular = 0; /* 1: circular tag structure */ * appropriate tag. */ static char * -nextgtag(void) +nextgtag() { struct tag *tp; @@ -624,7 +635,7 @@ nextgtag(void) * at the appropriate tag. */ static char * -prevgtag(void) +prevgtag() { struct tag *tp; @@ -654,7 +665,7 @@ prevgtag(void) * if it was unable to position at the tag, 0 if successful. */ static POSITION -gtagsearch(void) +gtagsearch() { if (curtag == NULL) return (NULL_POSITION); /* No gtags loaded! */ @@ -690,7 +701,11 @@ gtagsearch(void) * into buf. */ static int -getentry(char *buf, char **tag, char **file, char **line) +getentry(buf, tag, file, line) + char *buf; /* standard or extended ctags -x format data */ + char **tag; /* name of the tag we actually found */ + char **file; /* file in which to find this tag */ + char **line; /* line number of file where this tag is found */ { char *p = buf; diff --git a/contrib/less/ttyin.c b/contrib/less/ttyin.c index 7a8364c8af5f..87cffc28eb26 100644 --- a/contrib/less/ttyin.c +++ b/contrib/less/ttyin.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -31,7 +31,7 @@ extern int utf_mode; * Open keyboard for input. */ public void -open_getchr(void) +open_getchr() { #if MSDOS_COMPILER==WIN32C /* Need this to let child processes inherit our console handle */ @@ -85,7 +85,7 @@ open_getchr(void) * Close the keyboard. */ public void -close_getchr(void) +close_getchr() { #if MSDOS_COMPILER==WIN32C SetConsoleMode((HANDLE)tty, console_mode); @@ -97,7 +97,7 @@ close_getchr(void) * Get a character from the keyboard. */ public int -getchr(void) +getchr() { char c; int result; @@ -120,7 +120,11 @@ getchr(void) if (c == '\003') return (READ_INTR); #else - result = iread(tty, &c, sizeof(char)); + { + unsigned char uc; + result = iread(tty, &uc, sizeof(char)); + c = (char) uc; + } if (result == READ_INTR) return (READ_INTR); if (result < 0) @@ -135,8 +139,8 @@ getchr(void) #if 0 /* allow entering arbitrary hex chars for testing */ /* ctrl-A followed by two hex chars makes a byte */ { - int hex_in = 0; - int hex_value = 0; + static int hex_in = 0; + static int hex_value = 0; if (c == CONTROL('A')) { hex_in = 2; diff --git a/contrib/less/ubin.uni b/contrib/less/ubin.uni index 39ec303f7650..17c45903003f 100644 --- a/contrib/less/ubin.uni +++ b/contrib/less/ubin.uni @@ -1,4 +1,4 @@ -/* Generated by "./mkutable -f2 Cc Cf Cs Co Zl Zp -- unicode/UnicodeData.txt" on Mon Jul 14 16:21:22 PDT 2014 */ +/* Generated by "./mkutable -f2 Cc Cf Cs Co Zl Zp -- unicode/UnicodeData.txt" on Tue Sep 20 10:51:43 PDT 2016 */ { 0x0000, 0x001f }, /* Cc */ { 0x007f, 0x009f }, /* Cc */ { 0x00ad, 0x00ad }, /* Cf */ @@ -6,6 +6,7 @@ { 0x061c, 0x061c }, /* Cf */ { 0x06dd, 0x06dd }, /* Cf */ { 0x070f, 0x070f }, /* Cf */ + { 0x08e2, 0x08e2 }, /* Cf */ { 0x180e, 0x180e }, /* Cf */ { 0x200b, 0x200f }, /* Cf */ { 0x2028, 0x2028 }, /* Zl */ diff --git a/contrib/less/version.c b/contrib/less/version.c index 87b0b42bc855..3240d4b2ce25 100644 --- a/contrib/less/version.c +++ b/contrib/less/version.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1984-2015 Mark Nudelman + * Copyright (C) 1984-2017 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. @@ -789,8 +789,28 @@ v477 5/19/15 Fix off-by-one in jump_forw_buffered; don't add FAKE_* files to cmd history. v478 5/21/15 Fix nonportable pointer usage in hilite tree. v479 7/6/15 Allow %% escapes in LESSOPEN variable. -v480 7/24/15 Fix bug in no-regex searches; support MSVC v1900. -v481 8/20/15 Fix broken -g option. +v480 7/24/15 Fix bug in no-regex searches; support MSVC v1900. +v481 8/20/15 Fix broken -g option. +----------------------------------------------------------------- +v482 2/25/16 Update Unicode database to "2015-06-16, 20:24:00 GMT [KW]". +v483 2/27/16 Regenerate hilite when change search caselessness. + (Thanks to Jason Hood) + Fix bug when terminal has no "cm". (Thanks to Noel Cragg) +v484 9/20/16 Update to Unicode 9.0.0 database. +v485 10/21/16 Fix "nothing to search" bug when top/bottom line is empty; + Display line numbers in bold. (thanks to Jason Hood); + Fix incorrect display when entering double-width chars in + search string. +v486 10/22/16 New commands ESC-{ and ESC-} to shift to start/end of + displayed lines; new option -Da in Windows version to + enable SGR mode (thanks to Jason Hood). +v487 10/23/16 configure --help formatting. +----------------------------------------------------------------- +v488 2/23/17 Fix memory leaks in search (thanks to John Brooks). +v489 3/30/17 Make -F not do init/deinit if file fits on one screen + (thanks to Jindrich Novy). +v490 4/5/17 Switch to ANSI prototypes in funcs.h; remove "register". +v491 4/7/17 Fix signed char bug. */ -char version[] = "481"; +char version[] = "491"; diff --git a/contrib/less/wide.uni b/contrib/less/wide.uni index b43f7d3598fc..17c385914f7a 100644 --- a/contrib/less/wide.uni +++ b/contrib/less/wide.uni @@ -1,81 +1,108 @@ -/* Generated by "./mkutable -f1 W -- unicode/EastAsianWidth.txt" on Mon Jul 14 16:21:23 PDT 2014 */ - { 0x1100, 0x1100 }, /* W */ +/* Generated by "./mkutable -f1 W F -- unicode/EastAsianWidth.txt" on Tue Sep 20 10:51:43 PDT 2016 */ + { 0x1100, 0x115f }, /* W */ + { 0x231a, 0x231b }, /* W */ { 0x2329, 0x232a }, /* W */ - { 0x2e80, 0x2e80 }, /* W */ - { 0x2e9b, 0x2e9b }, /* W */ - { 0x2f00, 0x2f00 }, /* W */ - { 0x2ff0, 0x2ff0 }, /* W */ - { 0x3001, 0x3001 }, /* W */ - { 0x3004, 0x3012 }, /* W */ - { 0x3014, 0x301e }, /* W */ - { 0x3020, 0x3021 }, /* W */ - { 0x302a, 0x302a }, /* W */ - { 0x302e, 0x302e }, /* W */ - { 0x3030, 0x3031 }, /* W */ - { 0x3036, 0x3036 }, /* W */ - { 0x3038, 0x3038 }, /* W */ - { 0x303b, 0x303e }, /* W */ - { 0x3041, 0x3041 }, /* W */ - { 0x3099, 0x3099 }, /* W */ - { 0x309b, 0x309b }, /* W */ - { 0x309d, 0x309d }, /* W */ - { 0x309f, 0x30a1 }, /* W */ - { 0x30fb, 0x30fc }, /* W */ - { 0x30ff, 0x30ff }, /* W */ - { 0x3105, 0x3105 }, /* W */ - { 0x3131, 0x3131 }, /* W */ - { 0x3190, 0x3190 }, /* W */ - { 0x3192, 0x3192 }, /* W */ - { 0x3196, 0x3196 }, /* W */ - { 0x31a0, 0x31a0 }, /* W */ - { 0x31c0, 0x31c0 }, /* W */ - { 0x31f0, 0x31f0 }, /* W */ - { 0x3200, 0x3200 }, /* W */ - { 0x3220, 0x3220 }, /* W */ - { 0x322a, 0x322a }, /* W */ - { 0x3250, 0x3251 }, /* W */ - { 0x3260, 0x3260 }, /* W */ - { 0x3280, 0x3280 }, /* W */ - { 0x328a, 0x328a }, /* W */ - { 0x32b1, 0x32b1 }, /* W */ - { 0x32c0, 0x32c0 }, /* W */ - { 0x3300, 0x3300 }, /* W */ - { 0x3400, 0x3400 }, /* W */ - { 0x4db6, 0x4db6 }, /* W */ - { 0x4e00, 0x4e00 }, /* W */ - { 0x9fcd, 0x9fcd }, /* W */ - { 0xa000, 0xa000 }, /* W */ - { 0xa015, 0xa016 }, /* W */ - { 0xa490, 0xa490 }, /* W */ - { 0xa960, 0xa960 }, /* W */ - { 0xac00, 0xac00 }, /* W */ - { 0xf900, 0xf900 }, /* W */ - { 0xfa6e, 0xfa6e }, /* W */ - { 0xfa70, 0xfa70 }, /* W */ - { 0xfada, 0xfada }, /* W */ - { 0xfe10, 0xfe10 }, /* W */ - { 0xfe17, 0xfe19 }, /* W */ - { 0xfe30, 0xfe31 }, /* W */ - { 0xfe33, 0xfe33 }, /* W */ - { 0xfe35, 0xfe45 }, /* W */ - { 0xfe47, 0xfe49 }, /* W */ - { 0xfe4d, 0xfe4d }, /* W */ - { 0xfe50, 0xfe50 }, /* W */ - { 0xfe54, 0xfe54 }, /* W */ - { 0xfe58, 0xfe5f }, /* W */ - { 0xfe62, 0xfe64 }, /* W */ - { 0xfe68, 0xfe6a }, /* W */ - { 0x1b000, 0x1b000 }, /* W */ - { 0x1f200, 0x1f200 }, /* W */ - { 0x1f210, 0x1f210 }, /* W */ - { 0x1f240, 0x1f240 }, /* W */ - { 0x1f250, 0x1f250 }, /* W */ - { 0x20000, 0x20000 }, /* W */ - { 0x2a6d7, 0x2a6d7 }, /* W */ - { 0x2a700, 0x2a700 }, /* W */ - { 0x2b735, 0x2b735 }, /* W */ - { 0x2b740, 0x2b740 }, /* W */ - { 0x2b81e, 0x2b81e }, /* W */ - { 0x2f800, 0x2f800 }, /* W */ - { 0x2fa1e, 0x2fa1e }, /* W */ - { 0x30000, 0x30000 }, /* W */ + { 0x23e9, 0x23ec }, /* W */ + { 0x23f0, 0x23f0 }, /* W */ + { 0x23f3, 0x23f3 }, /* W */ + { 0x25fd, 0x25fe }, /* W */ + { 0x2614, 0x2615 }, /* W */ + { 0x2648, 0x2653 }, /* W */ + { 0x267f, 0x267f }, /* W */ + { 0x2693, 0x2693 }, /* W */ + { 0x26a1, 0x26a1 }, /* W */ + { 0x26aa, 0x26ab }, /* W */ + { 0x26bd, 0x26be }, /* W */ + { 0x26c4, 0x26c5 }, /* W */ + { 0x26ce, 0x26ce }, /* W */ + { 0x26d4, 0x26d4 }, /* W */ + { 0x26ea, 0x26ea }, /* W */ + { 0x26f2, 0x26f3 }, /* W */ + { 0x26f5, 0x26f5 }, /* W */ + { 0x26fa, 0x26fa }, /* W */ + { 0x26fd, 0x26fd }, /* W */ + { 0x2705, 0x2705 }, /* W */ + { 0x270a, 0x270b }, /* W */ + { 0x2728, 0x2728 }, /* W */ + { 0x274c, 0x274c }, /* W */ + { 0x274e, 0x274e }, /* W */ + { 0x2753, 0x2755 }, /* W */ + { 0x2757, 0x2757 }, /* W */ + { 0x2795, 0x2797 }, /* W */ + { 0x27b0, 0x27b0 }, /* W */ + { 0x27bf, 0x27bf }, /* W */ + { 0x2b1b, 0x2b1c }, /* W */ + { 0x2b50, 0x2b50 }, /* W */ + { 0x2b55, 0x2b55 }, /* W */ + { 0x2e80, 0x2e99 }, /* W */ + { 0x2e9b, 0x2ef3 }, /* W */ + { 0x2f00, 0x2fd5 }, /* W */ + { 0x2ff0, 0x2ffb }, /* W */ + { 0x3000, 0x3000 }, /* F */ + { 0x3001, 0x303e }, /* W */ + { 0x3041, 0x3096 }, /* W */ + { 0x3099, 0x30ff }, /* W */ + { 0x3105, 0x312d }, /* W */ + { 0x3131, 0x318e }, /* W */ + { 0x3190, 0x31ba }, /* W */ + { 0x31c0, 0x31e3 }, /* W */ + { 0x31f0, 0x321e }, /* W */ + { 0x3220, 0x3247 }, /* W */ + { 0x3250, 0x32fe }, /* W */ + { 0x3300, 0x4dbf }, /* W */ + { 0x4e00, 0xa48c }, /* W */ + { 0xa490, 0xa4c6 }, /* W */ + { 0xa960, 0xa97c }, /* W */ + { 0xac00, 0xd7a3 }, /* W */ + { 0xf900, 0xfaff }, /* W */ + { 0xfe10, 0xfe19 }, /* W */ + { 0xfe30, 0xfe52 }, /* W */ + { 0xfe54, 0xfe66 }, /* W */ + { 0xfe68, 0xfe6b }, /* W */ + { 0xff01, 0xff60 }, /* F */ + { 0xffe0, 0xffe6 }, /* F */ + { 0x16fe0, 0x16fe0 }, /* W */ + { 0x17000, 0x187ec }, /* W */ + { 0x18800, 0x18af2 }, /* W */ + { 0x1b000, 0x1b001 }, /* W */ + { 0x1f004, 0x1f004 }, /* W */ + { 0x1f0cf, 0x1f0cf }, /* W */ + { 0x1f18e, 0x1f18e }, /* W */ + { 0x1f191, 0x1f19a }, /* W */ + { 0x1f200, 0x1f202 }, /* W */ + { 0x1f210, 0x1f23b }, /* W */ + { 0x1f240, 0x1f248 }, /* W */ + { 0x1f250, 0x1f251 }, /* W */ + { 0x1f300, 0x1f320 }, /* W */ + { 0x1f32d, 0x1f335 }, /* W */ + { 0x1f337, 0x1f37c }, /* W */ + { 0x1f37e, 0x1f393 }, /* W */ + { 0x1f3a0, 0x1f3ca }, /* W */ + { 0x1f3cf, 0x1f3d3 }, /* W */ + { 0x1f3e0, 0x1f3f0 }, /* W */ + { 0x1f3f4, 0x1f3f4 }, /* W */ + { 0x1f3f8, 0x1f43e }, /* W */ + { 0x1f440, 0x1f440 }, /* W */ + { 0x1f442, 0x1f4fc }, /* W */ + { 0x1f4ff, 0x1f53d }, /* W */ + { 0x1f54b, 0x1f54e }, /* W */ + { 0x1f550, 0x1f567 }, /* W */ + { 0x1f57a, 0x1f57a }, /* W */ + { 0x1f595, 0x1f596 }, /* W */ + { 0x1f5a4, 0x1f5a4 }, /* W */ + { 0x1f5fb, 0x1f64f }, /* W */ + { 0x1f680, 0x1f6c5 }, /* W */ + { 0x1f6cc, 0x1f6cc }, /* W */ + { 0x1f6d0, 0x1f6d2 }, /* W */ + { 0x1f6eb, 0x1f6ec }, /* W */ + { 0x1f6f4, 0x1f6f6 }, /* W */ + { 0x1f910, 0x1f91e }, /* W */ + { 0x1f920, 0x1f927 }, /* W */ + { 0x1f930, 0x1f930 }, /* W */ + { 0x1f933, 0x1f93e }, /* W */ + { 0x1f940, 0x1f94b }, /* W */ + { 0x1f950, 0x1f95e }, /* W */ + { 0x1f980, 0x1f991 }, /* W */ + { 0x1f9c0, 0x1f9c0 }, /* W */ + { 0x20000, 0x2fffd }, /* W */ + { 0x30000, 0x3fffd }, /* W */ |