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
This commit is contained in:
@@ -55,10 +55,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* default shell command and options. */
|
|
||||||
const char *kDefaultShellCommand = { "/bin/sh" "-login" };
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set environment variable.
|
* Set environment variable.
|
||||||
*/
|
*/
|
||||||
@@ -273,6 +269,13 @@ receive_handshake_message(handshake_t& handshake)
|
|||||||
status_t
|
status_t
|
||||||
Shell::_Spawn(int row, int col, const char *encoding, int argc, const char **argv)
|
Shell::_Spawn(int row, int col, const char *encoding, int argc, const char **argv)
|
||||||
{
|
{
|
||||||
|
const char *kDefaultShellCommand[] = { "/bin/sh", "--login" };
|
||||||
|
|
||||||
|
if (argv == NULL || argc == 0) {
|
||||||
|
argv = kDefaultShellCommand;
|
||||||
|
argc = 2;
|
||||||
|
}
|
||||||
|
|
||||||
signal(SIGTTOU, SIG_IGN);
|
signal(SIGTTOU, SIG_IGN);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -480,9 +483,9 @@ Shell::_Spawn(int row, int col, const char *encoding, int argc, const char **arg
|
|||||||
setenv("TERM", "beterm", true);
|
setenv("TERM", "beterm", true);
|
||||||
setenv("TTY", ttyName, true);
|
setenv("TTY", ttyName, true);
|
||||||
setenv("TTYPE", encoding, true);
|
setenv("TTYPE", encoding, true);
|
||||||
setenv("SHELL", *argv, true);
|
setenv("SHELL", argv[0], true);
|
||||||
|
|
||||||
execve(*argv, (char * const *)argv, environ);
|
execve(argv[0], (char * const *)argv, environ);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Exec failed.
|
* Exec failed.
|
||||||
@@ -493,11 +496,12 @@ Shell::_Spawn(int row, int col, const char *encoding, int argc, const char **arg
|
|||||||
"\t%s' "
|
"\t%s' "
|
||||||
"'Use Default Shell' 'Abort'";
|
"'Use Default Shell' 'Abort'";
|
||||||
char errorMessage[256];
|
char errorMessage[256];
|
||||||
snprintf(errorMessage, sizeof(errorMessage), spawnAlertMessage, *argv, strerror(errno));
|
snprintf(errorMessage, sizeof(errorMessage), spawnAlertMessage, argv[0], strerror(errno));
|
||||||
|
|
||||||
int returnValue = system(errorMessage);
|
int returnValue = system(errorMessage);
|
||||||
if (returnValue == 0)
|
if (returnValue == 0)
|
||||||
execl("/bin/sh", "/bin/sh", "-login", NULL);
|
execl(kDefaultShellCommand[0], kDefaultShellCommand[0],
|
||||||
|
kDefaultShellCommand[1], NULL);
|
||||||
|
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,49 +59,6 @@ const static rgb_color kTermColorTable[8] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const unsigned char M_ADD_CURSOR[] = {
|
|
||||||
16, // Size
|
|
||||||
1, // Color depth
|
|
||||||
0, // Hot spot y
|
|
||||||
1, // Hot spot x
|
|
||||||
|
|
||||||
// Cursor image
|
|
||||||
0x70, 0x00,
|
|
||||||
0x48, 0x00,
|
|
||||||
0x48, 0x00,
|
|
||||||
0x27, 0xc0,
|
|
||||||
0x24, 0xb8,
|
|
||||||
0x12, 0x54,
|
|
||||||
0x10, 0x02,
|
|
||||||
0x78, 0x02,
|
|
||||||
0x98, 0x02,
|
|
||||||
0x84, 0x02,
|
|
||||||
0x60, 0x02,
|
|
||||||
0x18, 0x12,
|
|
||||||
0x04, 0x10,
|
|
||||||
0x02, 0x7c,
|
|
||||||
0x00, 0x10,
|
|
||||||
0x00, 0x10,
|
|
||||||
// Mask image
|
|
||||||
0x70, 0x00,
|
|
||||||
0x78, 0x00,
|
|
||||||
0x78, 0x00,
|
|
||||||
0x3f, 0xc0,
|
|
||||||
0x3f, 0xf8,
|
|
||||||
0x1f, 0xfc,
|
|
||||||
0x1f, 0xfe,
|
|
||||||
0x7f, 0xfe,
|
|
||||||
0xff, 0xfe,
|
|
||||||
0xff, 0xfe,
|
|
||||||
0x7f, 0xfe,
|
|
||||||
0x1f, 0xfe,
|
|
||||||
0x07, 0xfc,
|
|
||||||
0x03, 0xfc,
|
|
||||||
0x00, 0x10,
|
|
||||||
0x00, 0x10,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#define ROWS_DEFAULT 25
|
#define ROWS_DEFAULT 25
|
||||||
#define COLUMNS_DEFAULT 80
|
#define COLUMNS_DEFAULT 80
|
||||||
|
|
||||||
@@ -286,13 +243,6 @@ TermView::TermView(BMessage *archive)
|
|||||||
status_t
|
status_t
|
||||||
TermView::_InitObject(int32 argc, const char **argv)
|
TermView::_InitObject(int32 argc, const char **argv)
|
||||||
{
|
{
|
||||||
const char *defaultArgv[] = { "/bin/sh", "--login" };
|
|
||||||
|
|
||||||
if (argc == 0 || argv == NULL) {
|
|
||||||
argc = 2;
|
|
||||||
argv = defaultArgv;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetTermFont(be_fixed_font, be_fixed_font);
|
SetTermFont(be_fixed_font, be_fixed_font);
|
||||||
|
|
||||||
fTextBuffer = new (std::nothrow) TermBuffer(fTermRows, fTermColumns, fScrBufSize);
|
fTextBuffer = new (std::nothrow) TermBuffer(fTermRows, fTermColumns, fScrBufSize);
|
||||||
|
|||||||
Reference in New Issue
Block a user