All of lore.kernel.org
 help / color / mirror / Atom feed
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);

  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.