Commit Graph

115 Commits

Author SHA1 Message Date
Keith Winstein 02f54881be Use BEL instead of ST to terminate Operating System Command
ST is more correct, but BEL is apparently more widely supported.

Closes #304
2012-07-26 22:01:53 -04:00
Anders Kaseorg 5e3ec2e037 Instantiate Parser::family once
Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2012-07-24 15:01:55 -04:00
Keith Winstein 92ecb99b71 Add OpenSSL licensing exception 2012-07-20 16:46:00 -04:00
Keith Winstein 8026c924dc Quit with cursor visible. 2012-05-23 11:44:49 -04:00
Larry Doolittle eda48085ba Simple spelling fixes 2012-05-23 05:11:05 -04:00
Keith Winstein 1cf12f9e9b Prevent integer overflow of very large escape sequence params. Fixes #274. 2012-05-16 12:16:50 -04:00
Keith Winstein 9791768705 Cap escape sequence parameters to prevent long loops.
Fixes #271 github issue.
2012-05-15 23:46:09 -04:00
Keith Winstein 22375a2d54 Tabulation clear preserves wrap state (per davidben) 2012-05-06 20:01:39 -04:00
Keith Winstein 43182729ec More graceful output from failed verification 2012-05-05 01:53:28 -04:00
Keith Winstein 48fbe3d0e1 Correctly handle wrapped lines where first portion is blank 2012-05-05 01:45:19 -04:00
Keith Winstein 3bdcc98ba4 Tab preserves, but does not set, wrap state when used in last col.
Fixes vttest regression.
2012-05-05 00:04:43 -04:00
Keith Winstein c8951c7dfd Use memmove() where ranges may overlap. Fixes #200 (Matthew Dempsky). 2012-04-16 18:22:27 -04:00
Keith Winstein bfa0999089 Final tab-related bugfix (of the morning). Now matches xterm more closely. 2012-04-16 11:31:37 -04:00
Keith Winstein 0293e579d2 Properly reset tab stops on resize 2012-04-16 09:55:59 -04:00
Keegan McAllister c390ee9b80 Hardcode the terminals which accept "set window title"
terminfo does not have reliable information on this, so we hardcode a whitelist
of terminal type prefixes.  This is the list from Debian's default screenrc,
plus "screen" itself (which also covers tmux).

Closes #172.
Closes #191.
2012-04-16 09:23:30 -04:00
Keith Winstein feb352c809 Optional verifier for round-trippability, and fix wrapping and tab bugs. 2012-04-16 09:09:20 -04:00
Keith Winstein c15d3d0c48 Use "ANSI-mode" cursor keys only on actual cursor keys (A through D).
Fixes #161.
2012-04-16 03:44:07 -04:00
Keith Winstein 6b6747cda7 Fix valgrind error with 1-col char then 2-col char in a 1x1 terminal 2012-04-15 17:11:40 -04:00
Keegan McAllister cd2d482484 Don't use *_t for our own typedefs
It's reserved by POSIX.

