]> gitweb.factorcode.org Git - factor.git/blob - basis/elevate/elevate.factor
8640288cf5c08a37a9e1ec97d380368edca86e10
[factor.git] / basis / elevate / elevate.factor
1 USING: arrays command-line fry io.launcher kernel math namespaces
2 sequences system unix.ffi ;
3 IN: elevate
4
5 : apple-script-elevate ( x x -- ) 2drop ;
6
7 HOOK: elevate os ( win-console? posix-graphical? -- )
8
9 M: windows elevate 2drop ;
10
11 M: macosx elevate
12     [   ! graphical (through applescript)
13         t apple-script-elevate
14     ] [
15         f linux os [ elevate ] with-variable
16     ] if ;
17
18 M: linux elevate
19     getuid zero? [
20         2drop ! we are already root: do nothing
21     ] [
22         ! graphical on linuxes
23         nip [ { "gksudo" "kdesudo" } ] [ { } ] if
24         "sudo" suffix (command-line) '[ 1array _ append ] map
25         [
26             run-process drop
27         ] each
28     ] if ;
29
30 HOOK: lower os ( relaunch? -- )