libblkid: print PTUUID, the partition table uuid
PATCH v2 1/1 libblkid: print PTUUID, the partition table uuid
Signed-off-by Gabriel de Perthuis <[email protected]>
---
v2: only enable this for GPT, dos ids are too weak and not unique
libblkid/src/partitions/gpt.c | 8 ++++---- libblkid/src/partitions/partitions.c | 14 +++++++++++--- 2 files changed, 15 insertions(+), 7 deletions(-)
libblkid/src/partitions/gpt.c +4 -4
@@ -320,14 +320,10 @@ static int probe_gpt_pt(blkid_probe pr,if (blkid_probe_set_magic (pr, lba <<9 ,sizeof (GPT_HEADER_SIGNATURE_STR ) -1 , (unsigned char *)GPT_HEADER_SIGNATURE_STR )) goto err; -if (blkid_partitions_need_typeonly (pr)) -/* caller does not ask for details about partitions */ -return 0 ; - ls =blkid_probe_get_partlist (pr);if (!ls) goto err; tab =blkid_partlist_new_parttable (ls,"gpt" , lba <<9 );
@@ -336,10 +332,14 @@ static int probe_gpt_pt(blkid_probe pr, guid = h->disk_guid;swap_efi_guid (&guid);blkid_parttable_set_id (tab, (const unsigned char *) &guid); +if (blkid_partitions_need_typeonly (pr)) +/* caller does not ask for details about partitions */ +return 0 ; + ssf =blkid_probe_get_sectorsize (pr) /512 ; fu =le64_to_cpu (h->first_usable_lba); lu =le64_to_cpu (h->last_usable_lba);
libblkid/src/partitions/partitions.c +11 -3
@@ -35,10 +35,12 @@* * NAME=value interface, supported tags: * * @PTTYPE: partition table type (dos, gpt, etc.). * +* @PTUUID: partition table uuid (gpt only) +* * @PART_ENTRY_SCHEME: partition table type * * @PART_ENTRY_NAME: partition name (gpt and mac only) * * @PART_ENTRY_UUID: partition UUID (gpt only)
@@ -568,17 +570,18 @@ nothing:*/ static int partitions_probe (blkid_probe pr,struct blkid_chain *chn) {int rc =1 ;size_t i; +blkid_partlist ls; +blkid_parttable pt;if (!pr || chn->idx <-1 )return -1 ;blkid_probe_chain_reset_vals (pr, chn); -if (chn->binary) -partitions_init_data (chn); + ls =partitions_init_data (chn);if (!pr->wipe_size && (pr->prob_flags &BLKID_PROBE_FL_IGNORE_PT )) goto details_only; DBG(LOWPROBE, blkid_debug("--> starting probing loop [PARTS idx=%d]",
@@ -600,14 +603,19 @@ static int partitions_probe(blkid_probe pr, struct blkid_chain *chn)continue ; name = idinfos[i]->name;/* all checks passed */ -if (!chn->binary) +if (!chn->binary) {blkid_probe_set_value (pr,"PTTYPE" , (unsigned char *) name,strlen (name) +1 ); + pt =blkid_partlist_get_table (ls); +if (pt && pt->id &&strcmp (name,"gpt" ) ==0 ) +blkid_probe_set_value (pr,"PTUUID" , + pt->id,37 ); + }DBG (LOWPROBE ,blkid_debug ("<-- leaving probing loop (type=%s) [PARTS idx=%d]" , name, chn->idx)); rc =0 ;break ; }
Signature · 1 line
1.8.3.222.g430da9e