[haiku-commits] haiku: hrev52785 - src/apps/terminal

  • From: waddlesplash <waddlesplash@xxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 22 Jan 2019 12:53:07 -0500 (EST)

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;


Other related posts:

  • » [haiku-commits] haiku: hrev52785 - src/apps/terminal - waddlesplash