From: Kay Sievers <kay.sievers@vrfy.org>
To: linux-hotplug@vger.kernel.org
Subject: Re: [PATCH] udev - fix "ignore method"
Date: Mon, 09 Feb 2004 23:41:53 +0000 [thread overview]
Message-ID: <20040209234153.GB14337@vrfy.org> (raw)
In-Reply-To: <20040208153601.GD10390@vrfy.org>
[-- Attachment #1: Type: text/plain, Size: 268 bytes --]
On Sun, Feb 08, 2004 at 04:36:01PM +0100, Kay Sievers wrote:
> We don't handle NAME="" the right way. Thanks to Emil None <emil71se@yahoo.com>
> for pointing this out. Here is a fix for it and a trivial style cleanup.
Changed the ignore dbg() to info().
thanks,
Kay
[-- Attachment #2: 01-empty-name.patch --]
[-- Type: text/plain, Size: 6347 bytes --]
diff -Nru a/namedev.c b/namedev.c
--- a/namedev.c Tue Feb 10 00:39:15 2004
+++ b/namedev.c Tue Feb 10 00:39:15 2004
@@ -589,12 +589,12 @@
if (dev->bus[0] != '\0') {
if (sysfs_device == NULL) {
dbg("device has no bus");
- goto no_good;
+ goto try_parent;
}
dbg("check for " FIELD_BUS " dev->bus='%s' sysfs_device->bus='%s'", dev->bus, sysfs_device->bus);
if (strcmp_pattern(dev->bus, sysfs_device->bus) != 0) {
dbg(FIELD_BUS " is not matching");
- goto no_good;
+ goto try_parent;
} else {
dbg(FIELD_BUS " matches");
}
@@ -605,7 +605,7 @@
dbg("check for " FIELD_KERNEL " dev->kernel='%s' class_dev->name='%s'", dev->kernel, class_dev->name);
if (strcmp_pattern(dev->kernel, class_dev->name) != 0) {
dbg(FIELD_KERNEL " is not matching");
- goto no_good;
+ goto try_parent;
} else {
dbg(FIELD_KERNEL " matches");
}
@@ -616,7 +616,7 @@
dbg("check " FIELD_ID);
if (match_id(dev, class_dev, sysfs_device) != 0) {
dbg(FIELD_ID " is not matching");
- goto no_good;
+ goto try_parent;
} else {
dbg(FIELD_ID " matches");
}
@@ -627,7 +627,7 @@
dbg("check " FIELD_PLACE);
if (match_place(dev, class_dev, sysfs_device) != 0) {
dbg(FIELD_PLACE " is not matching");
- goto no_good;
+ goto try_parent;
} else {
dbg(FIELD_PLACE " matches");
}
@@ -638,7 +638,7 @@
dbg("check " FIELD_SYSFS " pairs");
if (match_sysfs_pairs(dev, class_dev, sysfs_device) != 0) {
dbg(FIELD_SYSFS " is not matching");
- goto no_good;
+ goto try_parent;
} else {
dbg(FIELD_SYSFS " matches");
}
@@ -650,7 +650,7 @@
apply_format(udev, dev->program);
if (execute_program(dev->program, udev->program_result, NAME_SIZE) != 0) {
dbg(FIELD_PROGRAM " returned nozero");
- goto no_good;
+ goto try_parent;
} else {
dbg(FIELD_PROGRAM " returned successful");
}
@@ -663,22 +663,17 @@
dev->result, udev->program_result);
if (strcmp_pattern(dev->result, udev->program_result) != 0) {
dbg(FIELD_RESULT " is not matching");
- goto no_good;
+ goto try_parent;
} else {
dbg(FIELD_RESULT " matches");
}
}
- /* check if we are instructed to ignore this device */
- if (dev->name[0] == '\0') {
- dbg("instructed to ignore this device");
- return -1;
- }
-
/* Yeah, we matched! */
return 0;
-no_good:
+try_parent:
+ dbg("try parent sysfs device");
sysfs_device = sysfs_get_device_parent(sysfs_device);
if (sysfs_device == NULL)
return -ENODEV;
@@ -722,11 +717,15 @@
/* look for a matching rule to apply */
list_for_each_entry(dev, &config_device_list, node) {
dbg("process rule");
-
if (match_rule(dev, class_dev, udev, sysfs_device) == 0) {
- /* Yup, this rule belongs to us! */
+ if (dev->name[0] == '\0') {
+ info("configured rule in '%s' at line %i applied, '%s' is ignored",
+ udev_rules_filename, dev->config_line, udev->kernel_name);
+ return -1;
+ }
+
info("configured rule in '%s' at line %i applied, '%s' becomes '%s'",
- udev_rules_filename, dev->config_line, udev->kernel_name, dev->name);
+ udev_rules_filename, dev->config_line, udev->kernel_name, dev->name);
strfieldcpy(udev->name, dev->name);
strfieldcpy(udev->symlink, dev->symlink);
goto found;
diff -Nru a/udev-add.c b/udev-add.c
--- a/udev-add.c Tue Feb 10 00:39:15 2004
+++ b/udev-add.c Tue Feb 10 00:39:15 2004
@@ -87,7 +87,7 @@
*pos = 0x00;
if (stat(p, &stats)) {
retval = mkdir(p, 0755);
- if (retval) {
+ if (retval != 0) {
dbg("mkdir(%s) failed with error '%s'",
p, strerror(errno));
return retval;
@@ -145,17 +145,17 @@
info("creating device node '%s'", filename);
dbg("mknod(%s, %#o, %u, %u)", filename, dev->mode, dev->major, dev->minor);
retval = mknod(filename, dev->mode, res);
- if (retval)
+ if (retval != 0)
dbg("mknod(%s, %#o, %u, %u) failed with error '%s'",
filename, dev->mode, dev->major, dev->minor, strerror(errno));
dbg("chmod(%s, %#o)", filename, dev->mode);
retval = chmod(filename, dev->mode);
- if (retval)
+ if (retval != 0)
dbg("chmod(%s, %#o) failed with error '%s'",
filename, dev->mode, strerror(errno));
- if (dev->owner[0]) {
+ if (dev->owner[0] != '\0') {
char *endptr;
unsigned long id = strtoul(dev->owner, &endptr, 10);
if (endptr[0] == '\0')
@@ -169,7 +169,7 @@
}
}
- if (dev->group[0]) {
+ if (dev->group[0] != '\0') {
char *endptr;
unsigned long id = strtoul(dev->group, &endptr, 10);
if (endptr[0] == '\0')
@@ -183,16 +183,16 @@
}
}
- if (uid || gid) {
+ if (uid != 0 || gid != 0) {
dbg("chown(%s, %u, %u)", filename, uid, gid);
retval = chown(filename, uid, gid);
- if (retval)
+ if (retval != 0)
dbg("chown(%s, %u, %u) failed with error '%s'",
filename, uid, gid, strerror(errno));
}
/* create symlink if requested */
- if (dev->symlink[0]) {
+ if (dev->symlink[0] != '\0') {
symlinks = dev->symlink;
while (1) {
linkname = strsep(&symlinks, " ");
@@ -214,13 +214,13 @@
tail = i+1;
i++;
}
- while (linkname[i]) {
+ while (linkname[i] != '\0') {
if (linkname[i] == '/')
strcat(linktarget, "../");
i++;
}
- if (*linktarget == '\0')
+ if (linktarget[0] == '\0')
strcpy(linktarget, "./");
strcat(linktarget, &dev->name[tail]);
@@ -236,7 +236,7 @@
dbg("symlink(%s, %s)", linktarget, filename);
retval = symlink(linktarget, filename);
- if (retval)
+ if (retval != 0)
dbg("symlink(%s, %s) failed with error '%s'",
linktarget, filename, strerror(errno));
}
@@ -285,7 +285,7 @@
dbg("looking for '%s'", filename);
retval = stat(filename, &buf);
- if (!retval)
+ if (retval == 0)
goto exit;
/* sleep to give the kernel a chance to create the dev file */
@@ -311,7 +311,7 @@
dev.type = 'c';
retval = sleep_for_dev(path);
- if (retval)
+ if (retval != 0)
goto exit;
class_dev = get_class_dev(path);
@@ -319,13 +319,13 @@
goto exit;
retval = get_major_minor(class_dev, &dev);
- if (retval) {
+ if (retval != 0) {
dbg("get_major_minor failed");
goto exit;
}
retval = namedev_name_device(class_dev, &dev);
- if (retval)
+ if (retval != 0)
goto exit;
retval = udevdb_add_dev(path, &dev);
next prev parent reply other threads:[~2004-02-09 23:41 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-02-08 15:36 [PATCH] udev - fix "ignore method" Kay Sievers
2004-02-09 23:41 ` Kay Sievers [this message]
2004-02-11 22:30 ` Greg KH
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=20040209234153.GB14337@vrfy.org \
--to=kay.sievers@vrfy.org \
--cc=linux-hotplug@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.