From 715ce450667ea081ede184cd524db34b9744d5ca Mon Sep 17 00:00:00 2001 From: gabriel Date: Sat, 3 Feb 2024 15:56:36 -0400 Subject: [PATCH] Peach things --- .../com/panda3ds/pandroid/AlberDriver.java | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/AlberDriver.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/AlberDriver.java index d99623d1..b2af2173 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/AlberDriver.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/AlberDriver.java @@ -34,16 +34,38 @@ public class AlberDriver { public static int openDocument(String path, String mode){ try { - mode = mode.substring(0,1); + mode = mode.toLowerCase(); + switch (mode) { + case "rb": + case "rb+": + case "r+b": + mode = "r"; + break; + case "wb": + case "wb+": + case "w+b": + mode = "w"; + break; + case "rwt": + case "wt": + case "rw": + case "r": + case "w": + case "wa": + break; + default: + throw new IllegalArgumentException("Invalid mode: "+mode); + } Context context = PandroidApplication.getAppContext(); Uri uri = FileUtils.obtainUri(path); ParcelFileDescriptor parcel; if (Objects.equals(uri.getScheme(), "game")) { + if (mode.contains("w")){ + throw new IllegalArgumentException("Cannot write to rom-fs"); + } uri = FileUtils.obtainUri(GameUtils.getCurrentGame().getRomPath()); - parcel = context.getContentResolver().openFileDescriptor(uri, "r"); - } else { - parcel = context.getContentResolver().openFileDescriptor(uri, mode); } + parcel = context.getContentResolver().openFileDescriptor(uri, mode); int fd = parcel.detachFd(); parcel.close();