jss/jss-pki-sync-netscape-security-util-Utils.patch
Alexander Scheel 034c971959
Add nuxwdog patch from PKI
Signed-off-by: Alexander Scheel <ascheel@redhat.com>
2019-02-01 11:21:06 -05:00

95 lines
3.0 KiB
Diff

From a5b0caf63837acfd876ee15e3823fbfdf5685432 Mon Sep 17 00:00:00 2001
From: Dinesh Prasanth M K <dmoluguw@redhat.com>
Date: Wed, 30 Jan 2019 12:31:29 -0500
Subject: [PATCH] Add exec method to execute shell commands with input
- This is an effort to move duplicate code from PKI code
base to JSS code base
- This chunk of code was originally introduced in PKI
code: https://github.com/dogtagpki/pki/pull/131
- This PR is a joined effort of:
https://github.com/dogtagpki/pki/pull/122
Signed-off-by: Dinesh Prasanth M K <dmoluguw@redhat.com>
---
.../jss/netscape/security/util/Utils.java | 57 +++++++++++++++++++
1 file changed, 57 insertions(+)
diff --git a/org/mozilla/jss/netscape/security/util/Utils.java b/org/mozilla/jss/netscape/security/util/Utils.java
index b1a3c341..b45381ae 100644
--- a/org/mozilla/jss/netscape/security/util/Utils.java
+++ b/org/mozilla/jss/netscape/security/util/Utils.java
@@ -25,6 +25,7 @@
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
@@ -96,6 +97,62 @@ public static boolean exec(String cmd) {
return false;
}
+ public static String readFromStream(InputStream inputStream) throws IOException {
+ StringBuilder sb = new StringBuilder();
+ BufferedReader br = null;
+ try {
+ br = new BufferedReader(new InputStreamReader(inputStream));
+ String line = null;
+ while ((line = br.readLine()) != null) {
+ sb.append(line + System.getProperty("line.separator"));
+ }
+ } finally {
+ br.close();
+ }
+ return sb.toString().trim();
+ }
+
+ public static void writeToStream(OutputStream outputStream, String input) throws IOException {
+ BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream));
+ writer.write(input);
+ writer.flush();
+ writer.close();
+ }
+
+ /**
+ * Utility method to execute system commands
+ *
+ * @param cmd The command to be executed and its arguments
+ * @param input The stdin input to be passed to the cmd
+ * @return stdout or stderr of the command executed
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ public static String exec(String[] cmd, String input) throws IOException, InterruptedException {
+
+ ProcessBuilder pb = new ProcessBuilder(cmd);
+
+ Process p = pb.start();
+
+ if (input != null) {
+ writeToStream(p.getOutputStream(), input);
+ }
+
+ p.waitFor();
+
+ String output;
+ if (p.exitValue() == 0) {
+ output = readFromStream(p.getInputStream());
+ } else {
+ output = readFromStream(p.getErrorStream());
+ }
+ p.destroy();
+
+ return output;
+ }
+
+
+
public static String SpecialURLDecode(String s) {
if (s == null)
return null;