block: best-effort in find_mount_point
[project/fstools.git] / block.c
diff --git a/block.c b/block.c
index 3326458..720ecb1 100644 (file)
--- a/block.c
+++ b/block.c
@@ -592,13 +592,13 @@ static char* find_mount_point(char *block)
        int len = strlen(block);
        char *point = NULL, *pos, *tmp, *cpoint, *devname;
        struct stat s;
        int len = strlen(block);
        char *point = NULL, *pos, *tmp, *cpoint, *devname;
        struct stat s;
+       int rstat;
        unsigned int minor, major;
 
        if (!fp)
                return NULL;
 
        unsigned int minor, major;
 
        if (!fp)
                return NULL;
 
-       if (stat(block, &s))
-               return NULL;
+       rstat = stat(block, &s);
 
        while (fgets(line, sizeof(line), fp)) {
                pos = strchr(line, ' ');
 
        while (fgets(line, sizeof(line), fp)) {
                pos = strchr(line, ' ');
@@ -658,6 +658,9 @@ static char* find_mount_point(char *block)
                        break;
                }
 
                        break;
                }
 
+               if (rstat)
+                       continue;
+
                if (!S_ISBLK(s.st_mode))
                        continue;
 
                if (!S_ISBLK(s.st_mode))
                        continue;