Create media paths for existing users.
Bug: 6925012
Change-Id: I23bd9187217645cf538e074527c143a911a61299
diff --git a/cmds/installd/installd.c b/cmds/installd/installd.c
index 56e1e16..b8d0bd7 100644
--- a/cmds/installd/installd.c
+++ b/cmds/installd/installd.c
@@ -407,6 +407,35 @@
goto fail;
}
}
+
+ // Ensure media directories for any existing users
+ DIR *dir;
+ struct dirent *dirent;
+ char user_media_dir[PATH_MAX];
+
+ dir = opendir(user_data_dir);
+ if (dir != NULL) {
+ while ((dirent = readdir(dir))) {
+ if (dirent->d_type == DT_DIR) {
+ const char *name = dirent->d_name;
+
+ // skip "." and ".."
+ if (name[0] == '.') {
+ if (name[1] == 0) continue;
+ if ((name[1] == '.') && (name[2] == 0)) continue;
+ }
+
+ // /data/media/<user_id>
+ snprintf(user_media_dir, PATH_MAX, "%s%s", android_media_dir.path, name);
+ if (ensure_dir(user_media_dir, 0770, AID_MEDIA_RW, AID_MEDIA_RW) == -1) {
+ ALOGE("Failed to ensure %s: %s", user_media_dir, strerror(errno));
+ goto fail;
+ }
+ }
+ }
+ closedir(dir);
+ }
+
version = 1;
}