1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-25 01:34:28 +03:00

don't add $SUBSYSTEM automatically as $1 to programs

Signed-off-by: Kay Sievers <kay.sievers@suse.de>
This commit is contained in:
Kay Sievers 2006-01-26 04:38:33 +01:00
parent d2f605c8d6
commit 36af2ddcb9
3 changed files with 18 additions and 15 deletions

View File

@ -1,3 +1,15 @@
udev 083
========
Fix a bug where NAME="" would prevent RUN from beeing executed.
RUN="/bin/program" does no longer automatically add the subsystem
as the first parameter. This is from the days of /sbin/hotplug
which is dead now and it's just confusing to need to add space at the
end of the program name to prevent this. If you use rules that
depend on this, like the old "udev_run_hotlugd" and "udev_run_devd",
switch them to: RUN+="/bin/program $env{SUBSYSTEM}", otherwise
they will no longer work as expected.
udev 082
========
The udev man page has moced to udev(7) as it doesnot describe a command

View File

@ -298,15 +298,6 @@ BUS=="scsi", PROGRAM=="/bin/echo -n special-device", RESULT=="special--*", NAME=
BUS=="scsi", PROGRAM=="/bin/echo -n special-device", RESULT=="special-device-", NAME="%c-3-%n"
BUS=="scsi", PROGRAM=="/bin/echo -n special-device", RESULT=="special-devic", NAME="%c-4-%n"
BUS=="scsi", PROGRAM=="/bin/echo -n special-device", RESULT=="special-*", NAME="%c-%n"
EOF
},
{
desc => "program result substitution (no argument should be subsystem)",
subsys => "block",
devpath => "/block/sda/sda3",
exp_name => "subsys_block" ,
rules => <<EOF
BUS=="scsi", PROGRAM=="/bin/echo", RESULT=="block", NAME="subsys_block"
EOF
},
{

View File

@ -84,16 +84,18 @@ int run_program(const char *command, const char *subsystem,
int devnull;
int i;
/* build argv from comand */
strlcpy(arg, command, sizeof(arg));
i = 0;
if (strchr(arg, ' ')) {
if (strchr(arg, ' ') != NULL) {
char *pos = arg;
while (pos != NULL) {
if (pos[0] == '\'') {
/* don't separate if in apostrophes */
pos++;
argv[i] = strsep(&pos, "\'");
while (pos && pos[0] == ' ')
while (pos != NULL && pos[0] == ' ')
pos++;
} else {
argv[i] = strsep(&pos, " ");
@ -102,13 +104,11 @@ int run_program(const char *command, const char *subsystem,
i++;
}
argv[i] = NULL;
info("'%s'", command);
} else {
argv[0] = arg;
argv[1] = (char *) subsystem;
argv[2] = NULL;
info("'%s' '%s'", arg, argv[1]);
argv[1] = NULL;
}
info("'%s'", command);
/* prepare pipes from child to parent */
if (result || log) {