(closes #158 pull request)
2012-04-15 13:50:18 -04:00
Keegan McAllister 8bcc001b52 Remove Boost entirely 2012-04-15 13:49:15 -04:00
Keegan McAllister 8f099cafbb Remove boost::lambda from ConditionalOverlayCell::get_validity 2012-04-15 13:49:15 -04:00
Keegan McAllister 6e56fd2157 Remove BOOST_AUTO from terminaldisplay.cc 2012-04-15 13:49:15 -04:00
Keegan McAllister 87a5f86794 Remove BOOST_AUTO from terminalframebuffer.cc 2012-04-15 13:49:15 -04:00
Keith Winstein a4221d17a4 Disable posterization and rely solely on TERM to tell remote end about colors
(should help #155 github issue)
2012-04-14 13:46:38 -04:00
Keith Winstein 5c20c8d4be Keep using OSC 0 when possible to preserve compability with older clients.
Re: #137
2012-04-14 02:11:31 -04:00
Keith Winstein d0a818d2e2 Track icon name and window title separately. Implement MOSH_TITLE_NOPREFIX 2012-04-14 01:55:28 -04:00
Keith Winstein 53f79e4261 Fix vttest "Funny scrolling regions" by ignoring some invalid scroll regions
Addresses #155 github issue.
2012-04-14 01:11:57 -04:00
Keegan McAllister d2434d1a79 Check compiler support for -fno-default-inline and -pipe
clang was spewing warnings about the unrecognized -fno-default-inline.  (Oddly,
it warns only with -c, not when compiling directly to an executable.)  For
completeness we also check -pipe, even though clang is OK with that one.

It should be fine to omit either flag.  gcc -fno-default-inline drops the
implicit 'inline' annotation on functions defined inside a class scope, but
'inline' is only a hint anyway.  -fno-default-inline does not change linkage.
-pipe is merely a compile speed optimization.
2012-04-13 12:27:27 -04:00
Keegan McAllister 349e2d20c8 Use the hardening flags
Closes #79.
2012-04-13 12:25:09 -04:00
Keith Winstein a67ae7b0f4 Support 16-color set (per Anders Kaseorg).
Closes #106 github issue.
Closes #133 github issue.
Closes #131 github issue.
2012-04-11 03:09:26 -04:00
Anders Kaseorg 9cec566cd1 Find ncurses from pkg-config if possible, and prefer separate libtinfo
Recent ncurses can be configured --with-termlib, which splits out the
terminfo-level functions from libncurses into a separate libtinfo.
This allows us to avoid an unnecessary dependency on libncurses.  (We
already avoided this on distributions that link with -Wl,--as-needed.)

Signed-off-by: Anders Kaseorg <andersk@mit.edu>

Closes #128 github pull request.
2012-04-11 02:47:55 -04:00
Peter Jeremy fd0ddf0e22 strtol(3) can optionally set errno to EINVAL if no conversion could be
performed and FreeBSD (at least) implements thin behaviour.  Add an
explicit test to detect this situation in Dispatcher::parse_params().
(This behaviour difference is not relevant to other uses of strtol()).

This corrects the mishandling of (eg) "CSI m" on FreeBSD.

Closes #129 github pull request.
[keithw -- also fixes same issue with mosh-server on OS X]
2012-04-11 02:46:26 -04:00
Keith Winstein b4c47b77cf Fix bug involving wraparound copy-and-paste to a blank line.
Identified by Anders Kaseorg.

Test case:

( reset; seq 100; printf 'Hello, world!'; sleep 1;
printf '\t\t\t\t\t\t\t\t\t\t   \r\e[K'; sleep 1; printf '\n' )
> /dev/pts/16 2>&1

(replace /dev/pts/16 with mosh or termemu terminal)
2012-04-11 02:40:18 -04:00
Keith Winstein 4144f2e4f0 Don't clear wrap state on DEC set mode escape (matches xterm) 2012-04-11 01:58:20 -04:00
Keith Winstein 8221838f51 Fix bug sometimes causing missing (or spurious) wraparound copy-and-paste 2012-04-02 19:04:26 -04:00
Keith Winstein eea48e59d3 Avoid compiler warning on platforms where wchar_t is uint32_t (arm) 2012-03-31 14:30:24 -04:00
Keegan McAllister 7ed5174aa7 Move some locale handling into one place 2012-03-26 20:08:55 -04:00
Keith Winstein 00561a95d3 No need to reset scrolling region on close -- we always clean this up 2012-03-21 19:01:35 -04:00
Keith Winstein 76612229d5 Change shutdown sequence (take away DECSTR) 2012-03-21 18:59:04 -04:00
Keith Winstein e4780c5d05 Invalidate cursor location (but don't actually move cursor) after scroll reset 2012-03-18 16:26:16 -04:00
Keith Winstein 231c181101 Scroll only scrolled region (fixes #31 github issue) 2012-03-18 16:07:23 -04:00
Keith Winstein 13bd38aa51 Switch to deltaE method for color posterization 2012-03-18 01:52:13 -04:00
Keith Winstein d88ae9bfd0 Fix erroneous blinking in emacs (sgr with >15 fg but <16 bg) 2012-03-17 15:00:54 -04:00
Keith Winstein 170bc8366a Posterize to 8 colors when outer terminal does not support 256 colors
Fixes #58 github issue.
2012-03-16 17:43:01 -04:00
Keith Winstein c896055d15 Correctly render on terminals without BCE (fixes #56 github issue) 2012-03-16 13:46:55 -04:00
Keith Winstein 57d97209c0 Support 256color (and assume 256color terminal). Closes #3 github issue. 2012-03-16 13:46:55 -04:00
Keith Winstein 4783e7cd82 Eliminate unnecessary snprintf() 2012-03-14 02:14:10 -04:00
Keith Winstein 561a2be761 Optimize out use of sgr() by storing rendition instead (11% speedup) 2012-03-14 01:11:47 -04:00
Anders Kaseorg 843401a935 Display::Display: Fix undefined pointer comparison
“If two pointers p and q of the same type point to different that are
not members of the same object or elements of the same array or to
different functions, or if only one of them is null, the results of
p<q, p>q, p<=q, and p>=q are unspecified.”

Signed-off-by: Anders Kaseorg <andersk@mit.edu>
2012-03-10 15:58:19 -05:00
Keith Winstein bc3297aa75 Small cleanup to generated output when predictions active 2012-03-10 06:42:21 -05:00