Created
February 22, 2016 06:13
-
-
Save likema/f0b5014591c495459d64 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* vim: set ts=4 sw=4 sts=4 et: */ | |
#include <blkid.h> | |
#include <stdio.h> | |
static void print_udev_format (FILE* fp, const char *name, const char *value) | |
{ | |
char enc[265], safe[256]; | |
*safe = *enc = 0; | |
if (!strcmp (name, "TYPE") || !strcmp (name, "VERSION")) { | |
blkid_encode_string (value, enc, sizeof(enc)); | |
fprintf (fp, "ID_FS_%s=%s\n", name, enc); | |
} else if (!strcmp (name, "UUID") || | |
!strcmp(name, "LABEL") || | |
!strcmp(name, "UUID_SUB")) { | |
blkid_safe_string (value, safe, sizeof(safe)); | |
fprintf (fp, "ID_FS_%s=%s\n", name, safe); | |
blkid_encode_string (value, enc, sizeof(enc)); | |
fprintf (fp, "ID_FS_%s_ENC=%s\n", name, enc); | |
} else { | |
fprintf (fp, "ID_FS_%s=%s\n", name, value); | |
} | |
} | |
static void print_tags (FILE* fp, blkid_dev dev) | |
{ | |
if (!dev) | |
return; | |
const char *name, *value, *devname = blkid_dev_devname (dev); | |
blkid_tag_iterate i = blkid_tag_iterate_begin (dev); | |
while (blkid_tag_next (i, &name, &value) == 0) { | |
print_udev_format (fp, name, value); | |
} | |
blkid_tag_iterate_end (i); | |
} | |
int blkid_dev_print_udev (FILE* fp, const char* devname) | |
{ | |
blkid_cache cache = 0; | |
if (blkid_get_cache(&cache, 0) < 0) | |
return -1; | |
int rc = 0; | |
blkid_dev dev = blkid_get_dev (cache, devname, BLKID_DEV_NORMAL); | |
if (dev) { | |
print_tags (fp, dev); | |
} else { | |
rc = -1; | |
} | |
blkid_put_cache (cache); | |
return rc; | |
} | |
int main (int argc, const char* argv[]) | |
{ | |
if (argc < 2) { | |
fprintf (stderr, "blkid-udev <device path>\n"); | |
return 1; | |
} | |
blkid_dev_print_udev (stdout, argv[1]); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment