chiark / gitweb /
udevtrigger: allow to specify action string
authorKay Sievers <kay.sievers@vrfy.org>
Mon, 9 Jul 2007 01:59:08 +0000 (03:59 +0200)
committerKay Sievers <kay.sievers@vrfy.org>
Mon, 9 Jul 2007 01:59:08 +0000 (03:59 +0200)
udevtest.c
udevtrigger.8
udevtrigger.c
udevtrigger.xml

index 418d43d..7b3ea63 100644 (file)
@@ -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 = {};
index 58a3794..5ef9e8f 100644 (file)
@@ -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.
index 3b5be20..4ef9612 100644 (file)
@@ -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);
index 60a7b1e..eb2b985 100644 (file)
@@ -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>
             </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