From patchwork Thu Jan 7 15:20:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 1423358 X-Patchwork-Delegate: lukma@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=seco.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=secospa.onmicrosoft.com header.i=@secospa.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-secospa-onmicrosoft-com header.b=W1u1OiMQ; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DBVNK2dMkz9sVt for ; Fri, 8 Jan 2021 02:22:41 +1100 (AEDT) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 7B38B828AD; Thu, 7 Jan 2021 16:21:55 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=fail (p=none dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=secospa.onmicrosoft.com header.i=@secospa.onmicrosoft.com header.b="W1u1OiMQ"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id B1EDE828B3; Thu, 7 Jan 2021 16:21:45 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-0.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,FORGED_SPF_HELO,MSGID_FROM_MTA_HEADER,RCVD_IN_DNSWL_NONE, SPF_HELO_PASS autolearn=no autolearn_force=no version=3.4.2 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2060d.outbound.protection.outlook.com [IPv6:2a01:111:f400:7e1a::60d]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 94EB582874 for ; Thu, 7 Jan 2021 16:21:36 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=seco.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sean.anderson@seco.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jTY9wzLISLPWRbbhJKqIRLjFkZ1QO0MhkkcUwePizWdSua1JccVcbGrnuEspGoGSdZf6clSKwEOzB0db6DAYw2M0xpUmGM3UeqCcIXOjbub3IhOAGWLJuUUa8qk9vwgdwBqvKGEh3PLoTElwbI+SSefEFHhTIXe4YwteXnu5jGy4+VKt7GPOoHawrobW6+eqJ2kXMMn2tNnyKypaXbZWs0FiMla7GgNHLc714Xboo+z/qeJzgiBDFWveSzC7fGLqieLGwqF2GrK5fKy7mDBkZLUkrGD8YzxyQ8mb2To/N5QMd5fwzT3/MygUEhEjin2GMS1LqpHoRmF000L4nKzinw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=80JhjeTbHFfd5tO3vy8Vn8f71uc+xsgJqR4Oru5+VLM=; b=Yz1d+g8O+fJAc1dGWj3/TT31gQGQMMmzArVOvmpUrNcuwKO+D1R3a+bK3pA9PoisKuVUCRJpzd4Gz9DFRYfxSeaPSHqP4E0L5nBEs+fAIS1AcreevogAHKVOGazztaAorCCxue4yGn1nDzQTVEBv2G5GsGx4i6vokDSSblkpMGYSfIRtwLgvTSL0yLbsyye2BLAbenAB80nSj6yORtd3mWKD/D6Nxy6S7DwqZY1HfjOpnjG5jb4cFjPRfvyo/otFFJFKGwrOg67aLjpqCwG03ck6F9AeGi97wQE+KHiXooR5bsidVb6E/5PZU5QvdGhlT1dIESgOR7iPQk9JsyDSAg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=seco.com; dmarc=pass action=none header.from=seco.com; dkim=pass header.d=seco.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=secospa.onmicrosoft.com; s=selector2-secospa-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=80JhjeTbHFfd5tO3vy8Vn8f71uc+xsgJqR4Oru5+VLM=; b=W1u1OiMQr7wX1B+WgfDRqUndOvtD8TdgMx4o3Uslkiik7ASFhANyGnkX9e67Y7uAe8qYN9ip2Mu4Z31TOPHJ0XFhnLpvpA7T6XRzGm25+juO6ku8XmHSmZnvaahG4iSzFRYK/rjwwQdq5duxwx884jfLp6nJ3jP9pXo3gpsuaX4= Authentication-Results: lists.denx.de; dkim=none (message not signed) header.d=none;lists.denx.de; dmarc=none action=none header.from=seco.com; Received: from AM9PR03MB7251.eurprd03.prod.outlook.com (2603:10a6:20b:26e::16) by AM9PR03MB6930.eurprd03.prod.outlook.com (2603:10a6:20b:2d7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Thu, 7 Jan 2021 15:21:35 +0000 Received: from AM9PR03MB7251.eurprd03.prod.outlook.com ([fe80::a8f2:7dd:46e5:8526]) by AM9PR03MB7251.eurprd03.prod.outlook.com ([fe80::a8f2:7dd:46e5:8526%6]) with mapi id 15.20.3742.006; Thu, 7 Jan 2021 15:21:35 +0000 From: Sean Anderson To: u-boot@lists.denx.de Cc: Simon Glass , Sean Anderson , Heinrich Schuchardt Subject: [PATCH v2 5/9] part: Support string block devices in part_get_info_by_dev_and_name Date: Thu, 7 Jan 2021 10:20:59 -0500 Message-Id: <20210107152104.1837414-6-sean.anderson@seco.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210107152104.1837414-1-sean.anderson@seco.com> References: <20210107152104.1837414-1-sean.anderson@seco.com> X-Originating-IP: [50.195.82.171] X-ClientProxiedBy: MN2PR19CA0053.namprd19.prod.outlook.com (2603:10b6:208:19b::30) To AM9PR03MB7251.eurprd03.prod.outlook.com (2603:10a6:20b:26e::16) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from plantagenet.inhand.com (50.195.82.171) by MN2PR19CA0053.namprd19.prod.outlook.com (2603:10b6:208:19b::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6 via Frontend Transport; Thu, 7 Jan 2021 15:21:34 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 80525e66-b2cc-4e7a-7275-08d8b31fec11 X-MS-TrafficTypeDiagnostic: AM9PR03MB6930: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:519; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PfxFKEfehxurekvvsakQ7PU1v6HoSpqd/Gu2feRh05x/StowMpS7LvitbIuJeapqiLAn8rIlFe4KFdsdh+Fu9cg1xT5IDkYKux3+TPw19D3SGUpJJu6gvcPbZGV00jRju4OvKjxbfQkDC9MHsIRVo1ZY5TvWui4dj+fJJDQDBnncJKSZwti+OUgPyhEcvOl50spf/y7lICX7Xrx+H1+ob1y+riD/4oqiqNtYv3R6S6E7tqShoHFC/pXfqJQGoU19rwYWpGD+zCDiaoW1VJrFnPnh9cXygWkWykCaA0RJDfWUJmXxkIP7B1QK2oTB2/SCLr6BmJ8ybvoNzmJtjXeqArj6k0SRva+R69sUqxKYuEHouKsLhCf+UJtxVfYEWQ39yX4QwAykVCacs5q0oPiDfQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM9PR03MB7251.eurprd03.prod.outlook.com; PTR:; CAT:NONE; SFS:(346002)(136003)(396003)(376002)(366004)(39850400004)(66556008)(66476007)(66946007)(86362001)(6666004)(36756003)(478600001)(6486002)(16526019)(956004)(5660300002)(8676002)(6916009)(6512007)(2906002)(26005)(8936002)(186003)(6506007)(2616005)(52116002)(1076003)(54906003)(83380400001)(4326008)(316002)(44832011); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: h9VfbaFZMikq+n4xR1lo4+EyV6RhcnL1D4INHmdkfP/CqIENuGYy7FdCWMSQKIB0RtMId2lJEYm/KRdDtTKmdJ6+embr55Sv3m+3NVmXA45YViHPYvFHT5vOCFWMmobga7wDbbIg9l1bA8VfE181eiBJvsm+yYow5CkcrBAt22kq+phG5Khoz0/acna+YW6aioHCuJv+Z5XjtU+fDr9HKSTeGZAQtWs6fux+bP/ZGuyLUcKaJC1EUrjEslH7nLS2Yz+VILnWA65qFl0rvk9OUNWUS9UBtlhsEqfTv4i/NrAsLWz7IGQoEPljkusIFODE6Miz++Ym/WDJoK2KuzE9jb9cUsSfaVonC8txuNtymhf1qSqwcKTVyQCzWbmq9pORJEe4shEhQ2AeQPZcLOGtvh8mrEluLH7XJjTtAVvKpy6cifddVMZ7+oRg5HqxEBQQEaUuGgtzRNANsVCETC9PMJJIxN6550n8YzKpwOXfMl/Ctm0vhPZEDtiIEERnvOnqsVpqgsTcJWaJhXDhzRkREl1r1yTlTGcCE9Lu0RLUe3cwT/xoughy7MV2LkhMj+bwYfd4qC2/saxDlG68WNsYkk+bJN/Q/BgvEWgI4KnRWu3VZE9xgtbJ01dtEhvmzwVsakcdH6MKOvdXofKv+qp9g6GnlgPY9+896sCLHunBoBskFbr1hy4u/KW6DLak/LM2hlIOuFQQeL2V+5y4S+7ZJXT3sLr5XL5affLD9ZRlpFNBVOVxzFUZLi3rVQ8HjAqtJnG0HkoQMltpltEyCD8JHIQVaYFy1BllkFFgdW1sUFamyEtC1Nkcm2cVZZgpVv+iQYwImLcesnEoMAy4fahT7Tt1H3tO9C56Cn/yAYAI9zqPhrSa+XoEfb/t6SpoMXnxuroVDbZIP7PDD/IJYzVNsBSwNmFJJQHTnJvXp9dk5ZobbiSr3WnYuy/wN7whO1FGD0x6znkHi0/B/QylfbR3XyNsgQzVMtbrTyK/Ewi+0tg3Ob75KYMhPBGZz8KGzg3Q X-OriginatorOrg: seco.com X-MS-Exchange-CrossTenant-AuthSource: AM9PR03MB7251.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jan 2021 15:21:35.7863 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bebe97c3-6438-442e-ade3-ff17aa50e733 X-MS-Exchange-CrossTenant-Network-Message-Id: 80525e66-b2cc-4e7a-7275-08d8b31fec11 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2SwHfFLjuNmOIGayfh48ZEVSg1plY+NULohCmgxSuFP6rr8V0uih006xwNkbgLE22XSqRqjRhvOTpGDshmBxdA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB6930 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean This adds support for things like "#partname" and "0.1#partname". The block device parsing is done like in blk_get_device_part_str. Signed-off-by: Sean Anderson Reviewed-by: Simon Glass --- Changes in v2: - Update documentation disk/part.c | 41 ++++++++++++++++++++++------------------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/disk/part.c b/disk/part.c index 39c6b00a59..aaeafbb0b2 100644 --- a/disk/part.c +++ b/disk/part.c @@ -692,12 +692,13 @@ int part_get_info_by_name(struct blk_desc *dev_desc, const char *name, * Get partition info from device number and partition name. * * Parse a device number and partition name string in the form of - * "device_num#partition_name", for example "0#misc". If the partition - * is found, sets dev_desc and part_info accordingly with the information - * of the partition with the given partition_name. + * "devicenum.hwpartnum#partition_name", for example "0.1#misc". devicenum and + * hwpartnum are both optional, defaulting to 0. If the partition is found, + * sets dev_desc and part_info accordingly with the information of the + * partition with the given partition_name. * * @param[in] dev_iface Device interface - * @param[in] dev_part_str Input string argument, like "0#misc" + * @param[in] dev_part_str Input string argument, like "0.1#misc" * @param[out] dev_desc Place to store the device description pointer * @param[out] part_info Place to store the partition information * @return 0 on success, or a negative on error @@ -707,29 +708,31 @@ static int part_get_info_by_dev_and_name(const char *dev_iface, struct blk_desc **dev_desc, struct disk_partition *part_info) { - char *ep; - const char *part_str; - int dev_num, ret; + char *dup_str = NULL; + const char *dev_str, *part_str; + int ret; + /* Separate device and partition name specification */ part_str = strchr(dev_part_str, '#'); - if (!part_str || part_str == dev_part_str) - return -EINVAL; - - dev_num = simple_strtoul(dev_part_str, &ep, 16); - if (ep != part_str) { - /* Not all the first part before the # was parsed. */ + if (part_str) { + dup_str = strdup(dev_part_str); + dup_str[part_str - dev_part_str] = 0; + dev_str = dup_str; + part_str++; + } else { return -EINVAL; } - part_str++; - *dev_desc = blk_get_dev(dev_iface, dev_num); - if (!*dev_desc) { - printf("Could not find %s %d\n", dev_iface, dev_num); - return -ENODEV; - } + ret = blk_get_device_by_str(dev_iface, dev_str, dev_desc); + if (ret) + goto cleanup; + ret = part_get_info_by_name(*dev_desc, part_str, part_info); if (ret < 0) printf("Could not find \"%s\" partition\n", part_str); + +cleanup: + free(dup_str); return ret; }