Commit Graph

192 Commits

Author SHA1 Message Date
Boris Faure 41c4479dc5 termpty: verify that $SHELL is valid before using it. CID1366816 2016-12-24 18:40:18 +01:00
Boris Faure f3dd6f62fb termpty: Tab markers are the same for each line. Ref 4992 2016-12-18 18:48:03 +01:00
Boris Faure fae0d7ccee termptyesc: handle correctly Cursor Back Tab. Ref T4992 2016-12-15 23:11:22 +01:00
Carsten Haitzler 60d1c6d05c term pty fd - properly shut down without a 100% cpu hang
i've noticed that the exe cb tries to drain the pty fd but reads
return -1 with EAGAIN so terminology just spins forever in cpu trying
to drain a buffer that does not drain, so make a special case on exe
exit - drain until there just is nothing else to read then give up.

@fix
2016-12-13 11:53:50 +09:00
Al Poole 8dd7aefcb4 Fix bogus hack and restore cursor position to its right place. On OpenBSD and DragonFly the cursor is being incorrectly placed. Seems there was a Linux workaround too. My guess is this will fix that also.
Summary: Should help anyway.

Reviewers: billiob, raster

Differential Revision: https://phab.enlightenment.org/D4465
2016-12-06 23:42:10 +01:00
Boris Faure 273a85af00 termpty: handle BSD special case when the other side of the tty pair has quit 2016-12-06 21:49:15 +01:00
Boris Faure 5770c51d86 termpty: handle read() from tty pair when the other end has died, on some BSD
In such a case, read() returns 0 and sets errno to ECHILD…
2016-12-05 23:39:29 +01:00
Boris Faure 7508c8658b termpty: ensure we're not reading from invalid fd 2016-12-05 22:45:44 +01:00
Boris Faure 9b6bed8033 termpty: fix dead code and remove debugging code. CID1366815 2016-12-05 22:13:54 +01:00
Boris Faure 4b3225bfa9 termpty: make verify_beacon silent by default 2016-12-05 22:13:30 +01:00
Boris Faure 390e4193d0 termpty: fix possible issue when reading and the shell exited 2016-12-05 21:53:15 +01:00
Boris Faure 1f62588e97 termpty: avoid race between exit of the program and reading from it
Also ensure we read what was already in the pipe before we ever polled it.

Closes T4925
2016-12-04 23:24:28 +01:00
Boris Faure 32dbc65c6d env: unset COLUMNS, LINES, TERMCAP 2016-12-04 23:21:58 +01:00
Boris Faure 86f27f0474 termpty: remove useless code 2016-12-04 23:17:56 +01:00
Boris Faure d5f4811b2d improve error message 2016-12-04 18:05:43 +01:00
Boris Faure 51fe6b3428 fix getting lines with the beacon
add quite some testing that is disabled by default, used to ensure that
the beacon is always valid
2016-11-30 23:25:33 +01:00
Boris Faure c47b0c39d5 scrolling: fix issues with the beacon
Add a few comments on how it works
2016-11-20 18:23:56 +01:00
Boris Faure 566c6d3680 termpty: correctly handle saving cursor + switching to/from altbuf
Closes T4718
2016-10-18 00:15:06 +02:00
Boris Faure 76f1bf4342 prefix EINA_UNUSED parameters with an underscore
and fix related issues
2016-10-05 22:00:22 +02:00
José Roberto de Souza ae7e96633a Allow user to set the title of the each tab 2016-03-04 11:34:24 -03:00
Andy Williams fbf61bf815 [zoom] fix crash fix.
Sorry to anyone who lost character selection this morning...
2016-01-31 15:01:00 +00:00
Andy Williams 459cf7383d [zoom] Fix some potential crashes when zooming.
Generally just being a little more defensive against
potential errors.
2016-01-31 09:01:44 +00:00
Boris Faure 904f49ccc4 remove statement with no effect 2015-12-26 11:52:31 +01:00
Boris Faure 3091a4e479 Closes T2911. fix reflow
- correctly set `autowrapped`
- reflow the top line when part of its content is in backlog
2015-12-10 21:15:17 +01:00
Boris Faure 66d05abb11 fix text reflow. Closes T2911
I should write unit tests on that someday
2015-12-07 22:05:49 +01:00
Carsten Haitzler 5a5b80ebec fix fuzzing so terminology works at all again
if (len <= 0)

