[haiku-commits] r34902 - haiku/trunk/src/apps/terminal

  • From: stefano.ceccherini@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 4 Jan 2010 23:59:18 +0100 (CET)

Author: jackburton
Date: 2010-01-04 23:59:18 +0100 (Mon, 04 Jan 2010)
New Revision: 34902
Changeset: http://dev.haiku-os.org/changeset/34902/haiku

Modified:
   haiku/trunk/src/apps/terminal/Arguments.cpp
   haiku/trunk/src/apps/terminal/Arguments.h
   haiku/trunk/src/apps/terminal/TermApp.cpp
Log:
Removed the shell invocation from Arguments, moved it into TermApp.
Get the user shell with getpwuid(), since this should be the correct way
to do it (and mmu_man wants it like this).
Note that when opening a new terminal tab, this is ignored, and a fixed
invocation is used (in the Shell class)


Modified: haiku/trunk/src/apps/terminal/Arguments.cpp
===================================================================
--- haiku/trunk/src/apps/terminal/Arguments.cpp 2010-01-04 21:59:26 UTC (rev 
34901)
+++ haiku/trunk/src/apps/terminal/Arguments.cpp 2010-01-04 22:59:18 UTC (rev 
34902)
@@ -10,7 +10,7 @@
 #include "Arguments.h"
 
 
-Arguments::Arguments()
+Arguments::Arguments(int defaultArgsNum, const char * const *defaultArgs)
        : fUsageRequested(false),
          fBounds(50, 50, 630, 435),
          fStandardShell(true),
@@ -19,9 +19,7 @@
          fShellArguments(NULL),
          fTitle(NULL)
 {
-       const char *argv[] = { "/bin/bash", "--login" };
-
-       _SetShellArguments(2, argv);
+       _SetShellArguments(defaultArgsNum, defaultArgs);
 }
 
 

Modified: haiku/trunk/src/apps/terminal/Arguments.h
===================================================================
--- haiku/trunk/src/apps/terminal/Arguments.h   2010-01-04 21:59:26 UTC (rev 
34901)
+++ haiku/trunk/src/apps/terminal/Arguments.h   2010-01-04 22:59:18 UTC (rev 
34902)
@@ -10,7 +10,7 @@
 
 class Arguments {
 public:
-       Arguments();
+       Arguments(int defaultArgcNum, const char *const *defaultArgv);
        ~Arguments();
 
        void Parse(int argc, const char *const *argv);

Modified: haiku/trunk/src/apps/terminal/TermApp.cpp
===================================================================
--- haiku/trunk/src/apps/terminal/TermApp.cpp   2010-01-04 21:59:26 UTC (rev 
34901)
+++ haiku/trunk/src/apps/terminal/TermApp.cpp   2010-01-04 22:59:18 UTC (rev 
34902)
@@ -10,6 +10,7 @@
 #include "TermApp.h"
 
 #include <errno.h>
+#include <pwd.h>
 #include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -35,7 +36,7 @@
 static bool sUsageRequested = false;
 //static bool sGeometryRequested = false;
 
-
+const char *kDefaultShell = "/bin/bash";
 const ulong MSG_ACTIVATE_TERM = 'msat';
 const ulong MSG_TERM_WINDOW_INFO = 'mtwi';
 
@@ -49,7 +50,7 @@
        return 0;
 }
 
-
+       
 TermApp::TermApp()
        : BApplication(TERM_SIGNATURE),
        fStartFullscreen(false),
@@ -57,8 +58,20 @@
        fTermWindow(NULL),
        fArgs(NULL)
 {
-       fArgs = new Arguments();
-
+       const char *defaultArgs[2];
+       defaultArgs[0] = kDefaultShell;
+       defaultArgs[1] = "--login";
+       
+       struct passwd passwdStruct;
+       struct passwd *passwdResult;
+       char stringBuffer[256];
+       if (!getpwuid_r(getuid(), &passwdStruct, stringBuffer,
+                       sizeof(stringBuffer), &passwdResult)) {
+               defaultArgs[0] = passwdStruct.pw_shell;
+       }
+       
+       fArgs = new Arguments(2, defaultArgs);
+       
        fWindowTitle = "Terminal";
        _RegisterTerminal();
 


Other related posts:

  • » [haiku-commits] r34902 - haiku/trunk/src/apps/terminal - stefano . ceccherini