40 lines
1.4 KiB
Plaintext
40 lines
1.4 KiB
Plaintext
include "NSLog.incl"
|
|
|
|
// For remote uses like curl
|
|
// #plist NSAppTransportSecurity @{NSAllowsArbitraryLoads:YES}
|
|
|
|
local fn RunTerminalCommand( cmd as CFStringRef ) as CFStringRef
|
|
————————————————————————————————————————————————————————————————————————————————————————————————————
|
|
ErrorRef err = NULL
|
|
CFStringRef outputStr = NULL
|
|
|
|
TaskRef task = fn TaskInit
|
|
TaskSetExecutableURL( task, fn URLFileURLWithPath( @"/bin/zsh" ) )
|
|
CFStringRef cmdStr = fn StringWithFormat( @"%@", cmd )
|
|
CFArrayRef args = fn ArrayWithObjects( @"-c", cmdStr, NULL )
|
|
TaskSetArguments( task, args )
|
|
|
|
PipeRef p = fn PipeInit
|
|
TaskSetStandardOutput( task, p )
|
|
TaskSetStandardError( task, p )
|
|
FileHandleRef fh = fn PipeFileHandleForReading( p )
|
|
|
|
fn TaskLaunch( task, NULL )
|
|
TaskWaitUntilExit( task )
|
|
|
|
CFDataRef dta = fn FileHandleReadDataToEndOfFile( fh, @err )
|
|
if err then NSLog( @"Error reading file: %@", fn ErrorLocalizedDescription( err ) ) : exit fn
|
|
|
|
fn FileHandleClose( fh, @err )
|
|
if err then NSLog( @"Error closing file: %@", fn ErrorLocalizedDescription( err ) ) : exit fn
|
|
|
|
outputStr = fn StringWithData( dta, NSUTF8StringEncoding )
|
|
end fn = outputStr
|
|
|
|
CFStringRef cmd
|
|
|
|
cmd = @"cal 2023"
|
|
NSLog( @"%@", fn RunTerminalCommand( cmd ) )
|
|
|
|
HandleEvents
|