From: Jonathan Cameron <jic23@kernel.org>
To: Hartmut Knaack <knaack.h@gmx.de>, linux-iio@vger.kernel.org
Cc: Lars-Peter Clausen <lars@metafoo.de>,
Peter Meerwald <pmeerw@pmeerw.net>,
Roberta Dobrescu <roberta.dobrescu@gmail.com>,
Daniel Baluta <daniel.baluta@intel.com>,
Irina Tirdea <irina.tirdea@intel.com>
Subject: Re: [PATCH 14/32] tools:iio:iio_utils: implement digit calculation
Date: Sun, 31 May 2015 19:19:19 +0100 [thread overview]
Message-ID: <556B50A7.9060205@kernel.org> (raw)
In-Reply-To: <70d40a8692e2f83fc72eb1d0ea9a011d5b62e37e.1433072539.git.knaack.h@gmx.de>
On 31/05/15 13:40, Hartmut Knaack wrote:
> Previously, the return value of sscanf() was treated as an indication of
> the digits it would have read. Yet, sscanf() only returns the amount of
> valid matches.
> Therefore, introduce a function to calculate the decimal digits of the
> read number and use this one to commence a colon search, as originally
> intended.
>
> Signed-off-by: Hartmut Knaack <knaack.h@gmx.de>
Applied. Ouch.
> ---
> tools/iio/iio_utils.c | 35 +++++++++++++++++++++++++++++++----
> 1 file changed, 31 insertions(+), 4 deletions(-)
>
> diff --git a/tools/iio/iio_utils.c b/tools/iio/iio_utils.c
> index c5b4136..60e5ec4 100644
> --- a/tools/iio/iio_utils.c
> +++ b/tools/iio/iio_utils.c
> @@ -431,6 +431,18 @@ error_ret:
> return ret;
> }
>
> +int calc_digits(int num)
> +{
> + int count = 0;
> +
> + while (num != 0) {
> + num /= 10;
> + count++;
> + }
> +
> + return count;
> +}
> +
> /**
> * find_type_by_name() - function to match top level types by name
> * @name: top level type instance name
> @@ -441,7 +453,7 @@ error_ret:
> int find_type_by_name(const char *name, const char *type)
> {
> const struct dirent *ent;
> - int number, numstrlen;
> + int number, numstrlen, ret;
>
> FILE *nameFile;
> DIR *dp;
> @@ -459,9 +471,19 @@ int find_type_by_name(const char *name, const char *type)
> strcmp(ent->d_name, "..") != 0 &&
> strlen(ent->d_name) > strlen(type) &&
> strncmp(ent->d_name, type, strlen(type)) == 0) {
> - numstrlen = sscanf(ent->d_name + strlen(type),
> - "%d",
> - &number);
> + errno = 0;
> + ret = sscanf(ent->d_name + strlen(type), "%d", &number);
> + if (ret < 0) {
> + ret = -errno;
> + printf("failed to read element number\n");
> + goto error_close_dir;
> + } else if (ret != 1) {
> + ret = -EIO;
> + printf("failed to match element number\n");
> + goto error_close_dir;
> + }
> +
> + numstrlen = calc_digits(number);
> /* verify the next character is not a colon */
> if (strncmp(ent->d_name + strlen(type) + numstrlen,
> ":",
> @@ -495,6 +517,11 @@ int find_type_by_name(const char *name, const char *type)
> }
> closedir(dp);
> return -ENODEV;
> +
> +error_close_dir:
> + if (closedir(dp) == -1)
> + perror("find_type_by_name(): Failed to close directory");
> + return ret;
> }
>
> int _write_sysfs_int(char *filename, char *basedir, int val, int verify)
>
next prev parent reply other threads:[~2015-06-01 21:16 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-31 12:39 [PATCH 00/32] iio-tools out-of-staging cleanup Hartmut Knaack
2015-05-31 12:39 ` [PATCH 01/32] tools:iio:generic_buffer: fix order of freeing data Hartmut Knaack
2015-05-31 16:13 ` Jonathan Cameron
2015-05-31 12:39 ` [PATCH 02/32] tools:iio:generic_buffer: free dev_dir_name on exit Hartmut Knaack
2015-05-31 16:17 ` Jonathan Cameron
2015-05-31 12:39 ` [PATCH 03/32] tools:iio:iio_utils: free scan_el_dir " Hartmut Knaack
2015-05-31 16:19 ` Jonathan Cameron
2015-05-31 12:39 ` [PATCH 04/32] tools:iio: free channel-array completely Hartmut Knaack
2015-05-31 16:20 ` Jonathan Cameron
2015-05-31 12:39 ` [PATCH 05/32] tools:iio:iio_utils: fix allocation handling Hartmut Knaack
2015-05-31 16:23 ` Jonathan Cameron
2015-05-31 12:39 ` [PATCH 06/32] tools:iio:generic_buffer: add check before free Hartmut Knaack
2015-05-31 16:29 ` Jonathan Cameron
2015-05-31 12:39 ` [PATCH 07/32] tools:iio:lsiio: add closedir before exit Hartmut Knaack
2015-05-31 16:30 ` Jonathan Cameron
2015-05-31 12:39 ` [PATCH 08/32] tools:iio: save errno first Hartmut Knaack
2015-05-31 16:33 ` Jonathan Cameron
2015-05-31 12:39 ` [PATCH 09/32] tools:iio:iio_event_monitor: save right errno Hartmut Knaack
2015-05-31 16:34 ` Jonathan Cameron
2015-05-31 12:39 ` [PATCH 10/32] tools:iio:generic_buffer: fix check of errno Hartmut Knaack
2015-05-31 16:35 ` Jonathan Cameron
2015-05-31 12:39 ` [PATCH 11/32] tools:iio:generic_buffer: pass up right error code Hartmut Knaack
2015-05-31 16:36 ` Jonathan Cameron
2015-05-31 12:39 ` [PATCH 12/32] tools:iio:generic_buffer: sign-extend and shift data Hartmut Knaack
2015-05-31 16:41 ` Jonathan Cameron
2015-05-31 12:39 ` [PATCH 13/32] tools:iio:iio_utils: check amount of matches Hartmut Knaack
2015-05-31 16:41 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 14/32] tools:iio:iio_utils: implement digit calculation Hartmut Knaack
2015-05-31 18:19 ` Jonathan Cameron [this message]
2015-05-31 12:40 ` [PATCH 15/32] tools:iio:iio_utils: mark private function static Hartmut Knaack
2015-05-31 12:40 ` [PATCH 16/32] tools:iio: catch errors in string allocation Hartmut Knaack
2015-05-31 18:21 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 17/32] tools:iio:generic_buffer: catch errors for arguments conversion Hartmut Knaack
2015-05-31 12:40 ` [PATCH 18/32] tools:iio:generic_buffer: add error handling Hartmut Knaack
2015-05-31 12:40 ` [PATCH 19/32] tools:iio:iio_event_monitor: " Hartmut Knaack
2015-05-31 18:25 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 20/32] tools:iio:iio_event_monitor: check if event is fully read Hartmut Knaack
2015-05-31 18:36 ` Jonathan Cameron
2015-06-01 22:00 ` Hartmut Knaack
2015-05-31 12:40 ` [PATCH 21/32] tools:iio:iio_utils: add error handling Hartmut Knaack
2015-05-31 18:44 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 22/32] tools:iio:lsiio: " Hartmut Knaack
2015-05-31 18:45 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 23/32] tools:iio:iio_utils: add missing documentation Hartmut Knaack
2015-06-01 7:33 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 24/32] tools:iio: return values directly Hartmut Knaack
2015-06-01 7:34 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 25/32] tools:iio:iio_event_monitor: refactor events output Hartmut Knaack
2015-06-01 7:34 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 26/32] tools:iio:iio_utils: refactor assignment of is_signed Hartmut Knaack
2015-06-01 7:35 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 27/32] tools:iio:iio_utils: move up reset of sysfsfp Hartmut Knaack
2015-06-01 7:37 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 28/32] tools:iio:iio_utils: initialize count during declaration Hartmut Knaack
2015-06-01 7:38 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 29/32] tools:iio: rework program parameters Hartmut Knaack
2015-06-01 7:40 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 30/32] tools:iio:iio_utils: pass strings as const Hartmut Knaack
2015-06-01 7:40 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 31/32] tools:iio: adjust coding style Hartmut Knaack
2015-06-01 7:46 ` Jonathan Cameron
2015-05-31 12:40 ` [PATCH 32/32] tools:iio: rename variables Hartmut Knaack
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=556B50A7.9060205@kernel.org \
--to=jic23@kernel.org \
--cc=daniel.baluta@intel.com \
--cc=irina.tirdea@intel.com \
--cc=knaack.h@gmx.de \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=pmeerw@pmeerw.net \
--cc=roberta.dobrescu@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).