summaryrefslogtreecommitdiff
path: root/basic/source/runtime/methods.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'basic/source/runtime/methods.cxx')
-rw-r--r--basic/source/runtime/methods.cxx71
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