From: Wolfram Sang <wsa@kernel.org>
To: Paul Wise <pabs3@bonedaddy.net>
Cc: Jean Delvare <jdelvare@suse.de>, linux-i2c@vger.kernel.org
Subject: Re: [PATCH i2c-tools v2] i2cdetect: add messages for errors during bus listing
Date: Wed, 14 Jun 2023 23:31:05 +0200 [thread overview]
Message-ID: <ZIoxmbo9Cu+bPHsF@shikoro> (raw)
In-Reply-To: <20230526002445.57064-1-pabs3@bonedaddy.net>
[-- Attachment #1: Type: text/plain, Size: 2944 bytes --]
Hi Paul,
thank you for this patch!
> This makes it easier for new users to understand what is going on when
> they have a problem listing i2c busses that they do not understand.
I like this basically. I do have questions, though.
> @@ -199,6 +218,13 @@ struct i2c_adap *gather_i2c_busses(void)
> /* look in sysfs */
> /* First figure out where sysfs was mounted */
> if ((f = fopen("/proc/mounts", "r")) == NULL) {
> + fprintf(stderr, "Error: Could not open /proc/mounts: "
> + "%s\n", strerror(errno));
> + if (errno == ENOENT) {
> + fprintf(stderr, "Please mount procfs: "
> + "%smount -t procfs proc /proc\n",
> + getenv("SUDO_COMMAND") ? "sudo " : "");
Hmm, I wonder if a simple "Is it mounted?" isn't enough?
> + fprintf(stderr, "Error: Could not find sysfs mount\n");
> + fprintf(stderr, "Please mount sysfs: "
> + "%smount -t sysfs sysfs /sys\n",
> + getenv("SUDO_COMMAND") ? "sudo " : "");
Ditto.
> goto done;
> }
>
> /* Bus numbers in i2c-adapter don't necessarily match those in
> i2c-dev and what we really care about are the i2c-dev numbers.
> Unfortunately the names are harder to get in i2c-dev */
> + sysfs_end = strlen(sysfs);
> strcat(sysfs, "/class/i2c-dev");
> - if(!(dir = opendir(sysfs)))
> + if (!(dir = opendir(sysfs))) {
> + if (errno == ENOENT) {
> + /* Check if there are i2c bus devices in other dirs
> + as when there are none the error isn't useful
> + as loading i2c-dev also won't find devices */
> + int devices_present = 0;
> + strcpy(sysfs + sysfs_end, "/bus/i2c/devices");
> + devices_present = dir_has_entries(sysfs);
> + if (! devices_present) {
> + strcpy(sysfs + sysfs_end, "/class/i2c-adapter");
> + devices_present = dir_has_entries(sysfs);
> + }
> + if (devices_present) {
> + fprintf(stderr, "Error: Could not find dir "
> + "`%s`\n", sysfs);
> + fprintf(stderr, "Please load i2c-dev: "
> + "%smodprobe i2c-dev\n",
> + getenv("SUDO_COMMAND") ? "sudo " : "");
> + }
If there are no devices_present here, then we fail without printing
something? Is this intended?
> + } else {
> + fprintf(stderr, "Error: Could not open dir "
> + "`%s': %s\n", sysfs, strerror(errno));
Despite the above detail, I think this adds quite some code (also
counting dir_has_entries). Since I think we need i2c-dev anyway, can't
we just do:
1) say "please load i2c-dev" if it is not loaded
2) say "could not open dir" if it is loaded
Yes, for rare cases this could mean that loading "i2c-dev" does not
solve the problem, but using i2ctools without i2c-dev is going to fail
at some point anyhow, so IMHO we can complain about this early?
Makes sense? Did I miss something?
Happy hacking,
Wolfram
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2023-06-14 21:31 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-26 0:24 [PATCH i2c-tools v2] i2cdetect: add messages for errors during bus listing Paul Wise
2023-06-14 21:31 ` Wolfram Sang [this message]
2023-06-15 1:51 ` Paul Wise
2023-06-19 14:37 ` Jean Delvare
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=ZIoxmbo9Cu+bPHsF@shikoro \
--to=wsa@kernel.org \
--cc=jdelvare@suse.de \
--cc=linux-i2c@vger.kernel.org \
--cc=pabs3@bonedaddy.net \
/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