diff options
Diffstat (limited to 'basic/source/runtime/methods.cxx')
-rw-r--r-- | basic/source/runtime/methods.cxx | 71 |
1 files changed, 36 insertions, 35 deletions
diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx index 8ecf22555e..d314e0f2f3 100644 --- a/basic/source/runtime/methods.cxx +++ b/basic/source/runtime/methods.cxx @@ -104,7 +104,9 @@ using namespace com::sun::star::script; #include <stdlib.h> #include <ctype.h> +SbxVariable* getDefaultProp( SbxVariable* pRef ); #if defined (WNT) || defined (OS2) + #include <direct.h> // _getdcwd get current work directory, _chdrive #endif @@ -117,8 +119,8 @@ using namespace com::sun::star::script; #include <io.h> #endif -#include <basic/sbobjmod.hxx> +#include <basic/sbobjmod.hxx> static void FilterWhiteSpace( String& rStr ) { rStr.EraseAllChars( ' ' ); @@ -213,7 +215,7 @@ static com::sun::star::uno::Reference< XSimpleFileAccess3 > getFileAccess( void if( xSMgr.is() ) { xSFI = com::sun::star::uno::Reference< XSimpleFileAccess3 >( xSMgr->createInstance - ( ::rtl::OUString::createFromAscii( "com.sun.star.ucb.SimpleFileAccess" ) ), UNO_QUERY ); + ( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ucb.SimpleFileAccess" )) ), UNO_QUERY ); } } return xSFI; @@ -3448,8 +3450,8 @@ RTLFUNC(Shell) } else { - USHORT nOptions = vos::OProcess::TOption_SearchPath| - vos::OProcess::TOption_Detached; + oslProcessOption nOptions = osl_Process_SEARCHPATH | osl_Process_DETACHED; + String aCmdLine = rPar.Get(1)->GetString(); // Zusaetzliche Parameter anhaengen, es muss eh alles geparsed werden if( nArgCount >= 4 ) @@ -3526,26 +3528,23 @@ RTLFUNC(Shell) nWinStyle = rPar.Get(2)->GetInteger(); switch( nWinStyle ) { - case 2: - nOptions |= vos::OProcess::TOption_Minimized; - break; - case 3: - nOptions |= vos::OProcess::TOption_Maximized; - break; - case 10: - nOptions |= vos::OProcess::TOption_FullScreen; - break; + case 2: + nOptions |= osl_Process_MINIMIZED; + break; + case 3: + nOptions |= osl_Process_MAXIMIZED; + break; + case 10: + nOptions |= osl_Process_FULLSCREEN; + break; } BOOL bSync = FALSE; if( nArgCount >= 5 ) bSync = rPar.Get(4)->GetBool(); if( bSync ) - nOptions |= vos::OProcess::TOption_Wait; + nOptions |= osl_Process_WAIT; } - vos::OProcess::TProcessOption eOptions = - (vos::OProcess::TProcessOption)nOptions; - // #72471 Parameter aufbereiten std::list<String>::const_iterator iter = aTokenList.begin(); @@ -3570,33 +3569,35 @@ RTLFUNC(Shell) } } - //const char* pParams = aParams.Len() ? aParams.GetStr() : 0; - vos::OProcess* pApp; - pApp = new vos::OProcess( aOUStrProgUNC ); - BOOL bSucc; - if( nParamCount == 0 ) + oslProcess pApp; + BOOL bSucc = osl_executeProcess( + aOUStrProgUNC.pData, + pParamList, + nParamCount, + nOptions, + NULL, + NULL, + NULL, 0, + &pApp ) == osl_Process_E_None; + + osl_freeProcessHandle( pApp ); + + for(int j = 0; i < nParamCount; i++) { - bSucc = pApp->execute( eOptions ) == vos::OProcess::E_None; + rtl_uString_release(pParamList[j]); + pParamList[j] = NULL; } long nResult = 0; // We should return the identifier of the executing process when is running VBA, because method Shell(...) returns it in Excel. if ( bSucc && SbiRuntime::isVBAEnabled()) { - vos::OArgumentList aArgList( pArgumentList, nParamCount ); - bSucc = pApp->execute( eOptions, aArgList ) == vos::OProcess::E_None; + oslProcessInfo aInfo; + aInfo.Size = sizeof(oslProcessInfo); + osl_getProcessInfo( pApp, osl_Process_IDENTIFIER, &aInfo ); + nResult = aInfo.Ident; } - /* - if( nParamCount == 0 ) - pApp = new vos::OProcess( pProg ); - else - pApp = new vos::OProcess( pProg, pParamList, nParamCount ); - BOOL bSucc = pApp->execute( eOptions ) == vos::OProcess::E_None; - */ - - delete pApp; - delete[] pArgumentList; if( !bSucc ) StarBASIC::Error( SbERR_FILE_NOT_FOUND ); else |