Platforms to show: All Mac Windows Linux Cross-Platform
/MacCF/Authorization/Authorization with Stream
Required plugins for this example: MBS MacCF Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /MacCF/Authorization/Authorization with Stream
This example is the version from Fri, 17th Jun 2021.
Project "Authorization with Stream.xojo_binary_project"
FileTypes
Filetype text
End FileTypes
Class Window1 Inherits Window
Control PushButton1 Inherits PushButton
ControlInstance PushButton1 Inherits PushButton
EventHandler Sub Action()
Run
End EventHandler
End Control
Control StaticText1 Inherits Label
ControlInstance StaticText1 Inherits Label
End Control
Control EditField1 Inherits TextField
ControlInstance EditField1 Inherits TextField
End Control
Control StaticText2 Inherits Label
ControlInstance StaticText2 Inherits Label
End Control
Control StaticText3 Inherits Label
ControlInstance StaticText3 Inherits Label
End Control
Control EditField2 Inherits TextArea
ControlInstance EditField2 Inherits TextArea
EventHandler Sub Open()
me.text="#! /bin/sh"+endofline+ _
""+endofline+ _
"echo Hello World!"+endofline+ _
""+endofline+ _
"echo passed from Realbasic: $@"+endofline+ _
""+endofline+ _
"#"+endofline+ _
"# print the user name:"+endofline+ _
"#"+endofline+ _
"whoami"+endofline+ _
"#"+endofline+ _
"# should be root"+endofline+ _
"#"+endofline
End EventHandler
End Control
Control EditField3 Inherits TextArea
ControlInstance EditField3 Inherits TextArea
End Control
Sub run()
dim s(0) as String
dim p,t as String
dim f,dir as FolderItem
dim a as AuthorizationMBS
dim e as integer
dim b as BinaryStream
dim sh as Shell
s(0)=ConvertEncoding(EditField1.text,Encodings.UTF8)
// write shell script file:
dir = SpecialFolder.Desktop
if dir=nil then
MsgBox "Missing desktop Support folder in user directory."
else
f=dir.Child("TestScript")
b=f.CreateBinaryFile("text")
if b=nil then
MsgBox "Failed to create script file."
else
t=ConvertEncoding(EditField2.text,Encodings.UTF8)
t=ReplaceAll(t,EndOfLine.Macintosh,EndOfLine.UNIX) // line encodings are very important to avoid error -60031
b.Write t
MsgBox t
b.Close
b=nil
p=f.NativePath // UnixPathMBS
if p="" then
MsgBox "Can't find the path to my script."
else
sh=new Shell
sh.Execute "chmod 777 "+f.ShellPath
if sh.ErrorCode<>0 then
MsgBox "Failed to set permissions. "+str(sh.ErrorCode)
else
a=new AuthorizationMBS
if a.SimpleNewAuthorization then // create
a.Execute(p,s,true) // and run it
if a.LastError<>0 then
MsgBox "Lasterror on Execute: "+str(a.LastError)
else
e=a.Wait // wait for process to terminate. Returns PID
if a.LastError<>0 then
MsgBox "Lasterror on Wait: "+str(a.LastError)
end if
end if
EditField3.text=a.ReadStream(1024)
end if
end if
end if
end if
'f.Delete
end if
End Sub
End Class
MenuBar Menu
MenuItem UntitledMenu3 = ""
MenuItem UntitledMenu2 = "File"
MenuItem FileQuit = "Quit"
MenuItem UntitledMenu7 = ""
MenuItem UntitledMenu0 = "Edit"
MenuItem EditUndo = "Undo"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "Cut"
MenuItem EditCopy = "Copy"
MenuItem EditPaste = "Paste"
MenuItem EditClear = "Clear"
MenuItem UntitledMenu6 = ""
MenuItem UntitledMenu5 = ""
MenuItem UntitledMenu4 = ""
End MenuBar
Class App Inherits Application
End Class
End Project
See also:
The items on this page are in the following plugins: MBS MacCF Plugin.