From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.zeus03.de (zeus03.de [194.117.254.33]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 740922DEA68 for ; Thu, 9 Jul 2026 12:18:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=194.117.254.33 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783599497; cv=none; b=rtRKqj8n+i3ERPYs9K8kMvnIIKXVQbN0GSNCuFQl4ilfiIkzIJ8ElA8samvSbr6Nkc6MG5q9FsTb8rCO3i060nJFnRsMWHNDQc3I6TawJWF4VwItcooYPbvNlVIBDvXWI2qT53KRQgYjRiDIoaTCMmakwK8hUlRgB/SpYai7PkE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783599497; c=relaxed/simple; bh=1+0MPpP3BVOnqsn95KiyXoIsalvmw6r+aIX9Orh6z3Q=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=ZMnzlwA+2IlpYEzLlAquzTaVCp/OR+3A6mgMTWWbh+MeV0XMqbfi5iWyAZizCCwDY/AHhSQkbiXsp5TWcJYPxP2PSi9JivEPQyQ6vTVWqMPlT6CXvlShLvfN0RMYApC5SM8NgoC+NEl5LtxOZ80Ol1LbGeQIaSA7tdRT6PqQf9Q= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com; spf=pass smtp.mailfrom=sang-engineering.com; dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b=Pgl6sLZm; arc=none smtp.client-ip=194.117.254.33 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sang-engineering.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b="Pgl6sLZm" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= sang-engineering.com; h=date:from:to:cc:subject:message-id :references:mime-version:content-type:in-reply-to; s=k1; bh=4n15 g4s/0Vya5QOLKiKNpTS0uNKb6TchiIZghe16wpw=; b=Pgl6sLZm/BnU30Fi7nwG qyscIpqBK39Yq5pGS8AKMOre8gWddceYSifJUt2U+mzgB3nM+PbyNPI0tXJdZF1I vMbZBxLYY65XTx6q8rqgMGvq/vAKncXLXQqXxfOVzvFXKLUgDb6jMsbfkMr086Aa 43z2O6+5DgNpaPQVzH1LHV1slpL9NssmvEAdbbzZzG3AFIXUyhQ43t3zWn9/sDjq C/r4/x8yPlbefrqASbvd4nwWPDF8yUJG/OJcRmWvHEVIa7zqmU+OrAF5FF9ITxw4 2pOary93wjVxwdmCrHcYHhUY0VKeNOY/PqiCYfGS57i3ge7SmP5ak6AxNTi3eRBs XQ== Received: (qmail 1122847 invoked from network); 9 Jul 2026 14:18:09 +0200 Received: by mail.zeus03.de with ESMTPSA (TLS_AES_256_GCM_SHA384 encrypted, authenticated); 9 Jul 2026 14:18:09 +0200 X-UD-Smtp-Session: l3s3148p1@3gz4nSxWVNBQT+F6 Date: Thu, 9 Jul 2026 14:18:08 +0200 From: Wolfram Sang To: Brigham Campbell Cc: Jean Delvare , linux-i2c@vger.kernel.org, Gero =?utf-8?Q?Schw=C3=A4ricke?= Subject: Re: [PATCH v4 1/2] i2c-tools: Allow passing device file paths Message-ID: References: <20260705-accept-device-path-v4-0-c62caa708a9e@brighamcampbell.com> <20260705-accept-device-path-v4-1-c62caa708a9e@brighamcampbell.com> Precedence: bulk X-Mailing-List: linux-i2c@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="iwZE52N4aIkUCgK5" Content-Disposition: inline In-Reply-To: <20260705-accept-device-path-v4-1-c62caa708a9e@brighamcampbell.com> --iwZE52N4aIkUCgK5 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Sun, Jul 05, 2026 at 10:27:53PM -0600, Brigham Campbell wrote: > Make i2c-tools binaries accept a device file path or symlink directly. > This is useful, for example, for use with stable symlinks generated by > udev. >=20 > In the case of conflict, the bus parameter is parsed with the following > precedence in order to maintain backwards compatibility: >=20 > number -> name -> device path >=20 > Suggested-by: Gero Schw=C3=A4ricke > Signed-off-by: Brigham Campbell I general, I like the approach. There is only some inconsistency in the error reporting which is done twice now: $ sudo tools/i2cdetect -F "i915 gmbus dpe" Error: Could not open file `i915 gmbus dpe': No such file or directory Failed to open `i915 gmbus dpe' as a bus name and as a path. Here is my proposed solution as it is easier to discuss code. What do you think? In a second step, we could move open_i2c_dev_num() up in the code, make it static, and remove it from the header. Then, only open_i2c_dev() would stay in the public header. I'd think the tools themselves shouldn't know about the differences how to reach the adapter. Or? =46rom: Wolfram Sang Date: Thu, 9 Jul 2026 14:09:41 +0200 Subject: [PATCH i2c-tools] improve error reporting --- tools/i2cbusses.c | 21 +++++---------------- tools/i2cbusses.h | 1 - 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/tools/i2cbusses.c b/tools/i2cbusses.c index 54f3238..67e268a 100644 --- a/tools/i2cbusses.c +++ b/tools/i2cbusses.c @@ -442,20 +442,6 @@ int open_i2c_dev_num(int i2cbus, char *filename, size_= t size, int quiet) return file; } =20 -int open_i2c_dev_path(const char *i2cbus_arg, int quiet) -{ - int file =3D open(i2cbus_arg, O_RDWR); - - if (file < 0 && !quiet) { - fprintf(stderr, "Error: Could not open file " - "`%s': %s\n", i2cbus_arg, strerror(errno)); - if (errno =3D=3D EACCES) - fprintf(stderr, "Run as root?\n"); - } - - return file; -} - int open_i2c_dev(char *i2cbus_arg, char **filename, size_t size, int quiet) { int file, i2cbus; @@ -464,10 +450,13 @@ int open_i2c_dev(char *i2cbus_arg, char **filename, s= ize_t size, int quiet) =20 if (i2cbus < 0) { *filename =3D i2cbus_arg; - file =3D open_i2c_dev_path(i2cbus_arg, quiet); - if (file < 0) + file =3D open(i2cbus_arg, O_RDWR); + if (file < 0 && !quiet) { fprintf(stderr, "Failed to open `%s' as a bus name " "and as a path.\n", i2cbus_arg); + if (errno =3D=3D EACCES) + fprintf(stderr, "Run as root?\n"); + } return file; } =20 diff --git a/tools/i2cbusses.h b/tools/i2cbusses.h index 5de3056..542d291 100644 --- a/tools/i2cbusses.h +++ b/tools/i2cbusses.h @@ -33,7 +33,6 @@ int lookup_i2c_bus(const char *i2cbus_arg); int parse_i2c_address(const char *address_arg, int all_addrs); int open_i2c_dev(char *i2cbus_arg, char **filename, size_t size, int quiet= ); int open_i2c_dev_num(int i2cbus, char *filename, size_t size, int quiet); -int open_i2c_dev_path(const char *i2cbus_arg, int quiet); int set_slave_addr(int file, int address, int force); =20 #define MISSING_FUNC_FMT "Error: Adapter does not have %s capability\n" --iwZE52N4aIkUCgK5 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmpPkXwACgkQFA3kzBSg KbZQxg/8DB1d0bULN4U/BsaMM46YelQW7ybVbVPO3XMNGfISapwDtXyn5jE96s1i /TcKO7g4yTW6rBcd2r9yKbKsHuvIim5bXT+Imh+qdq2TEQ6c3cbe4CgTAjF7vqkN 3zxKhAkkRlmaw/pPeyYYV4iC/wLRHdNwrZOSHv4cajLF6tP8NX9Bu8BMR/vehlGp JKjRHhbu1c6SqqZYbJ/jugWmnnEh2BN7CCmt0W4+wCjXm5XI1yrQ61R1uGBtq2Vk IqXPvIHVmmihTF0EuxhDrPgwbZedWOE7y+B8LInNbaaEfxXKTQ7GI404PV3nn0EF Gqz5UyW9HhdjB4fcEbsqISiNsd+x07PVXZ1UJfQLXuXwQx756HV49etk+k+Rf1Tc T7CEAcXCUXPNU7x4zJs7JNkxJhu7zcy6hWXW1vuQT5gJuSMsUgwSla9kbOGZutIz 0DVteuRYPJf20JXyIn/QJSRaY3ORzmjAmPVrXieU+0lLmYX9ZU9ejd1PkacEEehU xrceZx+la83sbPQRfXi9amG+4KROUSiQd7k2KilLbQnozxR/dipns4DL3RDYJwmJ qMZcK4tjvG/Y/2cSvq8LeXpQpZVaI44ZLhviCPUOEq0AZLFpKOOq3G0QSWWU2PZx SJKRCV7K9QIUwR85Ko3P+njYhnk3VwYIQyvhpc4pY8bMxiCXCVk= =QIEH -----END PGP SIGNATURE----- --iwZE52N4aIkUCgK5--