Lines 130-142
get_targets_string (void)
Link Here
|
130 |
} |
130 |
} |
131 |
|
131 |
|
132 |
static void |
132 |
static void |
133 |
do_print (const char *x) |
133 |
do_print (const char *x, void *data) |
134 |
{ |
134 |
{ |
135 |
grub_printf ("%s ", x); |
135 |
char delim = *(const char *) data; |
|
|
136 |
grub_printf ("%s%c", x, delim); |
136 |
} |
137 |
} |
137 |
|
138 |
|
138 |
static void |
139 |
static void |
139 |
probe_partmap (grub_disk_t disk) |
140 |
probe_partmap (grub_disk_t disk, char delim) |
140 |
{ |
141 |
{ |
141 |
grub_partition_t part; |
142 |
grub_partition_t part; |
142 |
grub_disk_memberlist_t list = NULL, tmp; |
143 |
grub_disk_memberlist_t list = NULL, tmp; |
Lines 147-156
probe_partmap (grub_disk_t disk)
Link Here
|
147 |
} |
148 |
} |
148 |
|
149 |
|
149 |
for (part = disk->partition; part; part = part->parent) |
150 |
for (part = disk->partition; part; part = part->parent) |
150 |
printf ("%s ", part->partmap->name); |
151 |
printf ("%s%c", part->partmap->name, delim); |
151 |
|
152 |
|
152 |
if (disk->dev->id == GRUB_DISK_DEVICE_DISKFILTER_ID) |
153 |
if (disk->dev->id == GRUB_DISK_DEVICE_DISKFILTER_ID) |
153 |
grub_diskfilter_get_partmap (disk, do_print); |
154 |
grub_diskfilter_get_partmap (disk, do_print, &delim); |
154 |
|
155 |
|
155 |
/* In case of LVM/RAID, check the member devices as well. */ |
156 |
/* In case of LVM/RAID, check the member devices as well. */ |
156 |
if (disk->dev->memberlist) |
157 |
if (disk->dev->memberlist) |
Lines 159-165
probe_partmap (grub_disk_t disk)
Link Here
|
159 |
} |
160 |
} |
160 |
while (list) |
161 |
while (list) |
161 |
{ |
162 |
{ |
162 |
probe_partmap (list->disk); |
163 |
probe_partmap (list->disk, delim); |
163 |
tmp = list->next; |
164 |
tmp = list->next; |
164 |
free (list); |
165 |
free (list); |
165 |
list = tmp; |
166 |
list = tmp; |
Lines 167-173
probe_partmap (grub_disk_t disk)
Link Here
|
167 |
} |
168 |
} |
168 |
|
169 |
|
169 |
static void |
170 |
static void |
170 |
probe_cryptodisk_uuid (grub_disk_t disk) |
171 |
probe_cryptodisk_uuid (grub_disk_t disk, char delim) |
171 |
{ |
172 |
{ |
172 |
grub_disk_memberlist_t list = NULL, tmp; |
173 |
grub_disk_memberlist_t list = NULL, tmp; |
173 |
|
174 |
|
Lines 178-184
probe_cryptodisk_uuid (grub_disk_t disk)
Link Here
|
178 |
} |
179 |
} |
179 |
while (list) |
180 |
while (list) |
180 |
{ |
181 |
{ |
181 |
probe_cryptodisk_uuid (list->disk); |
182 |
probe_cryptodisk_uuid (list->disk, delim); |
182 |
tmp = list->next; |
183 |
tmp = list->next; |
183 |
free (list); |
184 |
free (list); |
184 |
list = tmp; |
185 |
list = tmp; |
Lines 186-192
probe_cryptodisk_uuid (grub_disk_t disk)
Link Here
|
186 |
if (disk->dev->id == GRUB_DISK_DEVICE_CRYPTODISK_ID) |
187 |
if (disk->dev->id == GRUB_DISK_DEVICE_CRYPTODISK_ID) |
187 |
{ |
188 |
{ |
188 |
const char *uu = grub_util_cryptodisk_get_uuid (disk); |
189 |
const char *uu = grub_util_cryptodisk_get_uuid (disk); |
189 |
grub_printf ("%s ", uu); |
190 |
grub_printf ("%s%c", uu, delim); |
190 |
} |
191 |
} |
191 |
} |
192 |
} |
192 |
|
193 |
|
Lines 210-216
probe_raid_level (grub_disk_t disk)
Link Here
|
210 |
} |
211 |
} |
211 |
|
212 |
|
212 |
static void |
213 |
static void |
213 |
probe_abstraction (grub_disk_t disk) |
214 |
probe_abstraction (grub_disk_t disk, char delim) |
214 |
{ |
215 |
{ |
215 |
grub_disk_memberlist_t list = NULL, tmp; |
216 |
grub_disk_memberlist_t list = NULL, tmp; |
216 |
int raid_level; |
217 |
int raid_level; |
Lines 219-225
probe_abstraction (grub_disk_t disk)
Link Here
|
219 |
list = disk->dev->memberlist (disk); |
220 |
list = disk->dev->memberlist (disk); |
220 |
while (list) |
221 |
while (list) |
221 |
{ |
222 |
{ |
222 |
probe_abstraction (list->disk); |
223 |
probe_abstraction (list->disk, delim); |
223 |
|
224 |
|
224 |
tmp = list->next; |
225 |
tmp = list->next; |
225 |
free (list); |
226 |
free (list); |
Lines 229-254
probe_abstraction (grub_disk_t disk)
Link Here
|
229 |
if (disk->dev->id == GRUB_DISK_DEVICE_DISKFILTER_ID |
230 |
if (disk->dev->id == GRUB_DISK_DEVICE_DISKFILTER_ID |
230 |
&& (grub_memcmp (disk->name, "lvm/", sizeof ("lvm/") - 1) == 0 || |
231 |
&& (grub_memcmp (disk->name, "lvm/", sizeof ("lvm/") - 1) == 0 || |
231 |
grub_memcmp (disk->name, "lvmid/", sizeof ("lvmid/") - 1) == 0)) |
232 |
grub_memcmp (disk->name, "lvmid/", sizeof ("lvmid/") - 1) == 0)) |
232 |
printf ("lvm "); |
233 |
printf ("lvm%c", delim); |
233 |
|
234 |
|
234 |
if (disk->dev->id == GRUB_DISK_DEVICE_DISKFILTER_ID |
235 |
if (disk->dev->id == GRUB_DISK_DEVICE_DISKFILTER_ID |
235 |
&& grub_memcmp (disk->name, "ldm/", sizeof ("ldm/") - 1) == 0) |
236 |
&& grub_memcmp (disk->name, "ldm/", sizeof ("ldm/") - 1) == 0) |
236 |
printf ("ldm "); |
237 |
printf ("ldm%c", delim); |
237 |
|
238 |
|
238 |
if (disk->dev->id == GRUB_DISK_DEVICE_CRYPTODISK_ID) |
239 |
if (disk->dev->id == GRUB_DISK_DEVICE_CRYPTODISK_ID) |
239 |
grub_util_cryptodisk_get_abstraction (disk, do_print); |
240 |
grub_util_cryptodisk_get_abstraction (disk, do_print, &delim); |
240 |
|
241 |
|
241 |
raid_level = probe_raid_level (disk); |
242 |
raid_level = probe_raid_level (disk); |
242 |
if (raid_level >= 0) |
243 |
if (raid_level >= 0) |
243 |
{ |
244 |
{ |
244 |
printf ("diskfilter "); |
245 |
printf ("diskfilter%c", delim); |
245 |
if (disk->dev->raidname) |
246 |
if (disk->dev->raidname) |
246 |
printf ("%s ", disk->dev->raidname (disk)); |
247 |
printf ("%s%c", disk->dev->raidname (disk), delim); |
247 |
} |
248 |
} |
248 |
if (raid_level == 5) |
249 |
if (raid_level == 5) |
249 |
printf ("raid5rec "); |
250 |
printf ("raid5rec%c", delim); |
250 |
if (raid_level == 6) |
251 |
if (raid_level == 6) |
251 |
printf ("raid6rec "); |
252 |
printf ("raid6rec%c", delim); |
252 |
} |
253 |
} |
253 |
|
254 |
|
254 |
static void |
255 |
static void |
Lines 630-645
probe (const char *path, char **device_names, char delim)
Link Here
|
630 |
|
631 |
|
631 |
if (print == PRINT_ABSTRACTION) |
632 |
if (print == PRINT_ABSTRACTION) |
632 |
{ |
633 |
{ |
633 |
probe_abstraction (dev->disk); |
634 |
probe_abstraction (dev->disk, delim); |
634 |
putchar (delim); |
|
|
635 |
grub_device_close (dev); |
635 |
grub_device_close (dev); |
636 |
continue; |
636 |
continue; |
637 |
} |
637 |
} |
638 |
|
638 |
|
639 |
if (print == PRINT_CRYPTODISK_UUID) |
639 |
if (print == PRINT_CRYPTODISK_UUID) |
640 |
{ |
640 |
{ |
641 |
probe_cryptodisk_uuid (dev->disk); |
641 |
probe_cryptodisk_uuid (dev->disk, delim); |
642 |
putchar (delim); |
|
|
643 |
grub_device_close (dev); |
642 |
grub_device_close (dev); |
644 |
continue; |
643 |
continue; |
645 |
} |
644 |
} |
Lines 647-654
probe (const char *path, char **device_names, char delim)
Link Here
|
647 |
if (print == PRINT_PARTMAP) |
646 |
if (print == PRINT_PARTMAP) |
648 |
{ |
647 |
{ |
649 |
/* Check if dev->disk itself is contained in a partmap. */ |
648 |
/* Check if dev->disk itself is contained in a partmap. */ |
650 |
probe_partmap (dev->disk); |
649 |
probe_partmap (dev->disk, delim); |
651 |
putchar (delim); |
|
|
652 |
grub_device_close (dev); |
650 |
grub_device_close (dev); |
653 |
continue; |
651 |
continue; |
654 |
} |
652 |
} |
655 |
- |
|
|