libfstools: add f2fs filesystem type and simplify fs type code
[project/fstools.git] / libfstools / find.c
index 71548f5..72a2b4c 100644 (file)
@@ -36,6 +36,9 @@ find_overlay_mount(char *overlay)
        return ret;
 }
 
+/*
+ * Find path of a device mounted to the given point.
+ */
 char*
 find_mount(char *mp)
 {
@@ -53,6 +56,7 @@ find_mount(char *mp)
                        fclose(fp);
                        return NULL;
                }
+               *t = '\0';
                t++;
                s = strstr(t, " ");
                if (!s) {
@@ -63,7 +67,7 @@ find_mount(char *mp)
 
                if (!strcmp(t, mp)) {
                        fclose(fp);
-                       return t;
+                       return line;
                }
        }
 
@@ -73,7 +77,7 @@ find_mount(char *mp)
 }
 
 char*
-find_mount_point(char *block, char *fs)
+find_mount_point(char *block, int root_only)
 {
        FILE *fp = fopen("/proc/mounts", "r");
        static char line[256];
@@ -96,9 +100,12 @@ find_mount_point(char *block, char *fs)
                        *t = '\0';
                        t++;
 
-                       if (fs && strncmp(t, fs, strlen(fs))) {
+                       if (root_only &&
+                           strncmp(t, "f2fs", 4) &&
+                           strncmp(t, "jffs2", 5) &&
+                           strncmp(t, "ubifs", 5)) {
                                fclose(fp);
-                               fprintf(stderr, "block is mounted with wrong fs\n");
+                               ULOG_ERR("block is mounted with wrong fs\n");
                                return NULL;
                        }
                        point = p;
@@ -120,7 +127,7 @@ find_filesystem(char *fs)
        int ret = -1;
 
        if (!fp) {
-               fprintf(stderr, "opening /proc/filesystems failed: %s\n", strerror(errno));
+               ULOG_ERR("opening /proc/filesystems failed: %s\n", strerror(errno));
                goto out;
        }