From a39b4463245794129de0ee6360b4e75f3f63015b Mon Sep 17 00:00:00 2001 From: SteveChen Date: Mon, 30 Apr 2018 10:28:23 +0800 Subject: [PATCH] uboot:disk add get_partition_bynameorindex() This function will get partition through name or index.This reference by Digi U-Boot. --- disk/part.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/disk/part.c b/disk/part.c index 1935b28841..7387213f23 100644 --- a/disk/part.c +++ b/disk/part.c @@ -741,3 +741,33 @@ cleanup: free(dup_str); return ret; } + +int get_partition_bynameorindex(const char *ifname, const char *dev_str, + char *part_nameorindex, disk_partition_t *info) +{ + int dev; + unsigned long part; + block_dev_desc_t *dev_desc; + + dev = get_device(ifname, dev_str, &dev_desc); + if (dev < 0) + return -1; + + /* Check if partition to update is given as a number */ + if (!strict_strtoul(part_nameorindex, 16, &part)) { + /* Look up partition by number */ + if (!get_partition_info(dev_desc, part, info)) + return (int)part; + } else { + /* Look up partition by name */ + part = 1; + while (!get_partition_info(dev_desc, part, info)) { + /* Check if partition name matches */ + if (!strcmp((char *)info->name, part_nameorindex)) + return (int)part; + part++; + } + } + + return -1; +}