History log of /haiku/src/apps/terminal/Shell.cpp
Revision Date Author Comments
# f123acc1 25-Apr-2022 Jérôme Duval <jerome.duval@gmail.com>

Terminal: COLORTERM=truecolor to mean 24 bit color support

this fixes mc support for 256-color skins.
bug #17719

Change-Id: Ifead9fc3acf396cada6f9ce4d83579657b74c86f
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5249
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# c0b591c5 10-Apr-2022 Jessica Hamilton <jessica.l.hamilton@gmail.com>

Terminal: implement 24-bit colour.

* Changes `TERM` to `xterm`, as we're now a full colour capable terminal
* Removes now-obsolete GuessPaletteColor from an RGB triple
* Since it's using a struct instead of uint32 for attributes, add a bunch
of helpers for a cleaner implementation
* Pass the TerminalBuffer's palette to the foreground/background get
helpers, for when an indexed colour is returned

Change-Id: I33bd3bb1407b87a237a8bc355093fe549e05b43a
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5195
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Jérôme Duval <jerome.duval@gmail.com>


# 9d06690e 11-Jul-2019 Augustin Cavalier <waddlesplash@gmail.com>

userland: Pass more sizes with ioctls where we can.

No "functional" change intended.


# e03db930 12-Sep-2017 Augustin Cavalier <waddlesplash@gmail.com>

Terminal: Specify ourselves as xterm-256color.

This was originally instated back in 2013, but was reverted then
due to #9636 because most other systems did not yet recognize that
terminal type.

Nowadays, nearly all Linux terminals specify themselves as being
"xterm-256color" by default, so reinstating this should be fine.


# 79895eed 23-Apr-2014 Murai Takashi <tmurai01@gmail.com>

Fix gcc 4.9.0 build

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>


# aeaf4921 22-Nov-2013 Ezo <ezo.dev@gmail.com>

Terminal: Fixed resource leak CID:702031

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>


# 45b3329d 03-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Fix incorrect uses of getpwuid_r()

The function's behavior was recently fixed to succeed, but return a NULL
pointer, when the entry was not found. Fixes a crash in this case.


# cd749a76 29-Apr-2013 Jérôme Duval <jerome.duval@gmail.com>

Terminal: use unsigned short instead of int to avoid a narrowing conversion warning.

* unsigned short is the type used in the struct winsize.


# a6ea4a19 14-Apr-2013 Siarzhuk Zharski <zharik@gmx.li>

