X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=daemon%2Fblkid.c;h=108eee6f07bafe571f5df0049a55aaeb614287bc;hp=4c77b82a60be48cee8318d510f4e357007acdf5f;hb=4d900cdac8258daa2e99c6ceb2a4985154e94150;hpb=e9c37113104c1cfb234535adc9b52ad3880a41ce diff --git a/daemon/blkid.c b/daemon/blkid.c index 4c77b82..108eee6 100644 --- a/daemon/blkid.c +++ b/daemon/blkid.c @@ -27,14 +27,21 @@ #include "daemon.h" #include "actions.h" -char * -do_vfs_type (const char *device) +static char * +get_blkid_tag (const char *device, const char *tag) { char *out, *err; int r; + /* Kill the cache file, forcing blkid to reread values from the + * original filesystems. In blkid there is a '-p' option which is + * supposed to do this, but (a) it doesn't work and (b) that option + * is not supported in RHEL 5. + */ + unlink ("/etc/blkid/blkid.tab"); + r = command (&out, &err, - "/sbin/blkid", "-o", "value", "-s", "TYPE", device, NULL); + "blkid", "-o", "value", "-s", tag, device, NULL); if (r == -1) { reply_with_error ("%s: %s", device, err); free (out); @@ -51,3 +58,21 @@ do_vfs_type (const char *device) return out; /* caller frees */ } + +char * +do_vfs_type (const char *device) +{ + return get_blkid_tag (device, "TYPE"); +} + +char * +do_vfs_label (const char *device) +{ + return get_blkid_tag (device, "LABEL"); +} + +char * +do_vfs_uuid (const char *device) +{ + return get_blkid_tag (device, "UUID"); +}