Android 8.0 stupidly uses comma in vold's device node name, say
"/dev/block/vold/public:8,32". The libfuse-lite can't parse it
correctly since a comma is usually used as a separator between
options.
Modify the options parser to handle it specially.
#endif /* __SOLARIS__ */
{
sep = strchr(opts, ',');
+#ifdef ANDROID
+ if (!strncmp(opts, "fsname=/dev/block/vold/public:", 30)) {
+ if (sep && *(sep - 1) == '\\') {
+ sep--;
+ memmove(sep, sep + 1, strlen(sep));
+ }
+ sep = strchr(sep + 1, ',');
+ }
+#endif
if (sep)
*sep = '\0';
}
const char *fsname_str = "fsname=";
for (len = 0; s[len] && s[len] != ','; len++);
if (begins_with(s, fsname_str)) {
+#ifdef ANDROID
+ if (begins_with(s + 7, "/dev/block/vold/public:"))
+ for (len++; s[len] && s[len] != ','; len++);
+#endif
if (!get_string_opt(s, len, fsname_str, &fsname))
goto err;
} else if (opt_eq(s, len, "blkdev")) {