summaryrefslogtreecommitdiff
path: root/contrib/less/optfunc.c
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2017-11-20 08:52:33 +0000
committerXin LI <delphij@FreeBSD.org>2017-11-20 08:52:33 +0000
commitb2ea244070ff84eab79e04befb7aa30c982fc84d (patch)
tree28b5fe8762e1d749bf704ba80f01774532fb120f /contrib/less/optfunc.c
parent727ca2fdfd341222314f96e7075d153f6009ee9e (diff)
parentee3dcfe98fdc32918e3476f437b9603983d6d0be (diff)
downloadsrc-test2-b2ea244070ff84eab79e04befb7aa30c982fc84d.tar.gz
src-test2-b2ea244070ff84eab79e04befb7aa30c982fc84d.zip
Notes
Diffstat (limited to 'contrib/less/optfunc.c')
-rw-r--r--contrib/less/optfunc.c80
1 files changed, 75 insertions, 5 deletions
diff --git a/contrib/less/optfunc.c b/contrib/less/optfunc.c
index 4c79fe3f16b9..9185c011b108 100644
--- a/contrib/less/optfunc.c
+++ b/contrib/less/optfunc.c
@@ -50,6 +50,8 @@ extern int jump_sline;
extern long jump_sline_fraction;
extern int shift_count;
extern long shift_count_fraction;
+extern LWCHAR rscroll_char;
+extern int rscroll_attr;
extern int less_is_more;
#if LOGFILE
extern char *namelogfile;
@@ -68,6 +70,11 @@ 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;
+#if MSDOS_COMPILER==WIN32C
+#ifndef COMMON_LVB_UNDERSCORE
+#define COMMON_LVB_UNDERSCORE 0x8000
+#endif
+#endif
#endif
@@ -81,6 +88,7 @@ opt_o(type, s)
char *s;
{
PARG parg;
+ char *filename;
if (secure)
{
@@ -106,7 +114,9 @@ opt_o(type, s)
s = skipsp(s);
if (namelogfile != NULL)
free(namelogfile);
- namelogfile = lglob(s);
+ filename = lglob(s);
+ namelogfile = shell_unquote(filename);
+ free(filename);
use_logfile(namelogfile);
sync_logfile();
break;
@@ -336,6 +346,7 @@ opt__T(type, s)
char *s;
{
PARG parg;
+ char *filename;
switch (type)
{
@@ -346,7 +357,9 @@ opt__T(type, s)
s = skipsp(s);
if (tags != NULL && tags != ztags)
free(tags);
- tags = lglob(s);
+ filename = lglob(s);
+ tags = shell_unquote(filename);
+ free(filename);
break;
case QUERY:
parg.p_string = tags;
@@ -540,12 +553,27 @@ colordesc(s, fg_color, bg_color)
{
int fg, bg;
int err;
-
+#if MSDOS_COMPILER==WIN32C
+ int ul = 0;
+
+ if (*s == 'u')
+ {
+ ul = COMMON_LVB_UNDERSCORE;
+ ++s;
+ }
+#endif
fg = getnum(&s, "D", &err);
if (err)
{
- error("Missing fg color in -D", NULL_PARG);
- return;
+#if MSDOS_COMPILER==WIN32C
+ if (ul)
+ fg = nm_fg_color;
+ else
+#endif
+ {
+ error("Missing fg color in -D", NULL_PARG);
+ return;
+ }
}
if (*s != '.')
bg = nm_bg_color;
@@ -559,6 +587,14 @@ colordesc(s, fg_color, bg_color)
return;
}
}
+#if MSDOS_COMPILER==WIN32C
+ if (*s == 'u')
+ {
+ ul = COMMON_LVB_UNDERSCORE;
+ ++s;
+ }
+ fg |= ul;
+#endif
if (*s != '\0')
error("Extra characters at end of -D option", NULL_PARG);
*fg_color = fg;
@@ -718,6 +754,40 @@ opt_quote(type, s)
}
/*
+ * Handler for the --rscroll option.
+ */
+ /*ARGSUSED*/
+ public void
+opt_rscroll(type, s)
+ int type;
+ char *s;
+{
+ PARG p;
+
+ switch (type)
+ {
+ case INIT:
+ case TOGGLE: {
+ char *fmt;
+ int attr = AT_STANDOUT;
+ setfmt(s, &fmt, &attr, "*s>");
+ if (strcmp(fmt, "-") == 0)
+ {
+ rscroll_char = 0;
+ } else
+ {
+ rscroll_char = *fmt ? *fmt : '>';
+ rscroll_attr = attr;
+ }
+ break; }
+ case QUERY: {
+ p.p_string = rscroll_char ? prchar(rscroll_char) : "-";
+ error("rscroll char is %s", &p);
+ break; }
+ }
+}
+
+/*
* "-?" means display a help message.
* If from the command line, exit immediately.
*/