aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org/pacien/tincapp/commands/Executor.kt
diff options
context:
space:
mode:
authorPacien TRAN-GIRARD2017-06-30 10:21:51 +0200
committerPacien TRAN-GIRARD2017-06-30 10:21:51 +0200
commitc89016e7427defd1f8a095d7aeb30292a42fad92 (patch)
treeaec80e6f501824f966ea727d2f6e102a75e9655f /app/src/main/java/org/pacien/tincapp/commands/Executor.kt
parent94d77ce43152a4e144417d8d5cfff363f65c904e (diff)
downloadtincapp-c89016e7427defd1f8a095d7aeb30292a42fad92.tar.gz
Conversion to Kotlin
Diffstat (limited to 'app/src/main/java/org/pacien/tincapp/commands/Executor.kt')
-rw-r--r--app/src/main/java/org/pacien/tincapp/commands/Executor.kt43
1 files changed, 43 insertions, 0 deletions
diff --git a/app/src/main/java/org/pacien/tincapp/commands/Executor.kt b/app/src/main/java/org/pacien/tincapp/commands/Executor.kt
new file mode 100644
index 0000000..160f0cd
--- /dev/null
+++ b/app/src/main/java/org/pacien/tincapp/commands/Executor.kt
@@ -0,0 +1,43 @@
1package org.pacien.tincapp.commands
2
3import java.io.BufferedReader
4import java.io.IOException
5import java.io.InputStreamReader
6import java.util.*
7
8/**
9 * @author pacien
10 */
11internal object Executor {
12
13 init {
14 System.loadLibrary("exec")
15 }
16
17 /**
18 * @return -1 on error, forked child PID otherwise
19 */
20 private external fun forkExec(argcv: Array<String>): Int
21
22 @Throws(IOException::class)
23 fun forkExec(cmd: Command) {
24 if (forkExec(cmd.asArray()) == -1)
25 throw IOException()
26 }
27
28 @Throws(IOException::class)
29 fun call(cmd: Command): List<String> {
30 val proc = ProcessBuilder(cmd.asList()).start()
31 val outputReader = BufferedReader(InputStreamReader(proc.inputStream))
32
33 var line: String? = outputReader.readLine()
34 val list = LinkedList<String>()
35 while (line != null) {
36 line = outputReader.readLine()
37 list.add(line)
38 }
39
40 return list
41 }
42
43}