From 227155d484766a620a2f9467a248c844fca26382 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Fri, 11 Apr 2014 20:25:50 +0200 Subject: add debug backup/restore options to main menu Closes #543 --- .../keychain/provider/KeychainDatabase.java | 45 +++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java index b3165d347..80fa914b2 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainDatabase.java @@ -36,6 +36,9 @@ import org.sufficientlysecure.keychain.provider.KeychainContract.UserIdsColumns; import org.sufficientlysecure.keychain.provider.KeychainContract.CertsColumns; import org.sufficientlysecure.keychain.util.Log; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; public class KeychainDatabase extends SQLiteOpenHelper { @@ -210,7 +213,7 @@ public class KeychainDatabase extends SQLiteOpenHelper { } } - if(!hasApgDb) + if(!hasApgDb || true) return; Log.d(Constants.TAG, "apg.db exists! Importing..."); @@ -300,4 +303,44 @@ public class KeychainDatabase extends SQLiteOpenHelper { Log.d(Constants.TAG, "All done, (not) deleting apg.db"); } + + private static void copy(File in, File out) throws IOException { + FileInputStream ss = new FileInputStream(in); + FileOutputStream ds = new FileOutputStream(out); + byte[] buf = new byte[512]; + while(ss.available() > 0) { + int count = ss.read(buf, 0, 512); + ds.write(buf, 0, count); + } + } + + public static void debugRead(Context context) throws IOException { + if(!Constants.DEBUG) { + return; + } + File in = context.getDatabasePath("debug.db"); + File out = context.getDatabasePath("openkeychain.db"); + if(!in.canRead()) { + throw new IOException("Cannot read " + in.getName()); + } + if(!out.canRead()) { + throw new IOException("Cannot write " + out.getName()); + } + copy(in, out); + } + + public static void debugWrite(Context context) throws IOException { + if(!Constants.DEBUG) { + return; + } + File in = context.getDatabasePath("openkeychain.db"); + File out = context.getDatabasePath("debug.db"); + if(!in.canRead()) { + throw new IOException("Cannot read " + in.getName()); + } + if(!out.canRead()) { + throw new IOException("Cannot write " + out.getName()); + } + copy(in, out); + } } -- cgit v1.2.3