aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/fil/libre/repwifiapp/helpers/RootCommand.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/fil/libre/repwifiapp/helpers/RootCommand.java')
-rw-r--r--app/src/fil/libre/repwifiapp/helpers/RootCommand.java150
1 files changed, 67 insertions, 83 deletions
diff --git a/app/src/fil/libre/repwifiapp/helpers/RootCommand.java b/app/src/fil/libre/repwifiapp/helpers/RootCommand.java
index bcb6d0f..9d9f7d3 100644
--- a/app/src/fil/libre/repwifiapp/helpers/RootCommand.java
+++ b/app/src/fil/libre/repwifiapp/helpers/RootCommand.java
@@ -19,91 +19,75 @@
// ********************************************************************
package fil.libre.repwifiapp.helpers;
-import java.io.BufferedReader;
+
import java.io.DataOutputStream;
import java.io.InputStream;
-import java.io.InputStreamReader;
-
import fil.libre.repwifiapp.Commons;
-public class RootCommand {
-
- private String _cmdOut = "";
- private String _cmdTxt = "";
-
- public RootCommand(String commandText){
- this._cmdTxt = commandText;
- }
-
- public int execute() throws Exception{
- return execute(0);
- }
-
- public int execute(int sleepSecsAfterCmd) throws Exception{
-
- Process su = Runtime.getRuntime().exec("su");
-
- DataOutputStream stdin = new DataOutputStream(su.getOutputStream());
- InputStream os = su.getInputStream();
- BufferedReader stdOut = new BufferedReader(new InputStreamReader(os));
- InputStream es = su.getErrorStream();
- BufferedReader stdError = new BufferedReader(new InputStreamReader(es));
-
- if ( this._cmdTxt != null ){
-
- Utils.logDebug("SU:EXEC: " + this._cmdTxt);
-
- this._cmdTxt += " > " + Commons.getTempOutFile();
-
- stdin.writeBytes(this._cmdTxt + "\n");
- stdin.flush();
- }
-
- /* if (sleepSecsAfterCmd > 0){
- Thread.sleep(sleepSecsAfterCmd * 1000);
- }*/
-
- StringBuilder sb = new StringBuilder();
- String s = null;
-
- while ( (es.available() > 0) && (s = stdError.readLine()) != null) {
- sb.append(s + "\n");
- }
-
- while ( (os.available() > 0) && (s = stdOut.readLine()) != null) {
- sb.append(s + "\n");
- }
-
- this._cmdOut = sb.toString();
-
- stdin.writeBytes("exit\n");
- stdin.flush();
-
- int res = su.waitFor();
-
- Utils.logDebug("OUT: " + getOutput());
-
- return res;
-
- }
-
- public String getOutput(){
-
- String[] lastOut = Utils.readFileLines(Commons.getTempOutFile());
- if (lastOut == null){
- return this._cmdOut;
- }
-
- String fout = "";
-
- for (String s : lastOut){
- fout += s + "\n";
- }
-
- return fout;
-
- }
-
-
-
+public class RootCommand extends ShellCommand {
+
+ public RootCommand(String commandText) {
+ super(commandText);
+ this._cmdTxt = commandText;
+ }
+
+ @Override
+ public int execute() throws Exception {
+
+ Process su = Runtime.getRuntime().exec("su");
+
+ DataOutputStream stdin = new DataOutputStream(su.getOutputStream());
+ InputStream os = su.getInputStream();
+ InputStream es = su.getErrorStream();
+
+ if (this._cmdTxt != null) {
+
+ Utils.logDebug("SU:EXEC: " + this._cmdTxt);
+
+ this._cmdTxt += " > " + Commons.getTempOutFile();
+
+ stdin.writeBytes(this._cmdTxt + "\n");
+ stdin.flush();
+ }
+
+ StringBuilder sb = new StringBuilder();
+
+ sb.append(getStringFromStream(es));
+ sb.append(getStringFromStream(os));
+
+ this._cmdOut = sb.toString();
+
+ stdin.writeBytes("exit\n");
+ stdin.flush();
+
+ int res = su.waitFor();
+
+ // re-read the output, in case it was empty when first tried
+ sb.append(getStringFromStream(es));
+ sb.append(getStringFromStream(os));
+
+ Utils.logDebug("OUT: " + getOutput());
+
+ return res;
+
+ }
+
+ @Override
+ public String getOutput() {
+
+ String[] lastOut = Utils.readFileLines(Commons.getTempOutFile());
+ if (lastOut == null) {
+ return this._cmdOut;
+ }
+
+ String fout = "";
+
+ for (String s : lastOut) {
+ fout += s + "\n";
+ }
+
+ return fout;
+
+ }
+
}