diff options
Diffstat (limited to 'e2fsprogs/blkid/dev.c')
-rw-r--r-- | e2fsprogs/blkid/dev.c | 99 |
1 files changed, 98 insertions, 1 deletions
diff --git a/e2fsprogs/blkid/dev.c b/e2fsprogs/blkid/dev.c index 04cf8b5fa..5d56c5096 100644 --- a/e2fsprogs/blkid/dev.c +++ b/e2fsprogs/blkid/dev.c | |||
@@ -35,7 +35,7 @@ void blkid_free_dev(blkid_dev dev) | |||
35 | 35 | ||
36 | DBG(DEBUG_DEV, | 36 | DBG(DEBUG_DEV, |
37 | printf(" freeing dev %s (%s)\n", dev->bid_name, dev->bid_type)); | 37 | printf(" freeing dev %s (%s)\n", dev->bid_name, dev->bid_type)); |
38 | DEB_DUMP_DEV(DEBUG_DEV, dev); | 38 | DBG(DEBUG_DEV, blkid_debug_dump_dev(dev)); |
39 | 39 | ||
40 | list_del(&dev->bid_devs); | 40 | list_del(&dev->bid_devs); |
41 | while (!list_empty(&dev->bid_tags)) { | 41 | while (!list_empty(&dev->bid_tags)) { |
@@ -57,6 +57,34 @@ const char *blkid_dev_devname(blkid_dev dev) | |||
57 | return dev->bid_name; | 57 | return dev->bid_name; |
58 | } | 58 | } |
59 | 59 | ||
60 | #ifdef CONFIG_BLKID_DEBUG | ||
61 | void blkid_debug_dump_dev(blkid_dev dev) | ||
62 | { | ||
63 | struct list_head *p; | ||
64 | |||
65 | if (!dev) { | ||
66 | printf(" dev: NULL\n"); | ||
67 | return; | ||
68 | } | ||
69 | |||
70 | printf(" dev: name = %s\n", dev->bid_name); | ||
71 | printf(" dev: DEVNO=\"0x%0llx\"\n", dev->bid_devno); | ||
72 | printf(" dev: TIME=\"%lu\"\n", dev->bid_time); | ||
73 | printf(" dev: PRI=\"%d\"\n", dev->bid_pri); | ||
74 | printf(" dev: flags = 0x%08X\n", dev->bid_flags); | ||
75 | |||
76 | list_for_each(p, &dev->bid_tags) { | ||
77 | blkid_tag tag = list_entry(p, struct blkid_struct_tag, bit_tags); | ||
78 | if (tag) | ||
79 | printf(" tag: %s=\"%s\"\n", tag->bit_name, | ||
80 | tag->bit_val); | ||
81 | else | ||
82 | printf(" tag: NULL\n"); | ||
83 | } | ||
84 | printf("\n"); | ||
85 | } | ||
86 | #endif | ||
87 | |||
60 | /* | 88 | /* |
61 | * dev iteration routines for the public libblkid interface. | 89 | * dev iteration routines for the public libblkid interface. |
62 | * | 90 | * |
@@ -114,3 +142,72 @@ void blkid_dev_iterate_end(blkid_dev_iterate iter) | |||
114 | free(iter); | 142 | free(iter); |
115 | } | 143 | } |
116 | 144 | ||
145 | #ifdef TEST_PROGRAM | ||
146 | #ifdef HAVE_GETOPT_H | ||
147 | #include <getopt.h> | ||
148 | #else | ||
149 | extern char *optarg; | ||
150 | extern int optind; | ||
151 | #endif | ||
152 | |||
153 | void usage(char *prog) | ||
154 | { | ||
155 | fprintf(stderr, "Usage: %s [-f blkid_file] [-m debug_mask]\n", prog); | ||
156 | fprintf(stderr, "\tList all devices and exit\n", prog); | ||
157 | exit(1); | ||
158 | } | ||
159 | |||
160 | int main(int argc, char **argv) | ||
161 | { | ||
162 | blkid_dev_iterate iter; | ||
163 | blkid_cache cache = NULL; | ||
164 | blkid_dev dev; | ||
165 | int c, ret; | ||
166 | char *tmp; | ||
167 | char *file = NULL; | ||
168 | char *search_type = NULL; | ||
169 | char *search_value = NULL; | ||
170 | |||
171 | while ((c = getopt (argc, argv, "m:f:")) != EOF) | ||
172 | switch (c) { | ||
173 | case 'f': | ||
174 | file = optarg; | ||
175 | break; | ||
176 | case 'm': | ||
177 | blkid_debug_mask = strtoul (optarg, &tmp, 0); | ||
178 | if (*tmp) { | ||
179 | fprintf(stderr, "Invalid debug mask: %d\n", | ||
180 | optarg); | ||
181 | exit(1); | ||
182 | } | ||
183 | break; | ||
184 | case '?': | ||
185 | usage(argv[0]); | ||
186 | } | ||
187 | if (argc >= optind+2) { | ||
188 | search_type = argv[optind]; | ||
189 | search_value = argv[optind+1]; | ||
190 | optind += 2; | ||
191 | } | ||
192 | if (argc != optind) | ||
193 | usage(argv[0]); | ||
194 | |||
195 | if ((ret = blkid_get_cache(&cache, file)) != 0) { | ||
196 | fprintf(stderr, "%s: error creating cache (%d)\n", | ||
197 | argv[0], ret); | ||
198 | exit(1); | ||
199 | } | ||
200 | |||
201 | iter = blkid_dev_iterate_begin(cache); | ||
202 | if (search_type) | ||
203 | blkid_dev_set_search(iter, search_type, search_value); | ||
204 | while (blkid_dev_next(iter, &dev) == 0) { | ||
205 | printf("Device: %s\n", blkid_dev_devname(dev)); | ||
206 | } | ||
207 | blkid_dev_iterate_end(iter); | ||
208 | |||
209 | |||
210 | blkid_put_cache(cache); | ||
211 | return (0); | ||
212 | } | ||
213 | #endif | ||