Fix "Error opening terminal:xterm-256color" issue (#9636)

Looks like switching to declare "xterm-256color" terminal emulation was
made a bit early: there are lot of servers that still do not know about
this terminal. As was discussed in #9636 the only acceptable way is to
switch back to "xterm" and adjust corresponding entry in our local
termcap database to support 256 colors. So this changeset:

* Declare emulated terminal as "xterm";
* Change the colors and color pairs of "xterm" termcap entry to support
256 colors;

Workarounds the #9636. Should be upgraded to "xterm-256color" some time
in the future.


# 19bfeaa7 24-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

Support %e (cur.encoding) for Terminal titles

Optional parameter %e to indicate current tab view encoding in the
window title. It is not shown in case tab view encoding is default
UTF-8. Inspired by Sergei Reznikov. Thanks.


# 5b41331f 09-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

CodeStyle fixes, some refactoring and cleanup

* Clear some codestyle issues catched by checker script;
* Rename RestartDebugCapture to more consistent StartStopDebugCapture;
* Updated Copyrights and authors lists, some occurences of the raw MIT
licence text replaced with "under the terms of MIT licence" reference;
* Fixes for x86_64 build.

This is cumulative cleanup commit for series of Terminal refactoring
changes I have introduced last time. No significant functional changes.


# b512213b 31-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Support Background Color Erase, switch to xterm-256color

* Lot of fixes to add support of BCE (background color erase). Shell
is switched to emulate xterm-256colors terminal, that is modern and
declare the colors capabilities of our Terminal more precisely;
* Move current character attributes fAttr from TermView to
BasicTerminalBuffer. This reduces count of function parameters on call
various InsertXXX routines;
* In alternative screen buffer mode the whole cells "matrix" of the
screen buffers is taken into account during drawing background of the
cells in the view. In normal mode the "attributes" field of the
TerminalLine is used to detect color of the area after the last
character - there should be no changes with previous behaviour;
* Fix attributes on kSpaceChar-padding short lines. Current _line_
attributes should be used instead of current _global_ attributes;
* Fixed pads and gaps attributes, more accurate handling of ESC[K and K°;
* _Invalidate strings just erased. Fix EraseChars DCH processing;
* Fixes for ESC[J erase lines control sequences;
* Added handling SGR 90-97, 100-107 codes;
* Clean the newly allocated TerminalLine lines;
* More precise cursor background [off-]color estimation at ends of
lines. The current line attributes should be used instead of
hard-coding it to fTextBackground;
* Fixed background color erase in normal screen buffer modes. Wrong
line indexes calculation messed the drawing results or just returned
0 [default] line attributes;
* Some more BCE support: TerminalLine::Clear() now honors current
character attributes;
* Fixes #6143, #6510 and #6424.


# f9443b14 26-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Reverting hrev45143:bold characters visual regression

Terminal is GUI application and there are no need to emulate bold
in some kind of color adjustments, especially in case the proposed
emulation look is too far away from results observed on similar software
like xterm, Konsole and XFCE Terminal.


# 2b67e9a3 09-Jan-2013 Adrien Destugues <pulkomandy@gmail.com>

Merge changes from Fonzoterm :
- Report the terminal as xterm-color instead of just xterm, since we handle that fine.
- Tweak the SGR handler a bit to use bright rather than bold in some cases
- Change the color palette so the result is still readable (white on white doesn't work so well) with the default colorscheme.


# 546208a5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# 0961433d 06-Mar-2011 Jérôme Duval <korli@users.berlios.de>

Patch from diver (bug #7329) with cleanup by myself: remove excessive localization


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40834 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f02c85ad 01-Mar-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Fix non-static, non-initialized member fProcessID CID 9946; Remove non-used fLockFlag, set un-initilized fSavedAttr member, CID 9945; fixed a few extra spaces

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40765 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca598670 22-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Removed the shell process ID from ActiveProcessInfo and moved it to new class
ShellInfo, which also contains a flag whether the shell is the default shell.
* If the Terminal has been started with a custom shell, also replace "%p" in
the title by its name, when active.
* Also show the on-close alert for the custom shell.

Fixes #6844.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39573 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 37322c4b 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added new class ShellParameters that bundles all parameters passed to the
shell.
* Also added a parameter for the current working directory and. If supplied,
it is applied in Shell::_Spawn().
* Pass the current working directory of the active tab when opening a new
tab. Implements part of #6712.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39457 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b27862d2 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Reverted r39451. Instead introduced new class ActiveProcessInfo and added
method GetActiveProcessInfo() to Shell and TermView to get such an info for
the current foreground process group leader. Currently the info only contains
the ID, name, and current directory of the process.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39455 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5a76a2c1 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added ActiveProcessGroup() getter to Shell and TermView.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39451 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 420cd21c 17-Aug-2010 Rene Gollent <anevilyak@gmail.com>

Move the password structs outside of the inner block as well. Fixes #6464.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38221 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 26411b53 17-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Remove legacy BeOS code
* Ensure the argument list passed to execve is NULL-terminated
* Also declare it earlier to make sure gcc4 doesn't erase it from memory when getting out of the if block.
This *should* fix gcc4 Terminal, and *does not* break it under gcc2.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38189 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6709e6bc 17-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Refactor default shell handling so it is done in a single place for a new windows and a new tab.
Use "/bin/sh -l" as the default command, and always pass -l ('login shell') to the user selected shell.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38173 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 397fd7f5 16-Aug-2010 Stephan Aßmus <superstippi@gmx.de>

A better fix than r38136: Remove the useless iostream include from Shell.cpp,
perhaps a left-over from debugging output? Thanks to Axel for reviewing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38138 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3ea58911 16-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Explicitly start bash when opening a new tab, since other shells may not handle the "--login" option.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38133 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d9fdb4f6 20-Jul-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added Shell::HasActiveProcesses() and TermView::IsShellBusy() (which calls
the former) to tell if some process launched from the terminal is still
running. Some style fix in Shell.h, made a parameter const.
Added basic TermWindow::QuitRequested()


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37631 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 34c53b14 07-Jul-2010 DarkWyrm <darkwyrm@gmail.com>

No longer set the SHELL variable. This fixes problems with starting gdb and other apps in a new Terminal window


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37423 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4eb0cbb0 07-May-2010 Matt Madia <mattmadia@gmail.com>

Updated TR_CONTEXT to be B_TRANSLATE_CONTEXT, relating to #5408.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36733 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 181511ca 07-May-2010 Axel Dörfler <axeld@pinc-software.de>

* Changed the alert message translation to something which makes a bit more
sense, and is less error prone.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36711 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6c514d3e 06-May-2010 Matt Madia <mattmadia@gmail.com>

Updated to use B_TRANSLATE* macros. relates to #5408.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36675 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8989d8a5 06-May-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Jorma Karvonen: Localization of the Terminal application. Thanks a lot.
Closes ticket #5850.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36640 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1e3815ba 23-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

After fork()ing we need to close the PTY master FD in the child. Otherwise
closing/killing the Terminal will not automatically wake up children
reading/writing the slave end. Fixes #3340 and probably #5395.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35584 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 035edd56 23-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35583 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7974d3dc 13-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Humdinger:
Updated Haiku apps to use sentence-case. What a huge undertaking...
The files where I had to apply the patch manually (for mysterious
reasons) have also gotten a whitespace cleanup. I've proof-read
everything so hopefully there should be no problems.

This should be the final part of #5169.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35049 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9f7a3e34 04-Jan-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

fAttached was never set in Shell::AttachBuffer(), and that caused
TermParse::StopThreads() in Shell::DetachBuffer() to be never called.
Moved initialization of termios struct to its own functions.
Added const to some methods.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34893 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8c6aa65e 19-Dec-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Implemented input method handling. Unfortunately, due to bug #4926, it's
completely unusable (it's disabled currently anyway).
Shell::AttachBuffer() returns a status_t now (instead of void), so the caller
can do something in case it fails.
Simplified some methods, removed unused stuff.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34707 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b38dbcd9 14-Mar-2009 Jérôme Duval <korli@users.berlios.de>

* set the thread priority to normal for spawned processes (bug #3564)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29533 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4012c75a 21-Feb-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Remove TermView dependency from Shell. It now depends on TerminalBuffer instead.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29273 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 84f0cb1a 26-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

VERASE is ^?.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26136 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a71fd798 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Changed generated key sequences to be more ANSI/xterm.
* Set TERM to "xterm".
* Removed unnecessary {Begin,End}ViewTransaction() in TermView::Draw().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26022 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52b1d543 09-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Terminal changes. This is still work in progress, some features
are disabled, lots of commented debug code is still in there,
and quite a bit of cleanup is needed, but basically things work
at least as well as before with several improvements:
* Changed TerminalBuffer from an interface to a complete
implementation. Removed all related code from TermView. Removed
the now obsolete TermBuffer. TermParse uses TerminalBuffer instead
of TermView, and TerminalBuffer asynchronously notifies TermView.
This avoids potential deadlocks, fixing #1918. It also speeds
up tty-output-bound programs. E.g. a "seq 10000" is about twice
at fast with the default terminal size in my setup, now. It's
still horribly slow compared to e.g. Konsole, though.
* Replaced CurPos by a more compact and fully inline class TermPos.
* Removed the offset feature (that insets the used text area) from
TermView, thus simplifying the code. Instead put the view into a
new parent view which provides the insets. This also fixes
artifacts that could sometimes be observed in the insets area.
* Scrolling related changes:
- When scrolling fully down, the (80x25 or whatever) terminal
screen is seen. It is not possible to scroll below the screen as
in Be's Terminal. Scrolling in Haiku's Terminal was weirdly
broken in this respect. As a side effect this fixes #2070.
- When not scrolled fully down, further output won't cause any
scrolling. It is thus possible to read earlier output while
something is still going on. Fixes #1772.
- Particularly to avoid unnecessary scrolling in the not scrolled
fully down case, TermView no longer actually scrolls. It only
sets an internal offset and manually uses CopyBits() as needed.
Introduced a (hacky) BScrollView subclass using a BScrollBar
subclass to make that possible.
* Selection related changes:
- Double/triple click plus dragging allows for selecting multiple
words/lines.
- Word selection no longer selects ranges of non-space characters.
Instead it knows that words are made of alpha numerical chars and
a certain set of other chars, and selects a range of commonly
classified characters (word chars, non-word non-whitespace chars,
whitespace chars). The non-alpha-num word characters should be
made user-settable. Due to missing multi-byte character
classification multi-byte whitespace is not recognized.
- Beyond the end of the line there no longer are invisible spaces.
Trying to select the region selects the end of the line (i.e.
line break). This is similar to how Konsole and xterm work.
- Added auto-scrolling when selecting with the mouse. Formerly the
Terminal scrolled only while moving the mouse. The scroll speed
might need some fine-tuning.
- Don't know what change exactly did that (likely the switch to
non-end-inclusive text ranges used internally), but the
occasional selection artifacts are gone.
* Resizing the terminal window re-wraps soft-wrapped lines.
* The find functionality seemed to be completely broken. At least it
never found anything for me. Should work now, though multi-byte
characters are not matched correctly in case-insensitive mode.

Regressions:
* Printing is disabled.
* Cursor blinking is disabled. Do we want it anyway?
* In several cases full-width characters are not handled correctly
(in more cases than before).
* Shrinking the terminal width doesn't work very well with "less"
(and probably other full-screen terminal apps), due to line
re-wrapping. "less" expects them to be truncated only. When
supporting an alternate screen buffer re-wrapping should be
disabled for it, which should solve the problem.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25881 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4386ce02 03-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Pulled the TermView interface used by TermParse into a new interface
class TerminalBuffer, which will evolve into a TermBuffer replacement
and decouple the parse thread from the window.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25787 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 901e5756 10-May-2008 François Revol <revol@free.fr>

Indeed we don't need this signal hack for BeOS, we just need to tell it the pgid. That reduces the number of things to remove later ;)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25411 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 156c7443 09-May-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

The terminal is not supposed to send signals to the shell. That's done
by the tty. Now I also understand the BeOS work-around to ignore SIGINT
in bash I removed recently.
I suppose the signal code is still needed for BeOS. If not please remove
it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25403 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f8a741bc 08-May-2008 François Revol <revol@free.fr>

Sorry but I still need to test Terminal in BeOS to debug it... allstuff is #if(n)defed on __HAIKU__ for clarity.
To be removed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25386 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0f75d28c 25-Apr-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

NULL terminate the default argument vector. It is passed to execve().
Fixes #2160.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25166 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1669306c 24-Apr-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Use the short way of opening a pty.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25136 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 929c94fe 14-Mar-2008 François Revol <revol@free.fr>

This should fix R5 BONE build, as it also lacks setenv(), unlike dano.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24391 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 56e415dd 04-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Opening the preferences window and hitting "cancel" would shrink the
window every time, without reason, since _Revert() was called even if no
changes were made.
Build the list of window sizes dynamically, this way we get rid of some
code duplication.
Removed implementation of TermWindow::QuitRequested(). The
B_QUIT_ON_WINDOW close takes care of quitting the application.
Some cleanups.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23860 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7014c8a3 17-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed support for "Full font", which wasn't used anyway. Since
our Terminal only works correctly with fixed width fonts, now the font
menu filters out variable width ones. For some reason, though, Konatu
Tohaba isn't recognized as fixed. Various other changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23591 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5dda419a 16-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

If spawning a shell in a tab failed, the tab wouldn't be removed by the
cleanup thread, since, not being attached to the window, Window()
returned NULL. Now CustomTermView::NotifyQuit() accounts for this, and
sends the message to the first window in the BApplication. Moreover,
RemoveTab() would always remove the currently selected tab, and not the
requested one.
Changed a printf() to fprintf().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23558 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 523f71ee 16-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Creating a new tab in terminal would show an error message (but still
worked). Fixed. Also moved handling of default shell command from
TermView to Shell, where it belongs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23557 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 07a6b566 13-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

system() works correctly, so we can use its return value now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23515 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0c770dc3 26-Aug-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Changed the suspend character to Ctrl-Z.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22065 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f3342f28 17-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

The Shell destructor was never called. Calling it showed that
the PtyReader thread in TermParse hanged in read(). There's even a
comment in there (by Axel) that read() is never interrupted. Switched to
kill_thread() in TermParse::StopPtyReader() until this problem is fixed.
At least we don't leave running apps around anymore. :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21997 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bb4632f1 16-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Stolen Ingo's Arguments class from Miniterminal and used it in place of
GPL'd code in TermApp (slightly modified, and bugfixed, even :P).
TermView now accepts an argument vector instead of a commandline. Same
thing for Shell.
Temporarily(?) removed some commandline options.
This also fixes bug #1396 (tested)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21979 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ce10f265 03-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

In case the user supplied a wrong commandline, the Terminal didn't launch
the shell as the code would seem to do. I've disabled showing the Alert,
since system() doesn't return the return value of "alert".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21809 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2b87a97a 03-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Attach/DetachShell are now private. Added a new TermView constructor
which only specifies the rows and columns, view size is automatically
calculated, and used it in TermWindow. Added a TermView::SetTitle()
method, thus TermParse doesn't call Window() anymore. Some cleanups,
scrollbar was off by one.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21808 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 69f6c88d 02-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

* The PtyReader thread now just exits when there is no more left to be read.
* setpgid() when spawning the shell was superfluous, as we're already the
session leader.
* Added a comment to TermView::NotifyQuit() about why sending B_QUIT_REQUESTED
to the window isn't such a good idea when you have more than one use for it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21794 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f328fdc4 02-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

Fixed the build under BeOS/Dano:
* setenv() actually exists in Dano.
* On R5, it now uses sprintf() - the previous version would not compile.
* Cleaned some weird code in TermBuffer.cpp to set the "buf" variable to the
end of the string - it also no longer uses the index() BSD extension
(same as strchr()).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21793 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 69adf535 28-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

TermView and the classes used by it now don't know about PrefHandler
anymore, but have methods to set the needed options. Various cleanups.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21728 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 258e9494 27-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

More work towards a tabbed terminal. Actually it already somewhat works
(code not enabled, though). Moved scripting from TermWindow to
TermView. Added a SmartTabView which (for now) only resizes the
child views to fit their size. Usual cleanups.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21723 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 17dfb8b1 26-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

More headers cleanup


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21706 a95241bf-73f2-0310-859d-f6bbb57e9c96


# abc47202 23-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Moved cursor blinking functionality from TermParse into TermView (and
from a BMessageRunner into Pulse()). Removed more unused stuff.
Moved around some constants and definitions. Many style changes. Sorry,
I know the two should be separated, but I had already done so many changes...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21695 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ac3a8f54 21-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Made all CodeConv methods static, since there was no point for them to
be nonstatic. Moved TermParse under Shell, Removed some parameters
passing around from TermWindow/TermView/TermParse. Now TermParse threads are
started when the shell is attached to a TermView. Might still be
improved.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21680 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0d32d905 21-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Minor cleanup, Updated some copyrights


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21677 a95241bf-73f2-0310-859d-f6bbb57e9c96


# dc25fe81 17-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Got rid of gTermPref by adding some static methods to PrefHandler.
The font size menu wasn't up to date with the current settings. Fixed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21630 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 37b209af 17-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Renamed spawn.cpp/h to Shell.cpp/h and updated the other source files to
take this change into account


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21629 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 79895eed07bbe1918686c6bf26869116369c3596 23-Apr-2014 Murai Takashi <tmurai01@gmail.com>

Fix gcc 4.9.0 build

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>


# aeaf4921576d3a52a46cb3f3a90d1563311cacd4 22-Nov-2013 Ezo <ezo.dev@gmail.com>

Terminal: Fixed resource leak CID:702031

Signed-off-by: Jérôme Duval <jerome.duval@gmail.com>


# 45b3329d9f364636fde8deb7000b81e60b60797e 03-Oct-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Fix incorrect uses of getpwuid_r()

The function's behavior was recently fixed to succeed, but return a NULL
pointer, when the entry was not found. Fixes a crash in this case.


# cd749a7652f6097f4d0548a539be6698337703b0 29-Apr-2013 Jérôme Duval <jerome.duval@gmail.com>

Terminal: use unsigned short instead of int to avoid a narrowing conversion warning.

* unsigned short is the type used in the struct winsize.


# a6ea4a194f34649fd0153e41a27284cc9cae3983 14-Apr-2013 Siarzhuk Zharski <zharik@gmx.li>

Fix "Error opening terminal:xterm-256color" issue (#9636)

Looks like switching to declare "xterm-256color" terminal emulation was
made a bit early: there are lot of servers that still do not know about
this terminal. As was discussed in #9636 the only acceptable way is to
switch back to "xterm" and adjust corresponding entry in our local
termcap database to support 256 colors. So this changeset:

* Declare emulated terminal as "xterm";
* Change the colors and color pairs of "xterm" termcap entry to support
256 colors;

Workarounds the #9636. Should be upgraded to "xterm-256color" some time
in the future.


# 19bfeaa78642fedb092eeaea7bab826753f39bd5 24-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

Support %e (cur.encoding) for Terminal titles

Optional parameter %e to indicate current tab view encoding in the
window title. It is not shown in case tab view encoding is default
UTF-8. Inspired by Sergei Reznikov. Thanks.


# 5b41331f1100c78541d87b7ad5a15d5652acb079 09-Mar-2013 Siarzhuk Zharski <zharik@gmx.li>

CodeStyle fixes, some refactoring and cleanup

* Clear some codestyle issues catched by checker script;
* Rename RestartDebugCapture to more consistent StartStopDebugCapture;
* Updated Copyrights and authors lists, some occurences of the raw MIT
licence text replaced with "under the terms of MIT licence" reference;
* Fixes for x86_64 build.

This is cumulative cleanup commit for series of Terminal refactoring
changes I have introduced last time. No significant functional changes.


# b512213be6f7cf9660c07e24a81b7597c8776116 31-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Support Background Color Erase, switch to xterm-256color

* Lot of fixes to add support of BCE (background color erase). Shell
is switched to emulate xterm-256colors terminal, that is modern and
declare the colors capabilities of our Terminal more precisely;
* Move current character attributes fAttr from TermView to
BasicTerminalBuffer. This reduces count of function parameters on call
various InsertXXX routines;
* In alternative screen buffer mode the whole cells "matrix" of the
screen buffers is taken into account during drawing background of the
cells in the view. In normal mode the "attributes" field of the
TerminalLine is used to detect color of the area after the last
character - there should be no changes with previous behaviour;
* Fix attributes on kSpaceChar-padding short lines. Current _line_
attributes should be used instead of current _global_ attributes;
* Fixed pads and gaps attributes, more accurate handling of ESC[K and K°;
* _Invalidate strings just erased. Fix EraseChars DCH processing;
* Fixes for ESC[J erase lines control sequences;
* Added handling SGR 90-97, 100-107 codes;
* Clean the newly allocated TerminalLine lines;
* More precise cursor background [off-]color estimation at ends of
lines. The current line attributes should be used instead of
hard-coding it to fTextBackground;
* Fixed background color erase in normal screen buffer modes. Wrong
line indexes calculation messed the drawing results or just returned
0 [default] line attributes;
* Some more BCE support: TerminalLine::Clear() now honors current
character attributes;
* Fixes #6143, #6510 and #6424.


# f9443b14d5faa43f98a0a7a5cc85994599bc11a3 26-Jan-2013 Siarzhuk Zharski <zharik@gmx.li>

Reverting hrev45143:bold characters visual regression

Terminal is GUI application and there are no need to emulate bold
in some kind of color adjustments, especially in case the proposed
emulation look is too far away from results observed on similar software
like xterm, Konsole and XFCE Terminal.


# 2b67e9a3a72acffbd4636d0825e7948c738716fb 09-Jan-2013 Adrien Destugues <pulkomandy@gmail.com>

Merge changes from Fonzoterm :
- Report the terminal as xterm-color instead of just xterm, since we handle that fine.
- Tweak the SGR handler a bit to use bright rather than bold in some cases
- Change the color palette so the result is still readable (white on white doesn't work so well) with the default colorscheme.


# 546208a53940a26c6379c48a7854ade1a8250fc5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# 0961433d2a75a252e3caa8f63a0be7ac488b0c96 06-Mar-2011 Jérôme Duval <korli@users.berlios.de>

Patch from diver (bug #7329) with cleanup by myself: remove excessive localization


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40834 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f02c85adbab949acfbac1b260db2f7f3caa05d8e 01-Mar-2011 Alexander von Gluck IV <kallisti5@unixzen.com>

Fix non-static, non-initialized member fProcessID CID 9946; Remove non-used fLockFlag, set un-initilized fSavedAttr member, CID 9945; fixed a few extra spaces

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40765 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca598670fb927e196eb2a5ab90fa03bfb5dac0a2 22-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Removed the shell process ID from ActiveProcessInfo and moved it to new class
ShellInfo, which also contains a flag whether the shell is the default shell.
* If the Terminal has been started with a custom shell, also replace "%p" in
the title by its name, when active.
* Also show the on-close alert for the custom shell.

Fixes #6844.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39573 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 37322c4b52e4d9922fb1c7289a3f0d129ab1841b 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added new class ShellParameters that bundles all parameters passed to the
shell.
* Also added a parameter for the current working directory and. If supplied,
it is applied in Shell::_Spawn().
* Pass the current working directory of the active tab when opening a new
tab. Implements part of #6712.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39457 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b27862d236b20483e88aa24aa8e2d8fed2e00907 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Reverted r39451. Instead introduced new class ActiveProcessInfo and added
method GetActiveProcessInfo() to Shell and TermView to get such an info for
the current foreground process group leader. Currently the info only contains
the ID, name, and current directory of the process.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39455 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5a76a2c142ef0d79e2fb944a76a213921992a035 16-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added ActiveProcessGroup() getter to Shell and TermView.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39451 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 420cd21c9460cf28a7eff7f16014fc8f83a79061 17-Aug-2010 Rene Gollent <anevilyak@gmail.com>

Move the password structs outside of the inner block as well. Fixes #6464.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38221 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 26411b5359fd5b362623889ee54951f72a15c3f7 17-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Remove legacy BeOS code
* Ensure the argument list passed to execve is NULL-terminated
* Also declare it earlier to make sure gcc4 doesn't erase it from memory when getting out of the if block.
This *should* fix gcc4 Terminal, and *does not* break it under gcc2.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38189 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6709e6bcb82e28484ce380f12857e20f33efedca 17-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Refactor default shell handling so it is done in a single place for a new windows and a new tab.
Use "/bin/sh -l" as the default command, and always pass -l ('login shell') to the user selected shell.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38173 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 397fd7f5d04d74c1c336b6217c2a2afaa274548f 16-Aug-2010 Stephan Aßmus <superstippi@gmx.de>

A better fix than r38136: Remove the useless iostream include from Shell.cpp,
perhaps a left-over from debugging output? Thanks to Axel for reviewing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38138 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3ea58911f9aeb918b820d37123a4ee778f6946e8 16-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Explicitly start bash when opening a new tab, since other shells may not handle the "--login" option.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38133 a95241bf-73f2-0310-859d-f6bbb57e9c96


# d9fdb4f6cdba4e444b19404e3d4dfe1c86b2f575 20-Jul-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added Shell::HasActiveProcesses() and TermView::IsShellBusy() (which calls
the former) to tell if some process launched from the terminal is still
running. Some style fix in Shell.h, made a parameter const.
Added basic TermWindow::QuitRequested()


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37631 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 34c53b14a2dc30f5cb25675978e68c748b6fce8e 07-Jul-2010 DarkWyrm <darkwyrm@gmail.com>

No longer set the SHELL variable. This fixes problems with starting gdb and other apps in a new Terminal window


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37423 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4eb0cbb044cf538f18c0d252934a5bcaa33bfd34 07-May-2010 Matt Madia <mattmadia@gmail.com>

Updated TR_CONTEXT to be B_TRANSLATE_CONTEXT, relating to #5408.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36733 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 181511caad6fb4941ec12392409b7b1e826bb478 07-May-2010 Axel Dörfler <axeld@pinc-software.de>

* Changed the alert message translation to something which makes a bit more
sense, and is less error prone.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36711 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6c514d3e3bfc9c33f9f4a2edd0b593d734046c8f 06-May-2010 Matt Madia <mattmadia@gmail.com>

Updated to use B_TRANSLATE* macros. relates to #5408.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36675 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8989d8a52e0ca6b551f2a57b51a7f1c77726144b 06-May-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Jorma Karvonen: Localization of the Terminal application. Thanks a lot.
Closes ticket #5850.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36640 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1e3815ba3bbf5cd9304f51e69a161300d2cb4fea 23-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

After fork()ing we need to close the PTY master FD in the child. Otherwise
closing/killing the Terminal will not automatically wake up children
reading/writing the slave end. Fixes #3340 and probably #5395.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35584 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 035edd562b3007371616d102f1c81624ae5b9cd4 23-Feb-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35583 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7974d3dcf39ce78e5885b481eee12e561ad6e096 13-Jan-2010 Stephan Aßmus <superstippi@gmx.de>

Patch by Humdinger:
Updated Haiku apps to use sentence-case. What a huge undertaking...
The files where I had to apply the patch manually (for mysterious
reasons) have also gotten a whitespace cleanup. I've proof-read
everything so hopefully there should be no problems.

This should be the final part of #5169.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35049 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9f7a3e34060ca7626221d243826f7d9595cd77c3 04-Jan-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

fAttached was never set in Shell::AttachBuffer(), and that caused
TermParse::StopThreads() in Shell::DetachBuffer() to be never called.
Moved initialization of termios struct to its own functions.
Added const to some methods.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34893 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8c6aa65eb6a967af6ade9abeee7c961ff84005c7 19-Dec-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Implemented input method handling. Unfortunately, due to bug #4926, it's
completely unusable (it's disabled currently anyway).
Shell::AttachBuffer() returns a status_t now (instead of void), so the caller
can do something in case it fails.
Simplified some methods, removed unused stuff.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34707 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b38dbcd92d66ca58d3cff1ab66662646e7be1617 14-Mar-2009 Jérôme Duval <korli@users.berlios.de>

* set the thread priority to normal for spawned processes (bug #3564)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29533 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4012c75a866fa77d21c6556b75417811d883be60 21-Feb-2009 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Remove TermView dependency from Shell. It now depends on TerminalBuffer instead.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29273 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 84f0cb1ab4ef245d905e31fa8cdf41b599b9d66a 26-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

VERASE is ^?.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26136 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a71fd7987b6eda68698e0b342afcd7890d2f4d86 19-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

* Changed generated key sequences to be more ANSI/xterm.
* Set TERM to "xterm".
* Removed unnecessary {Begin,End}ViewTransaction() in TermView::Draw().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26022 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52b1d543e80f5d48e6ef841fff4780c7c87bae11 09-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Terminal changes. This is still work in progress, some features
are disabled, lots of commented debug code is still in there,
and quite a bit of cleanup is needed, but basically things work
at least as well as before with several improvements:
* Changed TerminalBuffer from an interface to a complete
implementation. Removed all related code from TermView. Removed
the now obsolete TermBuffer. TermParse uses TerminalBuffer instead
of TermView, and TerminalBuffer asynchronously notifies TermView.
This avoids potential deadlocks, fixing #1918. It also speeds
up tty-output-bound programs. E.g. a "seq 10000" is about twice
at fast with the default terminal size in my setup, now. It's
still horribly slow compared to e.g. Konsole, though.
* Replaced CurPos by a more compact and fully inline class TermPos.
* Removed the offset feature (that insets the used text area) from
TermView, thus simplifying the code. Instead put the view into a
new parent view which provides the insets. This also fixes
artifacts that could sometimes be observed in the insets area.
* Scrolling related changes:
- When scrolling fully down, the (80x25 or whatever) terminal
screen is seen. It is not possible to scroll below the screen as
in Be's Terminal. Scrolling in Haiku's Terminal was weirdly
broken in this respect. As a side effect this fixes #2070.
- When not scrolled fully down, further output won't cause any
scrolling. It is thus possible to read earlier output while
something is still going on. Fixes #1772.
- Particularly to avoid unnecessary scrolling in the not scrolled
fully down case, TermView no longer actually scrolls. It only
sets an internal offset and manually uses CopyBits() as needed.
Introduced a (hacky) BScrollView subclass using a BScrollBar
subclass to make that possible.
* Selection related changes:
- Double/triple click plus dragging allows for selecting multiple
words/lines.
- Word selection no longer selects ranges of non-space characters.
Instead it knows that words are made of alpha numerical chars and
a certain set of other chars, and selects a range of commonly
classified characters (word chars, non-word non-whitespace chars,
whitespace chars). The non-alpha-num word characters should be
made user-settable. Due to missing multi-byte character
classification multi-byte whitespace is not recognized.
- Beyond the end of the line there no longer are invisible spaces.
Trying to select the region selects the end of the line (i.e.
line break). This is similar to how Konsole and xterm work.
- Added auto-scrolling when selecting with the mouse. Formerly the
Terminal scrolled only while moving the mouse. The scroll speed
might need some fine-tuning.
- Don't know what change exactly did that (likely the switch to
non-end-inclusive text ranges used internally), but the
occasional selection artifacts are gone.
* Resizing the terminal window re-wraps soft-wrapped lines.
* The find functionality seemed to be completely broken. At least it
never found anything for me. Should work now, though multi-byte
characters are not matched correctly in case-insensitive mode.

Regressions:
* Printing is disabled.
* Cursor blinking is disabled. Do we want it anyway?
* In several cases full-width characters are not handled correctly
(in more cases than before).
* Shrinking the terminal width doesn't work very well with "less"
(and probably other full-screen terminal apps), due to line
re-wrapping. "less" expects them to be truncated only. When
supporting an alternate screen buffer re-wrapping should be
disabled for it, which should solve the problem.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25881 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4386ce0206df74a06409dc1d5ebb0db3596c1e5c 03-Jun-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Pulled the TermView interface used by TermParse into a new interface
class TerminalBuffer, which will evolve into a TermBuffer replacement
and decouple the parse thread from the window.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25787 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 901e5756cba6cbc992b71815892d9635d32a490b 10-May-2008 François Revol <revol@free.fr>

Indeed we don't need this signal hack for BeOS, we just need to tell it the pgid. That reduces the number of things to remove later ;)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25411 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 156c7443359530266cca0871892653e278981c3d 09-May-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

The terminal is not supposed to send signals to the shell. That's done
by the tty. Now I also understand the BeOS work-around to ignore SIGINT
in bash I removed recently.
I suppose the signal code is still needed for BeOS. If not please remove
it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25403 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f8a741bcbaa6e79759cf55f3713c1c6d8d1a7237 08-May-2008 François Revol <revol@free.fr>

Sorry but I still need to test Terminal in BeOS to debug it... allstuff is #if(n)defed on __HAIKU__ for clarity.
To be removed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25386 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0f75d28cb487f08b1613689680547939db1ec306 25-Apr-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

NULL terminate the default argument vector. It is passed to execve().
Fixes #2160.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25166 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1669306c8a8c988eb3073689cacebb436c7dc07d 24-Apr-2008 Ingo Weinhold <ingo_weinhold@gmx.de>

Use the short way of opening a pty.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25136 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 929c94fe377c07592700149c3fd8373f4b10126e 14-Mar-2008 François Revol <revol@free.fr>

This should fix R5 BONE build, as it also lacks setenv(), unlike dano.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24391 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 56e415dda141250b366bc3d5edd71814960129dd 04-Feb-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Opening the preferences window and hitting "cancel" would shrink the
window every time, without reason, since _Revert() was called even if no
changes were made.
Build the list of window sizes dynamically, this way we get rid of some
code duplication.
Removed implementation of TermWindow::QuitRequested(). The
B_QUIT_ON_WINDOW close takes care of quitting the application.
Some cleanups.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23860 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7014c8a3790cfbd79887ef7092b6c89ad9e548bd 17-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed support for "Full font", which wasn't used anyway. Since
our Terminal only works correctly with fixed width fonts, now the font
menu filters out variable width ones. For some reason, though, Konatu
Tohaba isn't recognized as fixed. Various other changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23591 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5dda419aebf40cc6cc5c7e0a89b6c8f22b760fea 16-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

If spawning a shell in a tab failed, the tab wouldn't be removed by the
cleanup thread, since, not being attached to the window, Window()
returned NULL. Now CustomTermView::NotifyQuit() accounts for this, and
sends the message to the first window in the BApplication. Moreover,
RemoveTab() would always remove the currently selected tab, and not the
requested one.
Changed a printf() to fprintf().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23558 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 523f71ee2b39abfec8a91ead2a576de689b4c299 16-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Creating a new tab in terminal would show an error message (but still
worked). Fixed. Also moved handling of default shell command from
TermView to Shell, where it belongs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23557 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 07a6b56636f0909e3e8ffab064b0ebc3ad5929a3 13-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

system() works correctly, so we can use its return value now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23515 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0c770dc39e6f0740680d1c4d097921089e2434d8 26-Aug-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

Changed the suspend character to Ctrl-Z.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22065 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f3342f281b5a3da3c48c2e77faa6cba97224c6aa 17-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

The Shell destructor was never called. Calling it showed that
the PtyReader thread in TermParse hanged in read(). There's even a
comment in there (by Axel) that read() is never interrupted. Switched to
kill_thread() in TermParse::StopPtyReader() until this problem is fixed.
At least we don't leave running apps around anymore. :)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21997 a95241bf-73f2-0310-859d-f6bbb57e9c96


# bb4632f1ecfa5b77c87683e446ff7db70c636baf 16-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Stolen Ingo's Arguments class from Miniterminal and used it in place of
GPL'd code in TermApp (slightly modified, and bugfixed, even :P).
TermView now accepts an argument vector instead of a commandline. Same
thing for Shell.
Temporarily(?) removed some commandline options.
This also fixes bug #1396 (tested)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21979 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ce10f265de398530c8412598f9879a1ed33a8913 03-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

In case the user supplied a wrong commandline, the Terminal didn't launch
the shell as the code would seem to do. I've disabled showing the Alert,
since system() doesn't return the return value of "alert".


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21809 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2b87a97ac6932e3421e0a8a071a7d31f00ec9c73 03-Aug-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Attach/DetachShell are now private. Added a new TermView constructor
which only specifies the rows and columns, view size is automatically
calculated, and used it in TermWindow. Added a TermView::SetTitle()
method, thus TermParse doesn't call Window() anymore. Some cleanups,
scrollbar was off by one.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21808 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 69f6c88d58365e044396fc7c1e67e52a14fff31a 02-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

* The PtyReader thread now just exits when there is no more left to be read.
* setpgid() when spawning the shell was superfluous, as we're already the
session leader.
* Added a comment to TermView::NotifyQuit() about why sending B_QUIT_REQUESTED
to the window isn't such a good idea when you have more than one use for it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21794 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f328fdc455e42072a0909d2155b44bd4b6e375a5 02-Aug-2007 Axel Dörfler <axeld@pinc-software.de>

Fixed the build under BeOS/Dano:
* setenv() actually exists in Dano.
* On R5, it now uses sprintf() - the previous version would not compile.
* Cleaned some weird code in TermBuffer.cpp to set the "buf" variable to the
end of the string - it also no longer uses the index() BSD extension
(same as strchr()).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21793 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 69adf535c1b4469dc0991c4c9c07f2dea81f18a4 28-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

TermView and the classes used by it now don't know about PrefHandler
anymore, but have methods to set the needed options. Various cleanups.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21728 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 258e949475ef1971cc5560dd0715f7199123e7a4 27-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

More work towards a tabbed terminal. Actually it already somewhat works
(code not enabled, though). Moved scripting from TermWindow to
TermView. Added a SmartTabView which (for now) only resizes the
child views to fit their size. Usual cleanups.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21723 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 17dfb8b1cb676292928973a7690c277a9875d5c9 26-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

More headers cleanup


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21706 a95241bf-73f2-0310-859d-f6bbb57e9c96


# abc4720231b10f87fa94d5d1e47d18650cf457de 23-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Moved cursor blinking functionality from TermParse into TermView (and
from a BMessageRunner into Pulse()). Removed more unused stuff.
Moved around some constants and definitions. Many style changes. Sorry,
I know the two should be separated, but I had already done so many changes...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21695 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ac3a8f54460005262afcdc310481d6ba91ef6ff9 21-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Made all CodeConv methods static, since there was no point for them to
be nonstatic. Moved TermParse under Shell, Removed some parameters
passing around from TermWindow/TermView/TermParse. Now TermParse threads are
started when the shell is attached to a TermView. Might still be
improved.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21680 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0d32d905e9e0dcc971b842b165a9958c78f8a5aa 21-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Minor cleanup, Updated some copyrights


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21677 a95241bf-73f2-0310-859d-f6bbb57e9c96


# dc25fe8173a381f951765f518a85c287e894cd8c 17-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Got rid of gTermPref by adding some static methods to PrefHandler.
The font size menu wasn't up to date with the current settings. Fixed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21630 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 37b209af048711485162612411b223ecf1948650 17-Jul-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Renamed spawn.cpp/h to Shell.cpp/h and updated the other source files to
take this change into account


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21629 a95241bf-73f2-0310-859d-f6bbb57e9c96