diff options
-rw-r--r-- | daemon/blkid.c | 19 | ||||
-rw-r--r-- | src/listfs.c | 4 |
2 files changed, 19 insertions, 4 deletions
diff --git a/daemon/blkid.c b/daemon/blkid.c index 2885a8f3..f6310611 100644 --- a/daemon/blkid.c +++ b/daemon/blkid.c @@ -41,10 +41,13 @@ get_blkid_tag (const char *device, const char *tag) unlink ("/etc/blkid/blkid.tab"); /* Red Hat, Fedora */ unlink ("/etc/blkid.tab"); /* Debian */ - r = command (&out, &err, - "blkid", "-o", "value", "-s", tag, device, NULL); - if (r == -1) { - reply_with_error ("%s: %s", device, err); + r = commandr (&out, &err, + "blkid", "-o", "value", "-s", tag, device, NULL); + if (r != 0 && r != 2) { + if (r >= 0) + reply_with_error ("%s: %s (blkid returned %d)", device, err, r); + else + reply_with_error ("%s: %s", device, err); free (out); free (err); return NULL; @@ -52,6 +55,14 @@ get_blkid_tag (const char *device, const char *tag) free (err); + if (r == 2) { /* means UUID etc not found */ + free (out); + out = strdup (""); + if (out == NULL) + reply_with_perror ("strdup"); + return out; + } + /* Trim trailing \n if present. */ size_t len = strlen (out); if (len > 0 && out[len-1] == '\n') diff --git a/src/listfs.c b/src/listfs.c index a89cd9bd..42bbaef0 100644 --- a/src/listfs.c +++ b/src/listfs.c @@ -139,6 +139,10 @@ check_with_vfs_type (guestfs_h *g, const char *device, if (!vfs_type) v = safe_strdup (g, "unknown"); + else if (STREQ (vfs_type, "")) { + free (vfs_type); + v = safe_strdup (g, "unknown"); + } else { /* Ignore all "*_member" strings. In libblkid these are returned * for things which are members of some RAID or LVM set, most |