hrev52785 adds 1 changeset to branch 'master'
old head: 3f77fdd1d2a03d31ee3e9426f55544167192850e
new head: dace9ead09063eafb01c1ffb0f42f085cd5dd665
overview:
https://git.haiku-os.org/haiku/log/?qt=range&q=dace9ead0906+%5E3f77fdd1d2a0
----------------------------------------------------------------------------
dace9ead0906: Terminal: added argv for initial working directory
Change-Id: I82ea0e358d037d79f2a7ffb59f83cf6e3d72d4a6
Reviewed-on: https://review.haiku-os.org/c/780
Reviewed-by: Adrien Destugues <pulkomandy@xxxxxxxxx>
[ lazybullfrog <jjbailey@xxxxxxxxx> ]
----------------------------------------------------------------------------
Revision: hrev52785
Commit: dace9ead09063eafb01c1ffb0f42f085cd5dd665
URL: https://git.haiku-os.org/haiku/commit/?id=dace9ead0906
Author: lazybullfrog <jjbailey@xxxxxxxxx>
Date: Wed Jan 16 04:00:53 2019 UTC
Committer: waddlesplash <waddlesplash@xxxxxxxxx>
Commit-Date: Tue Jan 22 17:53:03 2019 UTC
----------------------------------------------------------------------------
4 files changed, 61 insertions(+), 29 deletions(-)
src/apps/terminal/Arguments.cpp | 22 +++++++++++++++++-----
src/apps/terminal/Arguments.h | 21 +++++++++++++++------
src/apps/terminal/TermApp.cpp | 35 +++++++++++++++++++++--------------
src/apps/terminal/TermApp.h | 12 ++++++++----
----------------------------------------------------------------------------
diff --git a/src/apps/terminal/Arguments.cpp b/src/apps/terminal/Arguments.cpp
index 99305ee5b4..338513b2bc 100644
--- a/src/apps/terminal/Arguments.cpp
+++ b/src/apps/terminal/Arguments.cpp
@@ -1,6 +1,12 @@
/*
- * Copyright 2005, Ingo Weinhold, bonefish@xxxxxxxxxxxx.
+ * Copyright 2005-2019, Haiku, Inc. All rights reserved.
+ * Copyright 2005, Ingo Weinhold, <bonefish@xxxxxxxxxxxx>
+ *
* Distributed under the terms of the MIT License.
+ *
+ * Authors:
+ * Jeremiah Bailey, <jjbailey@xxxxxxxxx>
+ * Ingo Weinhold, <bonefish@xxxxxxxxxxxx>
*/
@@ -25,7 +31,8 @@ Arguments::Arguments(int defaultArgsNum, const char* const*
defaultArgs)
fFullScreen(false),
fShellArgumentCount(0),
fShellArguments(NULL),
- fTitle(NULL)
+ fTitle(NULL),
+ fWorkingDirectory(NULL)
{
_SetShellArguments(defaultArgsNum, defaultArgs);
}
@@ -53,9 +60,14 @@ Arguments::Parse(int argc, const char* const* argv)
fUsageRequested = true;
else
fTitle = argv[++argi];
-
- } else if (strcmp(arg, "-f") == 0 || strcmp(arg,
"--fullscreen")
- == 0)
+ } else if (strcmp(arg, "-w") == 0
+ || strcmp(arg, "--working-directory")
== 0) {
+ if (argi >= argc)
+ fUsageRequested = true;
+ else
+ fWorkingDirectory = argv[++argi];
+ } else if (strcmp(arg, "-f") == 0
+ || strcmp(arg, "--fullscreen") == 0)
fFullScreen = true;
else {
// illegal option
diff --git a/src/apps/terminal/Arguments.h b/src/apps/terminal/Arguments.h
index bdc23c05ad..98c243c94d 100644
--- a/src/apps/terminal/Arguments.h
+++ b/src/apps/terminal/Arguments.h
@@ -1,8 +1,15 @@
/*
- * Copyright 2005, Ingo Weinhold, bonefish@xxxxxxxxxxxx.
+ * Copyright 2005-2018, Haiku, Inc. All rights reserved.
+ * Copyright 2005, Ingo Weinhold, <bonefish@xxxxxxxxxxxx>
+ *
* Distributed under the terms of the MIT License.
+ *
+ * Authors:
+ * Jeremiah Bailey, <jjbailey@xxxxxxxxx>
+ * Ingo Weinhold, <bonefish@xxxxxxxxxxxx>
*/
+
#ifndef ARGUMENTS_H
#define ARGUMENTS_H
@@ -15,11 +22,12 @@ public:
void Parse(int argc, const char* const* argv);
- BRect Bounds() const { return fBounds; }
- const char* Title() const { return fTitle; }
- bool StandardShell() const { return fStandardShell; }
- bool FullScreen() const { return fFullScreen; }
- bool UsageRequested() const { return fUsageRequested; }
+ BRect Bounds() const { return fBounds; }
+ const char* Title() const { return fTitle; }
+ const char* WorkingDir() const { return fWorkingDirectory; }
+ bool StandardShell() const { return fStandardShell; }
+ bool FullScreen() const { return fFullScreen; }
+ bool UsageRequested() const { return fUsageRequested; }
void GetShellArguments(int& argc, const char* const*& argv) const;
private:
@@ -32,6 +40,7 @@ private:
int fShellArgumentCount;
const char** fShellArguments;
const char* fTitle;
+ const char* fWorkingDirectory;
};
diff --git a/src/apps/terminal/TermApp.cpp b/src/apps/terminal/TermApp.cpp
index bb016af6e9..3c63582a07 100644
--- a/src/apps/terminal/TermApp.cpp
+++ b/src/apps/terminal/TermApp.cpp
@@ -1,13 +1,14 @@
/*
- * Copyright 2001-2013, Haiku, Inc. All rights reserved.
+ * Copyright 2001-2019, Haiku.
* Copyright (c) 2003-2004 Kian Duffy <myob@xxxxxxxxxxxxxxxxxxxxx>
- * Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
+ * Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
*
* Distributed unter the terms of the MIT license.
*
* Authors:
- * Kian Duffy, myob@xxxxxxxxxxxxxxxxxxxxx
- * Siarzhuk Zharski, zharik@xxxxxx
+ * Jeremiah Bailey, <jjbailey@xxxxxxxxx>
+ * Kian Duffy, <myob@xxxxxxxxxxxxxxxxxxxxx>
+ * Siarzhuk Zharski, <zharik@xxxxxx>
*/
@@ -204,6 +205,11 @@ TermApp::ArgvReceived(int32 argc, char **argv)
if (fArgs->Title() != NULL)
fWindowTitle = fArgs->Title();
+ if (fArgs->WorkingDir() != NULL) {
+ fWorkingDirectory = fArgs->WorkingDir();
+ chdir(fWorkingDirectory);
+ }
+
fStartFullscreen = fArgs->FullScreen();
}
@@ -299,7 +305,7 @@ TermApp::_ChildCleanupThreadEntry(void* data)
return ((TermApp*)data)->_ChildCleanupThread();
}
-
+
status_t
TermApp::_ChildCleanupThread()
{
@@ -307,7 +313,7 @@ TermApp::_ChildCleanupThread()
sigemptyset(&waitForSignals);
sigaddset(&waitForSignals, SIGCHLD);
sigaddset(&waitForSignals, SIGUSR1);
-
+
for (;;) {
int signal;
int error = sigwait(&waitForSignals, &signal);
@@ -327,18 +333,19 @@ void
TermApp::_Usage(char *name)
{
fprintf(stderr, B_TRANSLATE("Haiku Terminal\n"
- "Copyright 2001-2009 Haiku, Inc.\n"
+ "Copyright 2001-2019 Haiku, Inc.\n"
"Copyright(C) 1999 Kazuho Okui and Takashi Murai.\n"
"\n"
"Usage: %s [OPTION] [SHELL]\n"), name);
- fprintf(stderr,
- B_TRANSLATE(" -h, --help print this help\n"
- //" -p, --preference load preference file\n"
- " -t, --title set window title\n"
- " -f, --fullscreen start fullscreen\n")
- //" -geom, --geometry set window geometry\n"
- //" An example of geometry is
\"80x25+100+100\"\n"
+ fprintf(stderr, B_TRANSLATE(
+ " -h, --help print this help\n"
+ //" -p, --preference load preference
file\n"
+ " -t, --title set window title\n"
+ " -f, --fullscreen start fullscreen\n"
+ " -w, --working-directory set initial working
directory\n")
+ //" -geom, --geometry set window geometry\n"
+ //" An example of
geometry is \"80x25+100+100\"\n"
);
}
diff --git a/src/apps/terminal/TermApp.h b/src/apps/terminal/TermApp.h
index 1a68c3acf0..460f4c488d 100644
--- a/src/apps/terminal/TermApp.h
+++ b/src/apps/terminal/TermApp.h
@@ -1,14 +1,17 @@
/*
- * Copyright 2001-2013, Haiku.
- * Copyright (c) 2003-4 Kian Duffy <myob@xxxxxxxxxxxxxxxxxxxxx>
+ * Copyright 2001-2018, Haiku.
+ * Copyright (c) 2003-2004 Kian Duffy <myob@xxxxxxxxxxxxxxxxxxxxx>
* Parts Copyright (C) 1998,99 Kazuho Okui and Takashi Murai.
*
* Distributed under the terms of the MIT License.
*
* Authors:
- * Kian Duffy, myob@xxxxxxxxxxxxxxxxxxxxx
- * Siarzhuk Zharski, zharik@xxxxxx
+ * Jeremiah Bailey, <jjbailey@xxxxxxxxx>
+ * Kian Duffy, <myob@xxxxxxxxxxxxxxxxxxxxx>
+ * Siarzhuk Zharski, <zharik@xxxxxx>
*/
+
+
#ifndef TERM_APP_H
#define TERM_APP_H
@@ -54,6 +57,7 @@ private:
bool fTerminating;
bool fStartFullscreen;
BString fWindowTitle;
+ BString fWorkingDirectory;
BWindow* fTermWindow;
Arguments* fArgs;