]>
Commit | Line | Data |
---|---|---|
949130cb KZ |
1 | /* |
2 | * Copyright (C) 2009 Karel Zak <kzak@redhat.com> | |
3 | * | |
4 | * This file may be redistributed under the terms of the | |
5 | * GNU Lesser General Public License. | |
6 | */ | |
7 | ||
8 | #include <stdio.h> | |
9 | #include <stdlib.h> | |
10 | #include <sys/types.h> | |
11 | #include <sys/stat.h> | |
12 | #include <fcntl.h> | |
949130cb KZ |
13 | #include <errno.h> |
14 | ||
15 | #include <blkid.h> | |
16 | ||
17 | #include "c.h" | |
18 | ||
19 | int main(int argc, char *argv[]) | |
20 | { | |
21 | int rc; | |
22 | char *devname; | |
23 | blkid_probe pr; | |
24 | ||
25 | if (argc < 2) { | |
26 | fprintf(stderr, "usage: %s <device> " | |
27 | "-- prints superblocks details about the device\n", | |
28 | program_invocation_short_name); | |
29 | return EXIT_FAILURE; | |
30 | } | |
31 | ||
32 | devname = argv[1]; | |
33 | pr = blkid_new_probe_from_filename(devname); | |
34 | if (!pr) | |
9e930041 | 35 | err(EXIT_FAILURE, "%s: failed to create a new libblkid probe", |
949130cb KZ |
36 | devname); |
37 | ||
38 | /* enable topology probing */ | |
39 | blkid_probe_enable_superblocks(pr, TRUE); | |
40 | ||
41 | /* set all flags */ | |
42 | blkid_probe_set_superblocks_flags(pr, | |
43 | BLKID_SUBLKS_LABEL | BLKID_SUBLKS_LABELRAW | | |
44 | BLKID_SUBLKS_UUID | BLKID_SUBLKS_UUIDRAW | | |
45 | BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE | | |
46 | BLKID_SUBLKS_USAGE | BLKID_SUBLKS_VERSION | | |
47 | BLKID_SUBLKS_MAGIC); | |
48 | ||
49 | rc = blkid_do_safeprobe(pr); | |
50 | if (rc == -1) | |
51 | errx(EXIT_FAILURE, "%s: blkid_do_safeprobe() failed", devname); | |
52 | else if (rc == 1) | |
53 | warnx("%s: cannot gather information about superblocks", devname); | |
54 | else { | |
55 | int i, nvals = blkid_probe_numof_values(pr); | |
56 | ||
57 | for (i = 0; i < nvals; i++) { | |
58 | const char *name, *data; | |
59 | ||
60 | blkid_probe_get_value(pr, i, &name, &data, NULL); | |
61 | printf("\t%s = %s\n", name, data); | |
62 | } | |
63 | } | |
64 | ||
65 | blkid_free_probe(pr); | |
66 | return EXIT_SUCCESS; | |
67 | } |