From 95b307103a60b7d023929c29952e1e6798564bef Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Sun, 31 Dec 2006 19:23:31 +0000 Subject: less: interpret backspace. less is officially declared PAGER-capable! ;) (this includes viewing of manpages) --- miscutils/less.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'miscutils/less.c') diff --git a/miscutils/less.c b/miscutils/less.c index 916213082..ae936c2fb 100644 --- a/miscutils/less.c +++ b/miscutils/less.c @@ -212,11 +212,21 @@ static void read_lines(void) } } c = readbuf[readpos]; + /* backspace? [need this for manpage display] */ + if (c == '\x8' && linepos) { + readpos++; /* eat it */ + /* We do not consider the case of */ + /* Anyone who has that is pure evil :) */ + linepos--; + *p-- = '\0'; + continue; + } if (c == '\t') linepos += (linepos^7) & 7; linepos++; if (linepos >= w) break; + /* ok, we will eat this char */ readpos++; if (c == '\n') { terminated = 1; break; } /* NUL is substituted by '\n'! */ @@ -1175,6 +1185,9 @@ int less_main(int argc, char **argv) { int keypress; + /* TODO: -x: do not interpret backspace, -xx: tab also */ + /* -xxx: newline also */ + /* -w N: assume width N (-xxx -w 32: hex viewer of sorts) */ getopt32(argc, argv, "EMmN~"); argc -= optind; argv += optind; -- cgit v1.2.3