snprintf(globdir, 256, "%s/*", dir); /**/
if (!glob(globdir, GLOB_NOESCAPE | GLOB_MARK | GLOB_ONLYDIR, NULL, &gl))
- for (j = 0; j < gl.gl_pathc; j++)
- if (!stat(gl.gl_pathv[j], &s) && !S_ISLNK(s.st_mode))
- foreachdir(gl.gl_pathv[j], cb);
+ for (j = 0; j < gl.gl_pathc; j++) {
+ char *dir = gl.gl_pathv[j];
+ int len = strlen(gl.gl_pathv[j]);
+
+ if (len > 1 && dir[len - 1] == '/')
+ dir[len - 1] = '\0';
+ if (!lstat(gl.gl_pathv[j], &s) && !S_ISLNK(s.st_mode))
+ foreachdir(gl.gl_pathv[j], cb);
+ }
cb(dir);
}
ret = -1;
}
break;
+
+ case FS_EXT4FS:
+ ret = overlay_mount(v, "ext4");
+ if (ret)
+ break;
+ if (mount_move("/tmp", "", "/overlay") || fopivot("/overlay", "/rom")) {
+ ULOG_ERR("switching to ext4fs failed\n");
+ ret = -1;
+ }
+ break;
}
if (ret)
case FS_UBIFS:
fstype = "ubifs";
break;
+
+ case FS_EXT4FS:
+ fstype = "ext4";
+ break;
}
volume_init(v);
char valstr[16];
char *path;
+ if (fs_state_get(dir) == state)
+ return 0;
+
path = alloca(strlen(dir) + 1 + sizeof("/.fs_state"));
sprintf(path, "%s/.fs_state", dir);
unlink(path);