From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kay Sievers Date: Sun, 15 Feb 2004 02:36:00 +0000 Subject: Re: [PATCH] Adding '%s' format specifier to NAME and SYMLINK Message-Id: <20040215023600.GA1210@vrfy.org> MIME-Version: 1 Content-Type: multipart/mixed; boundary="FCuugMFkClbJLl1L" List-Id: References: <402892DC.4000003@suse.de> In-Reply-To: <402892DC.4000003@suse.de> To: linux-hotplug@vger.kernel.org --FCuugMFkClbJLl1L Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Sat, Feb 14, 2004 at 07:32:58PM +0100, Kay Sievers wrote: > On Thu, Feb 12, 2004 at 05:34:57PM -0800, Greg KH wrote: > > On Tue, Feb 10, 2004 at 09:14:20AM +0100, Hannes Reinecke wrote: > > > Hi all, > > > > > > this patch makes the format for NAME and SYMLINK a bit more flexible: > > > I've added a new format specifier '%s{}', which allows for > > > the value of any sysfs entry found for this device to be inserted. > > > Example (for our S/390 fcp adapter): > > > > > > BUS="ccw", SYSFS_devtype="1732/03", NAME="%k" \ > > > SYMLINK="zfcp-%s{hba_id}-%s{wwpn}:%s{fcp_lun}" > > > > > > I know this could also be done with an external program, but having this > > > incorporated into udev makes life easier, especially if run from > > > initramfs. Plus it makes the rules easier to follow, as the result is > > > directly visible and need not to be looked up in some external program. > > > > > > Comments etc. welcome. > > > > Oops, sorry I missed this for the 017 release. I'll look at it tomorrow > > and get back to you. At first glance it looks like a good thing. > > > > Oh, you forgot to update the documentation, that's important to do if > > you want this change to make it in :) > > I took a part of the code and made a version that uses already implemented > attribute finding logic. > > The parsing of the format length '%3x' and the '%x{attribute}' is a fuction now, > maybe there are more possible users in the future. > > I've also added the test to udev-test.pl. Since we have %s{file} it may be nice to allow SYSFS{file}. This patch allows: BUS="usb", SYSFS{idProduct}="a511", NAME="video%n" compared to the current: BUS="usb", SYSFS_idProduct="a511", NAME="video%n" The curent syntax is still supported. Looks a bit nicer and less hackish, I think. thanks, Kay --FCuugMFkClbJLl1L Content-Type: text/plain; charset=us-ascii Content-Disposition: inline; filename="02-brackets_for_parser.patch" diff -Nru a/namedev_parse.c b/namedev_parse.c --- a/namedev_parse.c Sun Feb 15 03:18:44 2004 +++ b/namedev_parse.c Sun Feb 15 03:18:44 2004 @@ -92,6 +92,7 @@ char *temp; char *temp2; char *temp3; + char *pos; FILE *fd; int program_given = 0; int retval = 0; @@ -150,7 +151,7 @@ continue; } - if (strncasecmp(temp2, FIELD_SYSFS, sizeof(FIELD_SYSFS)-1) == 0) { + if (strncasecmp(temp2, FIELD_SYSFS, sizeof(FIELD_SYSFS)-2) == 0) { struct sysfs_pair *pair = &dev.sysfs_pair[0]; int sysfs_pair_num = 0; @@ -164,8 +165,11 @@ ++pair; } if (pair) { - /* remove prepended 'SYSFS_' */ + /* extract file from 'SYSFS{file}' or 'SYSFS_file' */ strfieldcpy(pair->file, temp2 + sizeof(FIELD_SYSFS)-1); + pos = strchr(pair->file, '}'); + if (pos != NULL) + pos[0] = '\0'; strfieldcpy(pair->value, temp3); } continue; diff -Nru a/test/udev-test.pl b/test/udev-test.pl --- a/test/udev-test.pl Sun Feb 15 03:18:44 2004 +++ b/test/udev-test.pl Sun Feb 15 03:18:44 2004 @@ -194,6 +194,16 @@ EOF }, { + desc => "select sysfs attribute by SYFS{vendor}", + subsys => "block", + devpath => "block/sda", + expected => "disk-IBM-ESXS-sda" , + conf => < "sustitution of sysfs value (%s{file})", subsys => "block", devpath => "block/sda", --FCuugMFkClbJLl1L-- ------------------------------------------------------- SF.Net is sponsored by: Speed Start Your Linux Apps Now. Build and deploy apps & Web services for Linux with a free DVD software kit from IBM. Click Now! http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click _______________________________________________ Linux-hotplug-devel mailing list http://linux-hotplug.sourceforge.net Linux-hotplug-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel