summaryrefslogtreecommitdiffstats
path: root/contrib/less/command.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2006-08-20 15:50:51 +0000
committerdelphij <delphij@FreeBSD.org>2006-08-20 15:50:51 +0000
commit5d6048735154d14b6086c89e5252e985c9d0a527 (patch)
tree9d4d19c79f8dc39fae28cb5b1937b282caf97a1a /contrib/less/command.c
parenta77e94924db530f3a686499642a95d53c8cd845d (diff)
downloadFreeBSD-src-5d6048735154d14b6086c89e5252e985c9d0a527.zip
FreeBSD-src-5d6048735154d14b6086c89e5252e985c9d0a527.tar.gz
Resolve conflicts.
Diffstat (limited to 'contrib/less/command.c')
-rw-r--r--contrib/less/command.c51
1 files changed, 31 insertions, 20 deletions
diff --git a/contrib/less/command.c b/contrib/less/command.c
index 9bc966c..18ea4d4 100644
--- a/contrib/less/command.c
+++ b/contrib/less/command.c
@@ -1,6 +1,6 @@
/* $FreeBSD$ */
/*
- * Copyright (C) 1984-2002 Mark Nudelman
+ * Copyright (C) 1984-2005 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@@ -22,7 +22,7 @@
#include "option.h"
#include "cmd.h"
-extern int erase_char, kill_char;
+extern int erase_char, erase2_char, kill_char;
extern int sigs;
extern int quit_at_eof;
extern int quit_if_one_screen;
@@ -69,6 +69,7 @@ static char optchar;
static int optflag;
static int optgetname;
static POSITION bottompos;
+static int save_hshift;
#if PIPEC
static char pipec;
#endif
@@ -394,7 +395,9 @@ mca_char(c)
* Already have a match for the name.
* Don't accept anything but erase/kill.
*/
- if (c == erase_char || c == kill_char)
+ if (c == erase_char ||
+ c == erase2_char ||
+ c == kill_char)
return (MCA_DONE);
return (MCA_MORE);
}
@@ -405,7 +408,7 @@ mca_char(c)
if (cmd_char(c) == CC_QUIT)
return (MCA_DONE);
p = get_cmdbuf();
- lc = islower(p[0]);
+ lc = ASCII_IS_LOWER(p[0]);
o = findopt_name(&p, &oname, NULL);
if (o != NULL)
{
@@ -415,15 +418,15 @@ mca_char(c)
* display the full option name.
*/
optchar = o->oletter;
- if (!lc && islower(optchar))
- optchar = toupper(optchar);
+ if (!lc && ASCII_IS_LOWER(optchar))
+ optchar = ASCII_TO_UPPER(optchar);
cmd_reset();
mca_opt_toggle();
for (p = oname; *p != '\0'; p++)
{
c = *p;
- if (!lc && islower(c))
- c = toupper(c);
+ if (!lc && ASCII_IS_LOWER(c))
+ c = ASCII_TO_UPPER(c);
if (cmd_char(c) != CC_OK)
return (MCA_DONE);
}
@@ -432,7 +435,7 @@ mca_char(c)
}
} else
{
- if (c == erase_char || c == kill_char)
+ if (c == erase_char || c == erase2_char || c == kill_char)
break;
if (optchar != '\0')
/* We already have the option letter. */
@@ -604,7 +607,10 @@ prompt()
bottompos = position(BOTTOM_PLUS_ONE);
/*
- * If the -E flag is set and we've hit EOF on the last file, quit.
+ * If we've hit EOF on the last file, and the -E flag is set
+ * (or -F is set and this is the first prompt), then quit.
+ * {{ Relying on "first prompt" to detect a single-screen file
+ * fails if +G is used, for example. }}
*/
if ((quit_at_eof == OPT_ONPLUS || quit_if_one_screen) &&
hit_eof && !(ch_getflags() & CH_HELPFILE) &&
@@ -633,13 +639,13 @@ prompt()
*/
clear_cmd();
p = pr_string();
- if (p == NULL)
+ if (p == NULL || *p == '\0')
putchr(':');
else
{
- so_enter();
+ at_enter(AT_STANDOUT);
putstr(p);
- so_exit();
+ at_exit();
}
}
@@ -832,6 +838,9 @@ multi_search(pattern, n)
* Restore the file we were originally viewing.
*/
reedit_ifile(save_ifile);
+ } else
+ {
+ unsave_ifile(save_ifile);
}
}
@@ -1217,6 +1226,7 @@ commands()
* just means return to viewing the
* previous file.
*/
+ hshift = save_hshift;
if (edit_prev(1) == 0)
break;
}
@@ -1306,6 +1316,8 @@ commands()
if (ch_getflags() & CH_HELPFILE)
break;
cmd_exec();
+ save_hshift = hshift;
+ hshift = 0;
(void) edit(FAKE_HELPFILE);
break;
@@ -1346,9 +1358,8 @@ commands()
}
if (curr_altfilename != NULL)
{
- error("Cannot edit file processed with LESSOPEN",
+ error("WARNING: This file was viewed via LESSOPEN",
NULL_PARG);
- break;
}
start_mca(A_SHELL, "!", ml_shell, 0);
/*
@@ -1530,8 +1541,8 @@ commands()
break;
start_mca(A_SETMARK, "mark: ", (void*)NULL, 0);
c = getcc();
- if (c == erase_char || c == kill_char ||
- c == '\n' || c == '\r')
+ if (c == erase_char || c == erase2_char ||
+ c == kill_char || c == '\n' || c == '\r')
break;
setmark(c);
break;
@@ -1542,8 +1553,8 @@ commands()
*/
start_mca(A_GOMARK, "goto mark: ", (void*)NULL, 0);
c = getcc();
- if (c == erase_char || c == kill_char ||
- c == '\n' || c == '\r')
+ if (c == erase_char || c == erase2_char ||
+ c == kill_char || c == '\n' || c == '\r')
break;
gomark(c);
break;
@@ -1557,7 +1568,7 @@ commands()
}
start_mca(A_PIPE, "|mark: ", (void*)NULL, 0);
c = getcc();
- if (c == erase_char || c == kill_char)
+ if (c == erase_char || c == erase2_char || c == kill_char)
break;
if (c == '\n' || c == '\r')
c = '.';
OpenPOWER on IntegriCloud