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] allow to specify node permissions in the rule
Date: Fri, 12 Mar 2004 02:20:21 +0000	[thread overview]
Message-ID: <20040312022021.GA2208@vrfy.org> (raw)
In-Reply-To: <20040307011223.GA22054@vrfy.org>

[-- Attachment #1: Type: text/plain, Size: 572 bytes --]

On Thu, Mar 11, 2004 at 05:07:57PM -0800, Greg KH wrote:
> On Thu, Mar 11, 2004 at 03:18:43AM +0100, Kay Sievers wrote:
> > > Any chance on being able to add a test for this kind of stuff to the
> > > udev-test.pl script?
> > 
> > Sure, not brilliant but seems to work :)
> > Only numeric id's are supported so far.
> 
> Nice, that's a good start.  Now we need to check the major:minor values
> too somehow...

I better do it immediately, before you put it in the empty TODO :)

Patch is a bit big, cause spaces are changed to tabs to get
space for the longer names.

Kay

[-- Attachment #2: 01-Mm-test.patch --]
[-- Type: text/plain, Size: 23919 bytes --]

===== test/udev-test.pl 1.46 vs edited =====
--- 1.46/test/udev-test.pl	Thu Mar 11 04:14:35 2004
+++ edited/test/udev-test.pl	Fri Mar 12 03:11:00 2004
@@ -33,30 +33,30 @@
 
 my @tests = (
 	{
-		desc     => "label test of scsi disc",
-		subsys   => "block",
-		devpath  => "block/sda",
-		expected => "boot_disk" ,
-		conf     => <<EOF
+		desc		=> "label test of scsi disc",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name=> "boot_disk" ,
+		conf		=> <<EOF
 BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="boot_disk%n"
 KERNEL="ttyUSB0", NAME="visor"
 EOF
 	},
 	{
-		desc     => "label test of scsi partition",
-		subsys   => "block",
-		devpath  => "block/sda/sda1",
-		expected => "boot_disk1" ,
-		conf     => <<EOF
+		desc		=> "label test of scsi partition",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda1",
+		exp_name=> "boot_disk1" ,
+		conf		=> <<EOF
 BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="boot_disk%n"
 EOF
 	},
 	{
-		desc     => "label test of pattern match",
-		subsys   => "block",
-		devpath  => "block/sda/sda1",
-		expected => "boot_disk1" ,
-		conf     => <<EOF
+		desc		=> "label test of pattern match",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda1",
+		exp_name=> "boot_disk1" ,
+		conf		=> <<EOF
 BUS="scsi", SYSFS{vendor}="?IBM-ESXS", NAME="boot_disk%n-1"
 BUS="scsi", SYSFS{vendor}="IBM-ESXS?", NAME="boot_disk%n-2"
 BUS="scsi", SYSFS{vendor}="IBM-ES??", NAME="boot_disk%n"
@@ -64,169 +64,169 @@
 EOF
 	},
 	{
-		desc     => "label test of multiple sysfs files",
-		subsys   => "block",
-		devpath  => "block/sda/sda1",
-		expected => "boot_disk1" ,
-		conf     => <<EOF
+		desc		=> "label test of multiple sysfs files",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda1",
+		exp_name	=> "boot_disk1" ,
+		conf		=> <<EOF
 BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW   !#", NAME="boot_diskX%n"
 BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW    !#", NAME="boot_disk%n"
 EOF
 	},
 	{
-		desc     => "label test of max sysfs files",
-		subsys   => "block",
-		devpath  => "block/sda/sda1",
-		expected => "boot_disk1" ,
-		conf     => <<EOF
+		desc		=> "label test of max sysfs files",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda1",
+		exp_name	=> "boot_disk1" ,
+		conf		=> <<EOF
 BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW    !#", SYSFS{scsi_level}="4", SYSFS{rev}="B245", SYSFS{type}="2", SYSFS{queue_depth}="32", NAME="boot_diskXX%n"
 BUS="scsi", SYSFS{vendor}="IBM-ESXS", SYSFS{model}="ST336605LW    !#", SYSFS{scsi_level}="4", SYSFS{rev}="B245", SYSFS{type}="0", NAME="boot_disk%n"
 EOF
 	},
 	{
-		desc     => "catch device by *",
-		subsys   => "tty",
-		devpath  => "class/tty/ttyUSB0",
-		expected => "visor/0" ,
-		conf     => <<EOF
+		desc		=> "catch device by *",
+		subsys		=> "tty",
+		devpath		=> "class/tty/ttyUSB0",
+		exp_name	=> "visor/0" ,
+		conf		=> <<EOF
 KERNEL="ttyUSB*", NAME="visor/%n"
 EOF
 	},
 	{
-		desc     => "catch device by * - take 2",
-		subsys   => "tty",
-		devpath  => "class/tty/ttyUSB0",
-		expected => "visor/0" ,
-		conf     => <<EOF
+		desc		=> "catch device by * - take 2",
+		subsys		=> "tty",
+		devpath		=> "class/tty/ttyUSB0",
+		exp_name	=> "visor/0" ,
+		conf		=> <<EOF
 KERNEL="*USB1", NAME="bad"
 KERNEL="*USB0", NAME="visor/%n"
 EOF
 	},
 	{
-		desc     => "catch device by ?",
-		subsys   => "tty",
-		devpath  => "class/tty/ttyUSB0",
-		expected => "visor/0" ,
-		conf     => <<EOF
+		desc		=> "catch device by ?",
+		subsys		=> "tty",
+		devpath		=> "class/tty/ttyUSB0",
+		exp_name	=> "visor/0" ,
+		conf		=> <<EOF
 KERNEL="ttyUSB??*", NAME="visor/%n-1"
 KERNEL="ttyUSB??", NAME="visor/%n-2"
 KERNEL="ttyUSB?", NAME="visor/%n"
 EOF
 	},
 	{
-		desc     => "catch device by character class",
-		subsys   => "tty",
-		devpath  => "class/tty/ttyUSB0",
-		expected => "visor/0" ,
-		conf     => <<EOF
+		desc		=> "catch device by character class",
+		subsys		=> "tty",
+		devpath		=> "class/tty/ttyUSB0",
+		exp_name	=> "visor/0" ,
+		conf		=> <<EOF
 KERNEL="ttyUSB[A-Z]*", NAME="visor/%n-1"
 KERNEL="ttyUSB?[0-9]", NAME="visor/%n-2"
 KERNEL="ttyUSB[0-9]*", NAME="visor/%n"
 EOF
 	},
 	{
-		desc     => "replace kernel name",
-		subsys   => "tty",
-		devpath  => "class/tty/ttyUSB0",
-		expected => "visor" ,
-		conf     => <<EOF
+		desc		=> "replace kernel name",
+		subsys		=> "tty",
+		devpath		=> "class/tty/ttyUSB0",
+		exp_name	=> "visor" ,
+		conf		=> <<EOF
 KERNEL="ttyUSB0", NAME="visor"
 EOF
 	},
 	{
-		desc     => "Handle comment lines in config file (and replace kernel name)",
-		subsys   => "tty",
-		devpath  => "class/tty/ttyUSB0",
-		expected => "visor" ,
-		conf     => <<EOF
+		desc		=> "Handle comment lines in config file (and replace kernel name)",
+		subsys		=> "tty",
+		devpath		=> "class/tty/ttyUSB0",
+		exp_name	=> "visor" ,
+		conf		=> <<EOF
 # this is a comment
 KERNEL="ttyUSB0", NAME="visor"
 
 EOF
 	},
 	{
-		desc     => "Handle comment lines in config file with whitespace (and replace kernel name)",
-		subsys   => "tty",
-		devpath  => "class/tty/ttyUSB0",
-		expected => "visor" ,
-		conf     => <<EOF
+		desc		=> "Handle comment lines in config file with whitespace (and replace kernel name)",
+		subsys		=> "tty",
+		devpath		=> "class/tty/ttyUSB0",
+		exp_name	=> "visor" ,
+		conf		=> <<EOF
  # this is a comment with whitespace before the comment 
 KERNEL="ttyUSB0", NAME="visor"
 
 EOF
 	},
 	{
-		desc     => "Handle empty lines in config file (and replace kernel name)",
-		subsys   => "tty",
-		devpath  => "class/tty/ttyUSB0",
-		expected => "visor" ,
-		conf     => <<EOF
+		desc		=> "Handle empty lines in config file (and replace kernel name)",
+		subsys		=> "tty",
+		devpath		=> "class/tty/ttyUSB0",
+		exp_name	=> "visor" ,
+		conf		=> <<EOF
 
 KERNEL="ttyUSB0", NAME="visor"
 
 EOF
 	},
 	{
-		desc     => "subdirectory handling",
-		subsys   => "tty",
-		devpath  => "class/tty/ttyUSB0",
-		expected => "sub/direct/ory/visor" ,
-		conf     => <<EOF
+		desc		=> "subdirectory handling",
+		subsys		=> "tty",
+		devpath		=> "class/tty/ttyUSB0",
+		exp_name	=> "sub/direct/ory/visor" ,
+		conf		=> <<EOF
 KERNEL="ttyUSB0", NAME="sub/direct/ory/visor"
 EOF
 	},
 	{
-		desc     => "place on bus of scsi partition",
-		subsys   => "block",
-		devpath  => "block/sda/sda3",
-		expected => "first_disk3" ,
-		conf     => <<EOF
+		desc		=> "place on bus of scsi partition",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda3",
+		exp_name	=> "first_disk3" ,
+		conf		=> <<EOF
 BUS="scsi", PLACE="0:0:0:0", NAME="first_disk%n"
 EOF
 	},
 	{
-		desc     => "test NAME substitution chars",
-		subsys   => "block",
-		devpath  => "block/sda/sda3",
-		expected => "Major:8:minor:3:kernelnumber:3:bus:0:0:0:0" ,
-		conf     => <<EOF
+		desc		=> "test NAME substitution chars",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda3",
+		exp_name	=> "Major:8:minor:3:kernelnumber:3:bus:0:0:0:0" ,
+		conf		=> <<EOF
 BUS="scsi", PLACE="0:0:0:0", NAME="Major:%M:minor:%m:kernelnumber:%n:bus:%b"
 EOF
 	},
 	{
-		desc     => "test NAME substitution chars (with length limit)",
-		subsys   => "block",
-		devpath  => "block/sda/sda3",
-		expected => "M8-m3-n3-b0:0-sIBM" ,
-		conf     => <<EOF
+		desc		=> "test NAME substitution chars (with length limit)",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda3",
+		exp_name	=> "M8-m3-n3-b0:0-sIBM" ,
+		conf		=> <<EOF
 BUS="scsi", PLACE="0:0:0:0", NAME="M%M-m%m-n%n-b%3b-s%3s{vendor}"
 EOF
 	},
 	{
-		desc     => "old style SYSFS_ attribute",
-		subsys   => "block",
-		devpath  => "block/sda",
-		expected => "good" ,
-		conf     => <<EOF
+		desc		=> "old style SYSFS_ attribute",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name	=> "good" ,
+		conf		=> <<EOF
 BUS="scsi", SYSFS_vendor="IBM-ESXS", NAME="good"
 EOF
 	},
 	{
-		desc     => "sustitution of sysfs value (%s{file})",
-		subsys   => "block",
-		devpath  => "block/sda",
-		expected => "disk-IBM-ESXS-sda" ,
-		conf     => <<EOF
+		desc		=> "sustitution of sysfs value (%s{file})",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name	=> "disk-IBM-ESXS-sda" ,
+		conf		=> <<EOF
 BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="disk-%s{vendor}-%k"
 KERNEL="ttyUSB0", NAME="visor"
 EOF
 	},
 	{
-		desc     => "program result substitution",
-		subsys   => "block",
-		devpath  => "block/sda/sda3",
-		expected => "special-device-3" ,
-		conf     => <<EOF
+		desc		=> "program result substitution",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda3",
+		exp_name	=> "special-device-3" ,
+		conf		=> <<EOF
 BUS="scsi", PROGRAM="/bin/echo -n special-device", RESULT="-special-*", NAME="%c-1-%n"
 BUS="scsi", PROGRAM="/bin/echo -n special-device", RESULT="special--*", NAME="%c-2-%n"
 BUS="scsi", PROGRAM="/bin/echo -n special-device", RESULT="special-device-", NAME="%c-3-%n"
@@ -235,225 +235,225 @@
 EOF
 	},
 	{
-		desc     => "program result substitution",
-		subsys   => "block",
-		devpath  => "block/sda/sda3",
-		expected => "test-0:0:0:0" ,
-		conf     => <<EOF
+		desc		=> "program result substitution",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda3",
+		exp_name	=> "test-0:0:0:0" ,
+		conf		=> <<EOF
 BUS="scsi", PROGRAM="/bin/echo -n test-%b", RESULT="test-0:0*", NAME="%c"
 EOF
 	},
 	{
-		desc     => "program with escaped format char (tricky: callout returns format char!)",
-		subsys   => "block",
-		devpath  => "block/sda/sda3",
-		expected => "escape-3" ,
-		conf     => <<EOF
+		desc		=> "program with escaped format char (tricky: callout returns format char!)",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda3",
+		exp_name	=> "escape-3" ,
+		conf		=> <<EOF
 BUS="scsi", PROGRAM="/bin/echo -n escape-%%n", KERNEL="sda3", NAME="%c"
 EOF
 	},
 	{
-		desc     => "program with lots of arguments",
-		subsys   => "block",
-		devpath  => "block/sda/sda3",
-		expected => "foo9" ,
-		conf     => <<EOF
+		desc		=> "program with lots of arguments",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda3",
+		exp_name	=> "foo9" ,
+		conf		=> <<EOF
 BUS="scsi", PROGRAM="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL="sda3", NAME="%c{7}"
 EOF
 	},
 	{
-		desc     => "program with subshell",
-		subsys   => "block",
-		devpath  => "block/sda/sda3",
-		expected => "bar9" ,
-		conf     => <<EOF
+		desc		=> "program with subshell",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda3",
+		exp_name	=> "bar9" ,
+		conf		=> <<EOF
 BUS="scsi", PROGRAM="/bin/sh -c 'echo foo3 foo4 foo5 foo6 foo7 foo8 foo9 | sed  s/foo9/bar9/'", KERNEL="sda3", NAME="%c{7}"
 EOF
 	},
 	{
-		desc     => "program arguments combined with apostrophes",
-		subsys   => "block",
-		devpath  => "block/sda/sda3",
-		expected => "foo7" ,
-		conf     => <<EOF
+		desc		=> "program arguments combined with apostrophes",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda3",
+		exp_name	=> "foo7" ,
+		conf		=> <<EOF
 BUS="scsi", PROGRAM="/bin/echo -n 'foo3 foo4'   'foo5   foo6   foo7 foo8'", KERNEL="sda3", NAME="%c{5}"
 EOF
 	},
 	{
-		desc     => "characters before the %c{N} substitution",
-		subsys   => "block",
-		devpath  => "block/sda/sda3",
-		expected => "my-foo9" ,
-		conf     => <<EOF
+		desc		=> "characters before the %c{N} substitution",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda3",
+		exp_name	=> "my-foo9" ,
+		conf		=> <<EOF
 BUS="scsi", PROGRAM="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL="sda3", NAME="my-%c{7}"
 EOF
 	},
 	{
-		desc     => "substitute the second to last argument",
-		subsys   => "block",
-		devpath  => "block/sda/sda3",
-		expected => "my-foo8" ,
-		conf     => <<EOF
+		desc		=> "substitute the second to last argument",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda3",
+		exp_name	=> "my-foo8" ,
+		conf		=> <<EOF
 BUS="scsi", PROGRAM="/bin/echo -n foo3 foo4 foo5 foo6 foo7 foo8 foo9", KERNEL="sda3", NAME="my-%c{6}"
 EOF
 	},
 	{
-		desc     => "program result substitution (numbered part of)",
-		subsys   => "block",
-		devpath  => "block/sda/sda3",
-		expected => "link1" ,
-		conf     => <<EOF
+		desc		=> "program result substitution (numbered part of)",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda3",
+		exp_name	=> "link1" ,
+		conf		=> <<EOF
 BUS="scsi", PROGRAM="/bin/echo -n node link1 link2", RESULT="node *", NAME="%c{1}", SYMLINK="%c{2} %c{3}"
 EOF
 	},
 	{
-		desc     => "program result substitution (numbered part of+)",
-		subsys   => "block",
-		devpath  => "block/sda/sda3",
-		expected => "link3" ,
-		conf     => <<EOF
+		desc		=> "program result substitution (numbered part of+)",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda3",
+		exp_name	=> "link3" ,
+		conf		=> <<EOF
 BUS="scsi", PROGRAM="/bin/echo -n node link1 link2 link3 link4", RESULT="node *", NAME="%c{1}", SYMLINK="%c{2+}"
 EOF
 	},
 	{
-		desc     => "invalid program for device with no bus",
-		subsys   => "tty",
-		devpath  => "class/tty/console",
-		expected => "TTY" ,
-		conf     => <<EOF
+		desc		=> "invalid program for device with no bus",
+		subsys		=> "tty",
+		devpath		=> "class/tty/console",
+		exp_name	=> "TTY" ,
+		conf		=> <<EOF
 BUS="scsi", PROGRAM="/bin/echo -n foo", RESULT="foo", NAME="foo"
 KERNEL="console", NAME="TTY"
 EOF
 	},
 	{
-		desc     => "valid program for device with no bus",
-		subsys   => "tty",
-		devpath  => "class/tty/console",
-		expected => "foo" ,
-		conf     => <<EOF
+		desc		=> "valid program for device with no bus",
+		subsys		=> "tty",
+		devpath		=> "class/tty/console",
+		exp_name	=> "foo" ,
+		conf		=> <<EOF
 PROGRAM="/bin/echo -n foo", RESULT="foo", NAME="foo"
 KERNEL="console", NAME="TTY"
 EOF
 	},
 	{
-		desc     => "invalid label for device with no bus",
-		subsys   => "tty",
-		devpath  => "class/tty/console",
-		expected => "TTY" ,
-		conf     => <<EOF
+		desc		=> "invalid label for device with no bus",
+		subsys		=> "tty",
+		devpath		=> "class/tty/console",
+		exp_name	=> "TTY" ,
+		conf		=> <<EOF
 BUS="foo", SYSFS{dev}="5:1", NAME="foo"
 KERNEL="console", NAME="TTY"
 EOF
 	},
 	{
-		desc     => "valid label for device with no bus",
-		subsys   => "tty",
-		devpath  => "class/tty/console",
-		expected => "foo" ,
-		conf     => <<EOF
+		desc		=> "valid label for device with no bus",
+		subsys		=> "tty",
+		devpath		=> "class/tty/console",
+		exp_name	=> "foo" ,
+		conf		=> <<EOF
 SYSFS{dev}="5:1", NAME="foo"
 KERNEL="console", NAME="TTY"
 EOF
 	},
 	{
-		desc     => "program and bus type match",
-		subsys   => "block",
-		devpath  => "block/sda",
-		expected => "scsi-0:0:0:0" ,
-		conf     => <<EOF
+		desc		=> "program and bus type match",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name	=> "scsi-0:0:0:0" ,
+		conf		=> <<EOF
 BUS="usb", PROGRAM="/bin/echo -n usb-%b", NAME="%c"
 BUS="scsi", PROGRAM="/bin/echo -n scsi-%b", NAME="%c"
 BUS="foo", PROGRAM="/bin/echo -n foo-%b", NAME="%c"
 EOF
 	},
 	{
-		desc     => "symlink creation (same directory)",
-		subsys   => "tty",
-		devpath  => "class/tty/ttyUSB0",
-		expected => "visor0" ,
-		conf     => <<EOF
+		desc		=> "symlink creation (same directory)",
+		subsys		=> "tty",
+		devpath		=> "class/tty/ttyUSB0",
+		exp_name	=> "visor0" ,
+		conf		=> <<EOF
 KERNEL="ttyUSB[0-9]*", NAME="ttyUSB%n", SYMLINK="visor%n"
 EOF
 	},
 	{
-		desc     => "symlink creation (relative link back)",
-		subsys   => "block",
-		devpath  => "block/sda/sda2",
-		expected => "1/2/a/b/symlink" ,
-		conf     => <<EOF
+		desc		=> "symlink creation (relative link back)",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda2",
+		exp_name	=> "1/2/a/b/symlink" ,
+		conf		=> <<EOF
 BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="1/2/node", SYMLINK="1/2/a/b/symlink"
 EOF
 	},
 	{
-		desc     => "symlink creation (relative link forward)",
-		subsys   => "block",
-		devpath  => "block/sda/sda2",
-		expected => "1/2/symlink" ,
-		conf     => <<EOF
+		desc		=> "symlink creation (relative link forward)",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda2",
+		exp_name	=> "1/2/symlink" ,
+		conf		=> <<EOF
 BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/symlink"
 EOF
 	},
 	{
-		desc     => "symlink creation (relative link back and forward)",
-		subsys   => "block",
-		devpath  => "block/sda/sda2",
-		expected => "1/2/c/d/symlink" ,
-		conf     => <<EOF
+		desc		=> "symlink creation (relative link back and forward)",
+		subsys		=> "block",
+		devpath		=> "block/sda/sda2",
+		exp_name	=> "1/2/c/d/symlink" ,
+		conf		=> <<EOF
 BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME="1/2/a/b/node", SYMLINK="1/2/c/d/symlink"
 EOF
 	},
 	{
-		desc     => "multiple symlinks",
-		subsys   => "tty",
-		devpath  => "class/tty/ttyUSB0",
-		expected => "second-0" ,
-		conf     => <<EOF
+		desc		=> "multiple symlinks",
+		subsys		=> "tty",
+		devpath		=> "class/tty/ttyUSB0",
+		exp_name	=> "second-0" ,
+		conf		=> <<EOF
 KERNEL="ttyUSB0", NAME="visor", SYMLINK="first-%n second-%n third-%n"
 EOF
 	},
 	{
-		desc     => "create all possible partitions",
-		subsys   => "block",
-		devpath  => "block/sda",
-		expected => "boot_disk15" ,
-		conf     => <<EOF
+		desc		=> "create all possible partitions",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name	=> "boot_disk15" ,
+		conf		=> <<EOF
 BUS="scsi", SYSFS{vendor}="IBM-ESXS", NAME{all_partitions}="boot_disk"
 EOF
 	},
 	{
-		desc     => "sysfs parent hierarchy",
-		subsys   => "tty",
-		devpath  => "class/tty/ttyUSB0",
-		expected => "visor" ,
-		conf     => <<EOF
+		desc		=> "sysfs parent hierarchy",
+		subsys		=> "tty",
+		devpath		=> "class/tty/ttyUSB0",
+		exp_name	=> "visor" ,
+		conf		=> <<EOF
 SYSFS{idProduct}="2008", NAME="visor"
 EOF
 	},
 	{
-		desc     => "name test with ! in the name",
-		subsys   => "block",
-		devpath  => "block/rd!c0d0",
-		expected => "rd/c0d0" ,
-		conf     => <<EOF
+		desc		=> "name test with ! in the name",
+		subsys		=> "block",
+		devpath		=> "block/rd!c0d0",
+		exp_name	=> "rd/c0d0" ,
+		conf		=> <<EOF
 BUS="scsi", NAME="%k"
 KERNEL="ttyUSB0", NAME="visor"
 EOF
 	},
 	{
-		desc     => "name test with ! in the name, but no matching rule",
-		subsys   => "block",
-		devpath  => "block/rd!c0d0",
-		expected => "rd/c0d0" ,
-		conf     => <<EOF
+		desc		=> "name test with ! in the name, but no matching rule",
+		subsys		=> "block",
+		devpath		=> "block/rd!c0d0",
+		exp_name	=> "rd/c0d0" ,
+		conf		=> <<EOF
 KERNEL="ttyUSB0", NAME="visor"
 EOF
 	},
 	{
-		desc     => "ID rule",
-		subsys   => "block",
-		devpath  => "block/sda",
-		expected => "scsi-0:0:0:0",
-		conf     => <<EOF
+		desc		=> "ID rule",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name	=> "scsi-0:0:0:0",
+		conf		=> <<EOF
 BUS="usb", ID="0:0:0:0", NAME="not-scsi"
 BUS="scsi", ID="0:0:0:1", NAME="no-match"
 BUS="scsi", ID=":0", NAME="short-id"
@@ -462,11 +462,11 @@
 EOF
 	},
 	{
-		desc     => "ID wildcard all",
-		subsys   => "block",
-		devpath  => "block/sda",
-		expected => "scsi-0:0:0:0",
-		conf     => <<EOF
+		desc		=> "ID wildcard all",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name	=> "scsi-0:0:0:0",
+		conf		=> <<EOF
 BUS="scsi", ID="*:1", NAME="no-match"
 BUS="scsi", ID="*:0:1", NAME="no-match"
 BUS="scsi", ID="*:0:0:1", NAME="no-match"
@@ -475,62 +475,73 @@
 EOF
 	},
 	{
-		desc     => "ID wildcard partial",
-		subsys   => "block",
-		devpath  => "block/sda",
-		expected => "scsi-0:0:0:0",
-		conf     => <<EOF
+		desc		=> "ID wildcard partial",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name	=> "scsi-0:0:0:0",
+		conf		=> <<EOF
 BUS="scsi", ID="*:0", NAME="scsi-0:0:0:0"
 BUS="scsi", ID="0:0:0:0", NAME="bad"
 EOF
 	},
 	{
-		desc     => "ID wildcard partial 2",
-		subsys   => "block",
-		devpath  => "block/sda",
-		expected => "scsi-0:0:0:0",
-		conf     => <<EOF
+		desc		=> "ID wildcard partial 2",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name	=> "scsi-0:0:0:0",
+		conf		=> <<EOF
 BUS="scsi", ID="*:0:0:0", NAME="scsi-0:0:0:0"
 BUS="scsi", ID="0:0:0:0", NAME="bad"
 EOF
 	},
 	{
-		desc     => "ignore SYSFS attribute whitespace",
-		subsys   => "block",
-		devpath  => "block/sda",
-		expected => "ignored",
-		conf     => <<EOF
+		desc		=> "ignore SYSFS attribute whitespace",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name	=> "ignored",
+		conf		=> <<EOF
 BUS="scsi", SYSFS{whitespace_test}="WHITE  SPACE", NAME="ignored"
 EOF
 	},
 	{
-		desc     => "do not ignore SYSFS attribute whitespace",
-		subsys   => "block",
-		devpath  => "block/sda",
-		expected => "matched-with-space",
-		conf     => <<EOF
+		desc		=> "do not ignore SYSFS attribute whitespace",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name	=> "matched-with-space",
+		conf		=> <<EOF
 BUS="scsi", SYSFS{whitespace_test}="WHITE  SPACE ", NAME="wrong-to-ignore"
 BUS="scsi", SYSFS{whitespace_test}="WHITE  SPACE   ", NAME="matched-with-space"
 EOF
 	},
 	{
-		desc     => "SYMLINK only rule",
-		subsys   => "block",
-		devpath  => "block/sda",
-		expected => "symlink-only2",
-		conf     => <<EOF
+		desc		=> "SYMLINK only rule",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name	=> "symlink-only2",
+		conf		=> <<EOF
 BUS="scsi", KERNEL="sda", SYMLINK="symlink-only1"
 BUS="scsi", KERNEL="sda", SYMLINK="symlink-only2"
 BUS="scsi", KERNEL="sda", NAME="link", SYMLINK="symlink0"
 EOF
 	},
 	{
-		desc     => "permissions test",
-		subsys   => "block",
-		devpath  => "block/sda",
-		expected => "node",
-		perms    => "5000::0444",
-		conf     => <<EOF
+		desc		=> "permissions test",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name	=> "node",
+		perms		=> "5000::0444",
+		conf		=> <<EOF
+BUS="scsi", KERNEL="sda", NAME="node", OWNER="5000", MODE="0444"
+EOF
+	},
+	{
+		desc		=> "major/minor number test",
+		subsys		=> "block",
+		devpath		=> "block/sda",
+		exp_name	=> "node",
+		perms		=> "5000::0444",
+		exp_majorminor	=> "8:0",
+		conf		=> <<EOF
 BUS="scsi", KERNEL="sda", NAME="node", OWNER="5000", MODE="0444"
 EOF
 	},
@@ -560,17 +571,18 @@
 
 sub run_test {
 	my ($config, $number) = @_;
-	
+
 	print "TEST $number: $config->{desc}\n";
-	print "device \'$config->{devpath}\' expecting node \'$config->{expected}\'\n";
+	print "device \'$config->{devpath}\' expecting node \'$config->{exp_name}\'\n";
 
 	udev("add", $config->{subsys}, $config->{devpath}, \$config->{conf});
-	if (-e "$PWD/$udev_root$config->{expected}") {
+	if (-e "$PWD/$udev_root$config->{exp_name}") {
+
+		my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
+		    $atime, $mtime, $ctime, $blksize, $blocks) = stat("$PWD/$udev_root$config->{exp_name}");
+
 		if (defined($config->{perms})) {
 			my $wrong = 0;
-			my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size,
-			    $atime, $mtime, $ctime, $blksize, $blocks) = stat("$PWD/$udev_root$config->{expected}");
-
 			$config->{perms} =~ m/^(.*):(.*):(.*)$/;
 			if ($1 ne "") {
 				if ($uid != $1) { $wrong = 1; };
@@ -586,6 +598,25 @@
 				printf "created permissions are : %i:%i:%#o\n", $uid, $gid, $mode & 07777;
 			}
 		}
+
+		if (defined($config->{exp_majorminor})) {
+			my $major = ($rdev >> 8) & 0xfff;
+			my $minor = ($rdev & 0xff) | (($rdev >> 12) & 0xfff00);
+
+			my $wrong = 0;
+			$config->{exp_majorminor} =~ m/^(.*):(.*)$/;
+			if ($1 ne "") {
+				if ($major != $1) { $wrong = 1; };
+			}
+			if ($2 ne "") {
+				if ($minor != $2) { $wrong = 1; };
+			}
+			if ($wrong == 1) {
+				printf "expected major:minor is: %i:%i\n", $1, $2;
+				printf "created major:minor is : %i:%i\n", $major, $minor;
+			}
+		}
+
 		print "add: ok    ";
 	} else {
 		print "add: error\n";
@@ -595,8 +626,8 @@
 	}
 
 	udev("remove", $config->{subsys}, $config->{devpath}, \$config->{conf});
-	if ((-e "$PWD/$udev_root$config->{expected}") ||
-	    (-l "$PWD/$udev_root$config->{expected}")) {
+	if ((-e "$PWD/$udev_root$config->{exp_name}") ||
+	    (-l "$PWD/$udev_root$config->{exp_name}")) {
 		print "remove: error\n\n";
 		system("tree $udev_root");
 		$error++;

  parent reply	other threads:[~2004-03-12  2:20 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-07  1:12 [PATCH] allow to specify node permissions in the rule Kay Sievers
2004-03-10 22:41 ` Greg KH
2004-03-11  2:18 ` Kay Sievers
2004-03-12  1:07 ` Greg KH
2004-03-12  2:20 ` Kay Sievers [this message]
2004-03-12 10:43 ` Olaf Hering
2004-03-12 11:19 ` Kay Sievers
2004-03-12 11:30 ` Olaf Hering
2004-03-12 11:35 ` Kay Sievers
2004-03-12 16:43 ` Greg KH
2004-03-12 17:44 ` 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=20040312022021.GA2208@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.