diff -r 8b2b36463804 -r 59e4b708273f AbstractOperatingSystem.st --- a/AbstractOperatingSystem.st Fri Sep 02 10:18:11 2016 +0200 +++ b/AbstractOperatingSystem.st Fri Sep 02 12:32:18 2016 +0200 @@ -1788,6 +1788,75 @@ "Modified: / 10.11.1998 / 20:51:39 / cg" ! +executeCommand:aCommandString inputFrom:anInStream outputTo:anOutStream errorTo:anErrStream environment:env showWindow:showWindow onError:aBlock + "execute the unix command specified by the argument, aCommandString. + If aCommandString is a String, the commandString is passed to a shell for execution + - see the description of 'sh -c' in your UNIX manual ('cmd.com' in your MSDOS manual). + If aCommandString is an Array, the first element is the command to be executed, + and the other elements are the arguments to the command. No shell is invoked in this case. + Return true if successful, the value from aBlock if not. + If not successfull, aBlock is called with an OsProcessStatus + (containing the exit status) as argument." + + ^ self + executeCommand:aCommandString + inputFrom:anInStream + outputTo:anOutStream + errorTo:anErrStream + auxFrom:nil + environment:env + inDirectory:nil + lineWise:false + showWindow:showWindow + onError:aBlock + + " + OperatingSystem + executeCommand:'dir' + inputFrom:nil + outputTo:nil + errorTo:nil + onError:[:status | Transcript flash] + + OperatingSystem + executeCommand:'foo' + inputFrom:nil + outputTo:nil + errorTo:nil + onError:[:status | Transcript flash] + " + " + |outStr errStr| + + outStr := '' writeStream. + errStr := '' writeStream. + OperatingSystem + executeCommand:'ls' + inputFrom:nil + outputTo:outStr + errorTo:errStr + onError:[:status | Transcript flash]. + Transcript show:'out:'; showCR:outStr contents. + Transcript show:'err:'; showCR:errStr contents. + " + " + |outStr errStr| + + outStr := '' writeStream. + errStr := '' writeStream. + OperatingSystem + executeCommand:'ls /fooBar' + inputFrom:nil + outputTo:outStr + errorTo:errStr + onError:[:status | Transcript flash]. + Transcript show:'out:'; showCR:outStr contents. + Transcript show:'err:'; showCR:errStr contents. + " + + "Modified: / 10.11.1998 / 20:51:39 / cg" +! + executeCommand:aCommandString inputFrom:inputStreamOrNil outputTo:outStreamOrNil errorTo:errStreamOrNil inDirectory:aDirectory "much like #executeCommand:, but changes the current directory for the command. Since this is OS specific, use this instead of @@ -1983,6 +2052,75 @@ "Modified: / 10.11.1998 / 20:51:39 / cg" ! +executeCommand:aCommandString inputFrom:anInStream outputTo:anOutStream errorTo:anErrStream showWindow:showWindow onError:aBlock + "execute the unix command specified by the argument, aCommandString. + If aCommandString is a String, the commandString is passed to a shell for execution + - see the description of 'sh -c' in your UNIX manual ('cmd.com' in your MSDOS manual). + If aCommandString is an Array, the first element is the command to be executed, + and the other elements are the arguments to the command. No shell is invoked in this case. + Return true if successful, the value from aBlock if not. + If not successfull, aBlock is called with an OsProcessStatus + (containing the exit status) as argument." + + ^ self + executeCommand:aCommandString + inputFrom:anInStream + outputTo:anOutStream + errorTo:anErrStream + auxFrom:nil + environment:nil + inDirectory:nil + lineWise:false + showWindow:showWindow + onError:aBlock + + " + OperatingSystem + executeCommand:'dir' + inputFrom:nil + outputTo:nil + errorTo:nil + onError:[:status | Transcript flash] + + OperatingSystem + executeCommand:'foo' + inputFrom:nil + outputTo:nil + errorTo:nil + onError:[:status | Transcript flash] + " + " + |outStr errStr| + + outStr := '' writeStream. + errStr := '' writeStream. + OperatingSystem + executeCommand:'ls' + inputFrom:nil + outputTo:outStr + errorTo:errStr + onError:[:status | Transcript flash]. + Transcript show:'out:'; showCR:outStr contents. + Transcript show:'err:'; showCR:errStr contents. + " + " + |outStr errStr| + + outStr := '' writeStream. + errStr := '' writeStream. + OperatingSystem + executeCommand:'ls /fooBar' + inputFrom:nil + outputTo:outStr + errorTo:errStr + onError:[:status | Transcript flash]. + Transcript show:'out:'; showCR:outStr contents. + Transcript show:'err:'; showCR:errStr contents. + " + + "Modified: / 10.11.1998 / 20:51:39 / cg" +! + executeCommand:aCommandString onError:aBlock "execute the unix command specified by the argument, aCommandString. If aCommandString is a String, the commandString is passed to a shell for execution