svn commit: r317829 - in head: contrib/less usr.bin/less
Xin LI
delphij at FreeBSD.org
Fri May 5 14:33:41 UTC 2017
Author: delphij
Date: Fri May 5 14:33:39 2017
New Revision: 317829
URL: https://svnweb.freebsd.org/changeset/base/317829
Log:
MFV r317581: less v491.
MFC after: 1 month
Modified:
head/contrib/less/LICENSE
head/contrib/less/NEWS
head/contrib/less/README
head/contrib/less/brac.c
head/contrib/less/ch.c
head/contrib/less/charset.c
head/contrib/less/charset.h
head/contrib/less/cmd.h
head/contrib/less/cmdbuf.c
head/contrib/less/command.c
head/contrib/less/compose.uni
head/contrib/less/cvt.c
head/contrib/less/decode.c
head/contrib/less/edit.c
head/contrib/less/filename.c
head/contrib/less/forwback.c
head/contrib/less/funcs.h
head/contrib/less/help.c
head/contrib/less/ifile.c
head/contrib/less/input.c
head/contrib/less/jump.c
head/contrib/less/less.h
head/contrib/less/less.hlp
head/contrib/less/less.nro
head/contrib/less/lessecho.c
head/contrib/less/lessecho.nro
head/contrib/less/lesskey.c
head/contrib/less/lesskey.h
head/contrib/less/lesskey.nro
head/contrib/less/lglob.h
head/contrib/less/line.c
head/contrib/less/linenum.c
head/contrib/less/lsystem.c
head/contrib/less/main.c
head/contrib/less/mark.c
head/contrib/less/mkhelp.c
head/contrib/less/mkutable
head/contrib/less/optfunc.c
head/contrib/less/option.c
head/contrib/less/option.h
head/contrib/less/opttbl.c
head/contrib/less/os.c
head/contrib/less/output.c
head/contrib/less/pattern.c
head/contrib/less/pattern.h
head/contrib/less/pckeys.h
head/contrib/less/position.c
head/contrib/less/position.h
head/contrib/less/prompt.c
head/contrib/less/regexp.c
head/contrib/less/screen.c
head/contrib/less/scrsize.c
head/contrib/less/search.c
head/contrib/less/signal.c
head/contrib/less/tags.c
head/contrib/less/ttyin.c
head/contrib/less/ubin.uni
head/contrib/less/version.c
head/contrib/less/wide.uni
head/usr.bin/less/defines.h
Directory Properties:
head/contrib/less/ (props changed)
Modified: head/contrib/less/LICENSE
==============================================================================
--- head/contrib/less/LICENSE Fri May 5 14:09:44 2017 (r317828)
+++ head/contrib/less/LICENSE Fri May 5 14:33:39 2017 (r317829)
@@ -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
Modified: head/contrib/less/NEWS
==============================================================================
--- head/contrib/less/NEWS Fri May 5 14:09:44 2017 (r317828)
+++ head/contrib/less/NEWS Fri May 5 14:33:39 2017 (r317829)
@@ -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.
Modified: head/contrib/less/README
==============================================================================
--- head/contrib/less/README Fri May 5 14:09:44 2017 (r317828)
+++ head/contrib/less/README Fri May 5 14:33:39 2017 (r317829)
@@ -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
Modified: head/contrib/less/brac.c
==============================================================================
--- head/contrib/less/brac.c Fri May 5 14:09:44 2017 (r317828)
+++ head/contrib/less/brac.c Fri May 5 14:33:39 2017 (r317829)
@@ -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.
Modified: head/contrib/less/ch.c
==============================================================================
--- head/contrib/less/ch.c Fri May 5 14:09:44 2017 (r317828)
+++ head/contrib/less/ch.c Fri May 5 14:33:39 2017 (r317829)
@@ -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);
Modified: head/contrib/less/charset.c
==============================================================================
--- head/contrib/less/charset.c Fri May 5 14:09:44 2017 (r317828)
+++ head/contrib/less/charset.c Fri May 5 14:33:39 2017 (r317829)
@@ -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, cha
*
*/
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, in
* 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 l
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 l
* 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
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_rang
* 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;
Modified: head/contrib/less/charset.h
==============================================================================
--- head/contrib/less/charset.h Fri May 5 14:09:44 2017 (r317828)
+++ head/contrib/less/charset.h Fri May 5 14:33:39 2017 (r317829)
@@ -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.
Modified: head/contrib/less/cmd.h
==============================================================================
--- head/contrib/less/cmd.h Fri May 5 14:09:44 2017 (r317828)
+++ head/contrib/less/cmd.h Fri May 5 14:33:39 2017 (r317829)
@@ -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
Modified: head/contrib/less/cmdbuf.c
==============================================================================
--- head/contrib/less/cmdbuf.c Fri May 5 14:09:44 2017 (r317828)
+++ head/contrib/less/cmdbuf.c Fri May 5 14:33:39 2017 (r317829)
@@ -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
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
* 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, i
* 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, in
* 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 cmdf
* cmdbuf's corresponding chars.
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-head
mailing list