summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
764e4e2)
If the blkid command returns 2, that means the value was not found.
Note that this changes the output of the vfs-type API when the
filesystem has no type (eg when it is empty). Previously this would
return an error. Now it returns empty string "".
We did not document this either way. Making it return empty string is
consistent with vfs-label and vfs-uuid.
This change broke list-filesystems, since that code was assuming that
vfs-type could only return a filesystem type or an error.
unlink ("/etc/blkid/blkid.tab"); /* Red Hat, Fedora */
unlink ("/etc/blkid.tab"); /* Debian */
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;
free (out);
free (err);
return NULL;
+ 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')
/* Trim trailing \n if present. */
size_t len = strlen (out);
if (len > 0 && out[len-1] == '\n')
if (!vfs_type)
v = safe_strdup (g, "unknown");
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
else {
/* Ignore all "*_member" strings. In libblkid these are returned
* for things which are members of some RAID or LVM set, most