Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 98329459 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Better handling of storage paths.

Give more details about why we failed to create storage paths, and
search for underlying volumes using canonical paths.

Bug: 22135060
Change-Id: I75d3584403ece310438b05f5b9fe72d94c9096c6
parent 8b6d5b6b
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -1925,13 +1925,14 @@ class ContextImpl extends Context {
                        // enough permissions; ask vold to create on our behalf.
                        final IMountService mount = IMountService.Stub.asInterface(
                                ServiceManager.getService("mount"));
                        int res = -1;
                        try {
                            res = mount.mkdirs(getPackageName(), dir.getAbsolutePath());
                        } catch (Exception ignored) {
                        }
                            final int res = mount.mkdirs(getPackageName(), dir.getAbsolutePath());
                            if (res != 0) {
                            Log.w(TAG, "Failed to ensure directory: " + dir);
                                Log.w(TAG, "Failed to ensure " + dir + ": " + res);
                                dir = null;
                            }
                        } catch (Exception e) {
                            Log.w(TAG, "Failed to ensure " + dir + ": " + e);
                            dir = null;
                        }
                    }
+8 −6
Original line number Diff line number Diff line
@@ -817,17 +817,19 @@ public class StorageManager {

    /** {@hide} */
    private static @Nullable StorageVolume getStorageVolume(StorageVolume[] volumes, File file) {
        File canonicalFile = null;
        try {
            canonicalFile = file.getCanonicalFile();
            file = file.getCanonicalFile();
        } catch (IOException ignored) {
            canonicalFile = null;
            return null;
        }
        for (StorageVolume volume : volumes) {
            if (volume.getPathFile().equals(file)) {
                return volume;
            File volumeFile = volume.getPathFile();
            try {
                volumeFile = volumeFile.getCanonicalFile();
            } catch (IOException ignored) {
                continue;
            }
            if (FileUtils.contains(volume.getPathFile(), canonicalFile)) {
            if (FileUtils.contains(volumeFile, file)) {
                return volume;
            }
        }