in _cb_fd_read() is ALWAYS coming up with len < 0 for me and that'd
be LOGICAL... eg if read() returns an error (something ok to allow us
to continue) and so my terminal content NEVER appears - because
terminology is returning false from the fb handler asking it to be
deleted. this is wrong so put it inside #ifdef of fuzzing so it
doesn't affect "normal people". i still think it is broken tho... but
at least i have my terminal back now.
2015-11-12 09:53:32 +09:00
Boris Faure a925de13dc tyfuzz: read from stdin but write to /dev/null 2015-11-08 13:06:13 +01:00
Boris Faure 01421754ec make termpty_handle_buf() public to ease fuzzing 2015-11-08 13:05:43 +01:00
Boris Faure 755a4c3f2f enable fuzzing with --enable-fuzzing
Only enable it if you know what you're doing
2015-11-08 13:05:43 +01:00
Boris Faure d11ebd1247 add code to fuzz terminology (wip) 2015-11-08 13:05:43 +01:00
Boris Faure a334bf6554 termpty: fix resizing
do not add a useless newline
do not copy the same content few times
2015-09-13 23:17:17 +02:00
Boris Faure 386cf11b19 fix backlog locking 2015-09-13 23:17:03 +02:00
Boris Faure 78cb50c7a3 fix line length computation 2015-09-13 23:16:30 +02:00
Boris Faure fe58cd058b only use beacon when it seems efficient 2015-08-10 21:44:05 +02:00
Boris Faure d0bedb9a8a backlog: update beacon while browsing 2015-08-10 21:31:24 +02:00
Boris Faure 7af60a58c8 BACKLOG_ROW_GET() should not be called with a "screen" value
the backlog is independent of the screen size. Thus a single line in the
backlog can span many lines on the screen.
2015-08-09 14:10:12 +02:00
Boris Faure b4c91eee47 fix scroll after resize 2015-08-08 16:40:05 +02:00
Boris Faure 5c37589e39 fix resize when cursor alone on last line 2015-08-05 22:57:01 +02:00
Boris Faure 21764bbf85 remove wrong assert when no backlog ever generated 2015-08-03 21:23:38 +02:00
Boris Faure 8fbffdd869 renames to make the code more consistant 2015-08-03 20:44:55 +02:00
Boris Faure 35c8fd79c0 speed up browsing backlog
have a "beacon": single point where the link between an offset in the
backlog and one in screen coordinates
2015-08-03 20:44:55 +02:00
Boris Faure 34592ab5b3 new resize/backlog implementation. Closes T2461
idea: store full lines in the backlog. No need to change them on resize
2015-08-03 20:43:17 +02:00
Boris Faure 681bb029c2 ensure cursor coordinates are always valid, 2nd version 2015-06-03 23:02:31 +02:00
Carsten Haitzler 074eece5f7 Revert "ensure cursor coordinates are always valid"
This reverts commit 1f3f779258.

this breaks terminal scrolling entirely! can't scroll anymore at all
in standard shell. just try a simple: find / -print
2015-06-03 15:00:13 +09:00
Boris Faure 1f3f779258 ensure cursor coordinates are always valid 2015-06-02 22:48:50 +02:00
Boris Faure c86b35309c rename a bunch of _termpty_*() to termpty_*() 2015-06-02 21:47:06 +02:00
Boris Faure be62d87f89 separate "termstate" from cursor state and screens. Closes T725 2015-04-23 20:02:53 +02:00
Boris Faure 4abdf4b327 code cleanup: s/if (X) free(X);/free(X);/ 2015-03-18 15:23:39 +01:00
Boris Faure ed178f5a13 typo 2015-03-17 18:47:26 +01:00
Boris Faure 7edeea3503 correctly swap term states. Ref T725 2015-03-17 17:15:50 +01:00