From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrey Borzenkov Date: Sun, 22 Feb 2004 09:50:13 +0000 Subject: [PATCH] symlink only rules support Message-Id: <20040222095013.GD4873@localhost.localdomain> MIME-Version: 1 Content-Type: multipart/mixed; boundary="TYecfFk8j8mZq+dy" List-Id: To: linux-hotplug@vger.kernel.org --TYecfFk8j8mZq+dy Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Tue, Feb 17, 2004 at 09:29:53AM -0800, Greg KH wrote: > > > > What about the second part (allow symlink-only rules)? > > Yes, I think that would be good to have too. Just split the patches up > into two pieces, only one patch per feature/fix. > Slightly modified version. It is less aggressive in that it just adds symlink collection but otherwise behaves exactly like current code. the patch is relative to previous one (configuration directory support). regards -andrey --TYecfFk8j8mZq+dy Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="udev018_symlink.patch" --- udev-018/namedev.c.symlink 2004-02-21 21:57:19.000000000 +0300 +++ udev-018/namedev.c 2004-02-21 22:19:59.747075352 +0300 @@ -805,17 +805,30 @@ int namedev_name_device(struct sysfs_cla list_for_each_entry(dev, &config_device_list, node) { dbg("process rule"); if (match_rule(dev, class_dev, udev, sysfs_device) == 0) { - if (dev->name[0] == '\0') { + if (dev->name[0] == '\0' && dev->symlink[0] == '\0') { info("configured rule in '%s' at line %i applied, '%s' is ignored", dev->config_file, dev->config_line, udev->kernel_name); return -1; } - info("configured rule in '%s' at line %i applied, '%s' becomes '%s'", - dev->config_file, dev->config_line, udev->kernel_name, dev->name); - strfieldcpy(udev->name, dev->name); - strfieldcpy(udev->symlink, dev->symlink); - goto found; + if (dev->symlink[0] != '\0') { + char temp[NAME_MAX]; + + info("configured rule in '%s' at line %i applied, added symlink '%s'", + dev->config_file, dev->config_line, dev->symlink); + /* do not clobber dev */ + strfieldcpy(temp, dev->symlink); + apply_format(udev, temp, class_dev, sysfs_device); + strfieldcat(udev->symlink, temp); + strfieldcat(udev->symlink, " "); + } + + if (dev->name[0] != '\0') { + info("configured rule in '%s' at line %i applied, '%s' becomes '%s'", + dev->config_file, dev->config_line, udev->kernel_name, dev->name); + strfieldcpy(udev->name, dev->name); + goto found; + } } } @@ -826,7 +839,6 @@ int namedev_name_device(struct sysfs_cla found: /* substitute placeholder */ apply_format(udev, udev->name, class_dev, sysfs_device); - apply_format(udev, udev->symlink, class_dev, sysfs_device); udev->partitions = dev->partitions; done: perm = find_perm(udev->name); --- udev-018/udev.h.symlink 2004-02-19 21:38:37.000000000 +0300 +++ udev-018/udev.h 2004-02-21 22:21:44.431160952 +0300 @@ -61,6 +61,12 @@ do { \ strncpy(to, from, sizeof(to)-1); \ } while (0) +#define strfieldcat(to, from) \ +do { \ + to[sizeof(to)-1] = '\0'; \ + strncat(to, from, sizeof(to)-1); \ +} while (0) + extern int udev_add_device(char *path, char *subsystem, int fake); extern int udev_remove_device(char *path, char *subsystem); extern void udev_init_config(void); --TYecfFk8j8mZq+dy-- ------------------------------------------------------- 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