From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Fri, 02 Jun 2023 15:30:29 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1q54rO-007O8s-JK for lore@lore.pengutronix.de; Fri, 02 Jun 2023 15:30:29 +0200 Received: from localhost ([127.0.0.1] helo=metis.ext.pengutronix.de) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1q54rL-0000CT-Af; Fri, 02 Jun 2023 15:30:27 +0200 Received: from ptx.hi.pengutronix.de ([2001:67c:670:100:1d::c0]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q54rK-0000Bc-Cb; Fri, 02 Jun 2023 15:30:26 +0200 Received: from rhi by ptx.hi.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1q54rK-0004ge-6M; Fri, 02 Jun 2023 15:30:26 +0200 Date: Fri, 2 Jun 2023 15:30:26 +0200 From: Roland Hieber To: Ahmad Fatoum Message-ID: <20230602133026.okgaevnudnliu54c@pengutronix.de> References: <20230531152253.1407395-1-a.fatoum@pengutronix.de> <20230531152253.1407395-3-a.fatoum@pengutronix.de> <20230602131613.n3iluklnm5onp5br@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20230602131613.n3iluklnm5onp5br@pengutronix.de> User-Agent: NeoMutt/20180716 Subject: Re: [OSS-Tools] [PATCH 2/8] libdt: factor out u64 sysattr parsing into helper X-BeenThere: oss-tools@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: Pengutronix Public Open-Source-Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: oss-tools@pengutronix.de Sender: "OSS-Tools" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: oss-tools-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false On Fri, Jun 02, 2023 at 03:16:13PM +0200, Roland Hieber wrote: > On Wed, May 31, 2023 at 05:22:47PM +0200, Ahmad Fatoum wrote: > > We will need to parse two more sysattrs in a follow-up patch, so factor > > this out for reuse. While at it switch to 64-bit strtoull: This may > > be more useful for future users and unlike atol doesn't invoke undefined > > behavior when parsing fails. > > > > Signed-off-by: Ahmad Fatoum > > --- > > src/libdt.c | 42 +++++++++++++++++++++++++++++++++++------- > > 1 file changed, 35 insertions(+), 7 deletions(-) > > > > diff --git a/src/libdt.c b/src/libdt.c > > index 2c994c647ac9..580b0b0ba769 100644 > > --- a/src/libdt.c > > +++ b/src/libdt.c > > @@ -2179,6 +2179,33 @@ static struct udev_device *device_find_mtd_partition(struct udev_device *dev, > > return NULL; > > } > > > > +/* > > Use /** here so API doc generators could potentially pick it up (even > if we don't build API docs right now, but all other functions are > documented the same way). OK disregard that, not all functions have /** comments */ above them, so this is a separate issue. - Roland > > + * udev_device_parse_sysattr_u64 - parse sysattr value as unsigned 64-bit integer > > + * @dev: the udev_device to extract the attribute from > > + * @attr: name of the attribute to lookup > > + * @outvalue: returns the value parsed out of the attribute > > + * > > + * returns 0 for success or negative error value on failure. > > + */ > > +static int udev_device_parse_sysattr_u64(struct udev_device *dev, const char *attr, > > + u64 *outvalue) > > +{ > > + char *endptr; > > + u64 value; > > + const char *str; > > + > > + str = udev_device_get_sysattr_value(dev, attr); > > + if (!str) > > + return -EINVAL; > > + > > + value = strtoull(str, &endptr, 0); > > + if (!*str || *endptr) > > + return -EINVAL; > > + > > + *outvalue = value; > > + return 0; > > +} > > + > > /* > > * device_find_block_device - extract device path from udev block device > > * > > @@ -2305,24 +2332,25 @@ static int udev_device_is_eeprom(struct udev_device *dev) > > * udev_parse_mtd - get information from a mtd udev_device > > * @dev: the udev_device to extract information from > > * @devpath: returns the devicepath under which the mtd device is accessible > > - * @size: returns the size of the mtd device > > + * @outsize: returns the size of the mtd device > > * > > * returns 0 for success or negative error value on failure. *devpath > > * will be valid on success and must be freed after usage. > > */ > > -static int udev_parse_mtd(struct udev_device *dev, char **devpath, size_t *size) > > +static int udev_parse_mtd(struct udev_device *dev, char **devpath, size_t *outsize) > > { > > - const char *sizestr; > > const char *outpath; > > + u64 size; > > + int ret; > > > > if (!udev_device_is_mtd(dev)) > > return -EINVAL; > > > > - sizestr = udev_device_get_sysattr_value(dev, "size"); > > - if (!sizestr) > > - return -EINVAL; > > + ret = udev_device_parse_sysattr_u64(dev, "size", &size); > > + if (ret) > > + return ret; > > > > - *size = atol(sizestr); > > + *outsize = size; > > > > outpath = udev_device_get_devnode(dev); > > if (!outpath) > > -- > > 2.39.2 > > > > > > > > -- > Roland Hieber, Pengutronix e.K. | r.hieber@pengutronix.de | > Steuerwalder Str. 21 | https://www.pengutronix.de/ | > 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | > Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | > > -- Roland Hieber, Pengutronix e.K. | r.hieber@pengutronix.de | Steuerwalder Str. 21 | https://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |