diff options
author | Kay Sievers <kay.sievers@vrfy.org> | 2007-07-09 03:59:08 +0200 |
---|---|---|
committer | Kay Sievers <kay.sievers@vrfy.org> | 2007-07-09 03:59:08 +0200 |
commit | 285e2a24f67b1c09d7b4c54587802fc0a9d623eb (patch) | |
tree | a7468587f7233ca5149b50033f0948e3cc13f810 | |
parent | 2e08169ed4618718636e162bca5be147179da91c (diff) |
udevtrigger: allow to specify action string
-rw-r--r-- | udevtest.c | 6 | ||||
-rw-r--r-- | udevtrigger.8 | 7 | ||||
-rw-r--r-- | udevtrigger.c | 21 | ||||
-rw-r--r-- | udevtrigger.xml | 7 |
4 files changed, 29 insertions, 12 deletions
diff --git a/udevtest.c b/udevtest.c index 418d43de14..7b3ea6311d 100644 --- a/udevtest.c +++ b/udevtest.c @@ -90,9 +90,9 @@ out: int main(int argc, char *argv[], char *envp[]) { int force = 0; - char *action = "add"; - char *subsystem = NULL; - char *devpath = NULL; + const char *action = "add"; + const char *subsystem = NULL; + const char *devpath = NULL; struct udevice *udev; struct sysfs_device *dev; struct udev_rules rules = {}; diff --git a/udevtrigger.8 b/udevtrigger.8 index 58a379495f..5ef9e8f812 100644 --- a/udevtrigger.8 +++ b/udevtrigger.8 @@ -14,7 +14,7 @@ udevtrigger \- request kernel devices events for coldplug .SH "SYNOPSIS" .HP 12 -\fBudevtrigger\fR [\fB\-\-verbose\fR] [\fB\-\-dry\-run\fR] [\fB\-\-retry\-failed\fR] [\fB\-\-help\fR] [\fB\-\-subsystem\-match=\fR\fB\fIsubsystem\fR\fR] [\fB\-\-subsystem\-nomatch=\fR\fB\fIsubsystem\fR\fR] [\fB\-\-attr\-match=\fR\fB\fIattribute=value\fR\fR] [\fB\-\-attr\-nomatch=\fR\fB\fIattribute=value\fR\fR] +\fBudevtrigger\fR [\fB\-\-verbose\fR] [\fB\-\-dry\-run\fR] [\fB\-\-retry\-failed\fR] [\fB\-\-help\fR] [\fB\-\-action=\fR\fB\fIaction\fR\fR] [\fB\-\-subsystem\-match=\fR\fB\fIsubsystem\fR\fR] [\fB\-\-subsystem\-nomatch=\fR\fB\fIsubsystem\fR\fR] [\fB\-\-attr\-match=\fR\fB\fIattribute=value\fR\fR] [\fB\-\-attr\-nomatch=\fR\fB\fIattribute=value\fR\fR] .SH "DESCRIPTION" .PP Trigger kernel device uevents to replay missing events at system coldplug. @@ -35,6 +35,11 @@ Do not actually trigger the event. Trigger only the events which are failed during a previous run. .RE .PP +\fB\-\-action=\fR\fB\fIaction\fR\fR +.RS 4 +Type of event to be triggered. The default value is "add". +.RE +.PP \fB\-\-subsystem\-match=\fR\fB\fIsubsystem\fR\fR .RS 4 Trigger events for devices which belong to a matching subsystem. This option can be specified multiple times and supports shell style pattern matching. diff --git a/udevtrigger.c b/udevtrigger.c index 3b5be2006e..4ef9612af0 100644 --- a/udevtrigger.c +++ b/udevtrigger.c @@ -101,7 +101,7 @@ static int device_list_insert(const char *path) return 0; } -static void trigger_uevent(const char *devpath) +static void trigger_uevent(const char *devpath, const char *action) { char filename[PATH_SIZE]; int fd; @@ -122,13 +122,13 @@ static void trigger_uevent(const char *devpath) return; } - if (write(fd, "add", 3) < 0) - info("error on triggering %s: %s", filename, strerror(errno)); + if (write(fd, action, strlen(action)) < 0) + info("error writing '%s' to '%s': %s", action, filename, strerror(errno)); close(fd); } -static void exec_list(void) +static void exec_list(const char *action) { struct name_entry *loop_device; struct name_entry *tmp_device; @@ -137,14 +137,14 @@ static void exec_list(void) if (delay_device(loop_device->name)) continue; - trigger_uevent(loop_device->name); + trigger_uevent(loop_device->name, action); list_del(&loop_device->node); free(loop_device); } /* trigger remaining delayed devices */ list_for_each_entry_safe(loop_device, tmp_device, &device_list, node) { - trigger_uevent(loop_device->name); + trigger_uevent(loop_device->name, action); list_del(&loop_device->node); free(loop_device); } @@ -425,11 +425,13 @@ int main(int argc, char *argv[], char *envp[]) { int failed = 0; int option; + const char *action = "add"; static const struct option options[] = { { "verbose", 0, NULL, 'v' }, { "dry-run", 0, NULL, 'n' }, { "retry-failed", 0, NULL, 'F' }, { "help", 0, NULL, 'h' }, + { "action", 1, NULL, 'c' }, { "subsystem-match", 1, NULL, 's' }, { "subsystem-nomatch", 1, NULL, 'S' }, { "attr-match", 1, NULL, 'a' }, @@ -443,7 +445,7 @@ int main(int argc, char *argv[], char *envp[]) sysfs_init(); while (1) { - option = getopt_long(argc, argv, "vnFhs:S:a:A:", options, NULL); + option = getopt_long(argc, argv, "vnFhc:s:S:a:A:", options, NULL); if (option == -1) break; @@ -457,6 +459,9 @@ int main(int argc, char *argv[], char *envp[]) case 'F': failed = 1; break; + case 'c': + action = optarg; + break; case 's': name_list_add(&filter_subsystem_match_list, optarg, 0); break; @@ -511,7 +516,7 @@ int main(int argc, char *argv[], char *envp[]) scan_block(); } } - exec_list(); + exec_list(action); exit: name_list_cleanup(&filter_subsystem_match_list); diff --git a/udevtrigger.xml b/udevtrigger.xml index 60a7b1eaf7..eb2b9851cd 100644 --- a/udevtrigger.xml +++ b/udevtrigger.xml @@ -29,6 +29,7 @@ <arg><option>--dry-run</option></arg> <arg><option>--retry-failed</option></arg> <arg><option>--help</option></arg> + <arg><option>--action=<replaceable>action</replaceable></option></arg> <arg><option>--subsystem-match=<replaceable>subsystem</replaceable></option></arg> <arg><option>--subsystem-nomatch=<replaceable>subsystem</replaceable></option></arg> <arg><option>--attr-match=<replaceable>attribute=value</replaceable></option></arg> @@ -61,6 +62,12 @@ </listitem> </varlistentry> <varlistentry> + <term><option>--action=<replaceable>action</replaceable></option></term> + <listitem> + <para>Type of event to be triggered. The default value is "add".</para> + </listitem> + </varlistentry> + <varlistentry> <term><option>--subsystem-match=<replaceable>subsystem</replaceable></option></term> <listitem> <para>Trigger events for devices which belong to a matching subsystem. This option |