//package org.emdev.common.archives.rar; // //import java.io.File; //import java.io.FileOutputStream; //import java.io.IOException; //import java.io.InputStream; //import java.util.Arrays; // //import org.emdev.BaseDroidApp; //import org.emdev.common.log.LogContext; //import org.emdev.common.log.LogManager; //import org.emdev.utils.FileUtils; // //public class UnrarBridge { // // private static final LogContext LCTX = LogManager.root().lctx("Unrar"); // private static File unrar; // // public static boolean init() { // unrar = new File(BaseDroidApp.context.getFilesDir(), "unrar"); // if (unrar != null && unrar.isFile()) { // if (LCTX.isDebugEnabled()) { // LCTX.d("Unrar executable found"); // } // return true; // } // // if (copy(unrar) && chmod(unrar)) { // return true; // } // // unrar = null; // return false; // } // // public static Process exec(final String... args) throws IOException { // if (init()) { // if (LCTX.isDebugEnabled()) { // LCTX.d("Unrar executing: " + Arrays.toString(args)); // } // return execImpl(args); // } // // throw new IOException("No unrar executable installed"); // } // // private static Process execImpl(final String... args) throws IOException { // final String[] cmd = new String[1 + args.length]; // cmd[0] = unrar.getAbsolutePath(); // // if (args.length > 0) { // System.arraycopy(args, 0, cmd, 1, args.length); // } // final ProcessBuilder pb = new ProcessBuilder(cmd); // pb.redirectErrorStream(false); // return pb.start(); // } // // private static boolean copy(final File unrar) { // try { // final InputStream source = BaseDroidApp.context.getResources().getAssets().open("unrar/unrar"); // final FileOutputStream target = new FileOutputStream(unrar); // FileUtils.copy(source, target); // return true; // } catch (final IOException ex) { // LCTX.e("Unrar executable cannot be copied from assets: " + ex.getMessage()); // return false; // } // } // // private static boolean chmod(final File unrar) { // final String[] cmd = { "chmod", "777", unrar.getAbsolutePath() }; // try { // final Process p = Runtime.getRuntime().exec(cmd); // final int res = p.waitFor(); // return 0 == res; // } catch (final IOException ex) { // LCTX.e("Unrar executable cannot be copied from assets: " + ex.getMessage()); // return false; // } catch (final InterruptedException ex) { // Thread.interrupted(); // return false; // } // } // //}