diff options
author | Luboš Luňák <l.lunak@suse.cz> | 2012-04-02 18:59:53 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@suse.cz> | 2012-04-02 19:06:47 +0200 |
commit | a7eb227cfcd783ffdccdcec9b56451fb54c26eb6 (patch) | |
tree | aa8ad3a119c2c28e6a3b38973e246ae9f2f8fd3d | |
parent | 174a1d3c3da7457884a2f79016e8a9375fd5297e (diff) |
fix crude command line arguments handling
-rw-r--r-- | sal/qa/osl/security/osl_Security.cxx | 80 |
1 files changed, 45 insertions, 35 deletions
diff --git a/sal/qa/osl/security/osl_Security.cxx b/sal/qa/osl/security/osl_Security.cxx index 223c5f95c93b..92b9fe465ebe 100644 --- a/sal/qa/osl/security/osl_Security.cxx +++ b/sal/qa/osl/security/osl_Security.cxx @@ -38,6 +38,7 @@ #endif #include <osl_Security_Const.h> #include <osl/thread.h> +#include <rtl/process.h> #include <rtl/strbuf.hxx> using namespace osl; @@ -353,7 +354,7 @@ class MyTestPlugInImpl: public CPPUNIT_NS::TestPlugInDefaultImpl void MyTestPlugInImpl::initialize( CPPUNIT_NS::TestFactoryRegistry *, - const CPPUNIT_NS::PlugInParameters & parameters) + const CPPUNIT_NS::PlugInParameters & ) { /// start message t_print("#Initializing ...\n" ); @@ -633,44 +634,53 @@ void MyTestPlugInImpl::initialize( CPPUNIT_NS::TestFactoryRegistry *, t_print("Administrator.\n" ); /// get and display forwarded text if available. - aStringForward = ::rtl::OUString::createFromAscii( parameters.getCommandLine().c_str() ); - if ( !aStringForward.isEmpty() && aStringForward.indexOf( (sal_Unicode)' ' ) != -1 ) + rtl::OUString args[ 3 ]; + int argsCount = 0; + sal_uInt32 n = rtl_getAppCommandArgCount(); + // skip first, that's the module name + for (sal_uInt32 i = 1; i < n; ++i) { - sal_Int32 nFirstSpacePoint = aStringForward.indexOf( (sal_Unicode)' ' );; - sal_Int32 nLastSpacePoint = aStringForward.lastIndexOf( (sal_Unicode)' ' );; - if ( nFirstSpacePoint == nLastSpacePoint ) - /// only forwarded two parameters, username and password. + rtl::OUString arg; + rtl_getAppCommandArg(i, &arg.pData); + if( !arg.isEmpty() && arg[ 0 ] == '-' ) + continue; + if( argsCount >= 3 ) { - aLogonUser = aStringForward.copy( 0, nFirstSpacePoint ); - t_print("\n#Forwarded username: "); - printUString( aLogonUser); - - aLogonPasswd = aStringForward.copy( nFirstSpacePoint +1, aStringForward.getLength( ) - 1 ); - t_print("#Forwarded password: "); - for (int i = nFirstSpacePoint+1; i <= aStringForward.getLength()-1; ++i) - t_print("*"); - t_print("\n" ); - } - else - /// forwarded three parameters, username, password and fileserver. - { - aLogonUser = aStringForward.copy( 0, nFirstSpacePoint ); - t_print("#Forwarded username: "); - printUString( aLogonUser); - - aLogonPasswd = aStringForward.copy( nFirstSpacePoint +1, nLastSpacePoint ); - t_print("#Forwarded password: "); - for (int i = nFirstSpacePoint+1; i <= nLastSpacePoint; ++i) - t_print("*"); - t_print("\n" ); - - aFileServer = aStringForward.copy( nLastSpacePoint +1, aStringForward.getLength( ) - 1 ); - t_print("#Forwarded FileServer: "); - printUString( aFileServer ); - + SAL_WARN( "sal", "Too many test arguments" ); + continue; } + args[ argsCount++ ] = arg; + } + /// only forwarded two parameters, username and password. + if( argsCount == 2 ) + { + aLogonUser = args[ 0 ]; + t_print("\n#Forwarded username: "); + printUString( aLogonUser); + + aLogonPasswd = args[ 1 ]; + t_print("#Forwarded password: "); + for (int i = 0; i < aLogonPasswd.getLength(); ++i) + t_print("*"); + t_print("\n" ); + } + else if( argsCount == 3 ) + /// forwarded three parameters, username, password and fileserver. + { + aLogonUser = args[ 0 ]; + t_print("#Forwarded username: "); + printUString( aLogonUser); + + aLogonPasswd = args[ 1 ]; + t_print("#Forwarded password: "); + for (int i = 0; i < aLogonPasswd.getLength(); ++i) + t_print("*"); + t_print("\n" ); + + aFileServer = args[ 2 ]; + t_print("#Forwarded FileServer: "); + printUString( aFileServer ); } - t_print("#\n#Initialization Done.\n" ); } |