mirror of
https://github.com/systemd/systemd.git
synced 2024-10-27 01:55:22 +03:00
udevadm,scsi_id: add short options to help strings and to the man page
Also clean things up a bit here and there.
This commit is contained in:
parent
ed142bdb68
commit
7643ac9a8a
176
man/udevadm.xml
176
man/udevadm.xml
@ -82,6 +82,7 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-h</option></term>
|
||||
<term><option>--help</option></term>
|
||||
<listitem>
|
||||
<para>Print help text.</para>
|
||||
@ -89,26 +90,28 @@
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<refsect2><title>udevadm info <replaceable>options</replaceable></title>
|
||||
<refsect2><title>udevadm info <optional><replaceable>OPTIONS</replaceable></optional> <optional><replaceable>DEVPATH</replaceable>|<replaceable>FILE</replaceable></optional></title>
|
||||
<para>Queries the udev database for device information
|
||||
stored in the udev database. It can also query the properties
|
||||
of a device from its sysfs representation to help creating udev
|
||||
rules that match this device.</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>--query=<replaceable>type</replaceable></option></term>
|
||||
<term><option>-q</option></term>
|
||||
<term><option>--query=<replaceable>TYPE</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Query the database for the specified type of device
|
||||
data. It needs the <option>--path</option> or
|
||||
<option>--name</option> to identify the specified
|
||||
device. Valid queries are: <constant>name</constant>,
|
||||
<constant>symlink</constant>, <constant>path</constant>,
|
||||
<constant>property</constant>,
|
||||
<option>--name</option> to identify the specified device.
|
||||
Valid <replaceable>TYPE</replaceable>s are:
|
||||
<constant>name</constant>, <constant>symlink</constant>,
|
||||
<constant>path</constant>, <constant>property</constant>,
|
||||
<constant>all</constant>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--path=<replaceable>devpath</replaceable></option></term>
|
||||
<term><option>-p</option></term>
|
||||
<term><option>--path=<replaceable>DEVPATH</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>The <filename>/sys</filename> path of the device to
|
||||
query, e.g.
|
||||
@ -121,7 +124,8 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--name=<replaceable>file</replaceable></option></term>
|
||||
<term><option>-n</option></term>
|
||||
<term><option>--name=<replaceable>FILE</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>The name of the device node or a symlink to query,
|
||||
e.g. <filename><optional>/dev</optional>/sda</filename>.
|
||||
@ -132,6 +136,7 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-r</option></term>
|
||||
<term><option>--root</option></term>
|
||||
<listitem>
|
||||
<para>Print absolute paths in <command>name</command> or <command>symlink</command>
|
||||
@ -139,6 +144,7 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-a</option></term>
|
||||
<term><option>--attribute-walk</option></term>
|
||||
<listitem>
|
||||
<para>Print all sysfs properties of the specified device that can be used
|
||||
@ -147,31 +153,36 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-x</option></term>
|
||||
<term><option>--export</option></term>
|
||||
<listitem>
|
||||
<para>Print output as key/value pairs. Values are enclosed in single quotes.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--export-prefix=<replaceable>name</replaceable></option></term>
|
||||
<term><option>-P</option></term>
|
||||
<term><option>--export-prefix=<replaceable>NAME</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Add a prefix to the key name of exported values.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--device-id-of-file=<replaceable>file</replaceable></option></term>
|
||||
<term><option>-d</option></term>
|
||||
<term><option>--device-id-of-file=<replaceable>FILE</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Print major/minor numbers of the underlying device, where the file
|
||||
lives on.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-e</option></term>
|
||||
<term><option>--export-db</option></term>
|
||||
<listitem>
|
||||
<para>Export the content of the udev database.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-c</option></term>
|
||||
<term><option>--cleanup-db</option></term>
|
||||
<listitem>
|
||||
<para>Cleanup the udev database.</para>
|
||||
@ -184,6 +195,7 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-h</option></term>
|
||||
<term><option>--help</option></term>
|
||||
<listitem>
|
||||
<para>Print help text.</para>
|
||||
@ -196,19 +208,22 @@
|
||||
<para>Request device events from the kernel. Primarily used to replay events at system coldplug time.</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>-v</option></term>
|
||||
<term><option>--verbose</option></term>
|
||||
<listitem>
|
||||
<para>Print the list of devices which will be triggered.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-n</option></term>
|
||||
<term><option>--dry-run</option></term>
|
||||
<listitem>
|
||||
<para>Do not actually trigger the event.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--type=<replaceable>type</replaceable></option></term>
|
||||
<term><option>-t</option></term>
|
||||
<term><option>--type=<replaceable>TYPE</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Trigger a specific type of devices. Valid types are:
|
||||
<command>devices</command>, <command>subsystems</command>.
|
||||
@ -216,68 +231,95 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--action=<replaceable>action</replaceable></option></term>
|
||||
<term><option>-c</option></term>
|
||||
<term><option>--action=<replaceable>ACTION</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Type of event to be triggered. The default value is <command>change</command>.</para>
|
||||
<para>Type of event to be triggered. The default value is
|
||||
<command>change</command>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--subsystem-match=<replaceable>subsystem</replaceable></option></term>
|
||||
<term><option>-s</option></term>
|
||||
<term><option>--subsystem-match=<replaceable>SUBSYSTEM</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Trigger events for devices which belong to a matching subsystem. This option
|
||||
can be specified multiple times and supports shell style pattern matching.</para>
|
||||
<para>Trigger events for devices which belong to a
|
||||
matching subsystem. This option can be specified multiple
|
||||
times and supports shell style pattern matching.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--subsystem-nomatch=<replaceable>subsystem</replaceable></option></term>
|
||||
<term><option>-S</option></term>
|
||||
<term><option>--subsystem-nomatch=<replaceable>SUBSYSTEM</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Do not trigger events for devices which belong to a matching subsystem. This option
|
||||
can be specified multiple times and supports shell style pattern matching.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--attr-match=<replaceable>attribute</replaceable>=<replaceable>value</replaceable></option></term>
|
||||
<term><option>-a</option></term>
|
||||
<term><option>--attr-match=<replaceable>ATTRIBUTE</replaceable>=<replaceable>VALUE</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Trigger events for devices with a matching sysfs attribute. If a value is specified
|
||||
along with the attribute name, the content of the attribute is matched against the given
|
||||
value using shell style pattern matching. If no value is specified, the existence of the
|
||||
sysfs attribute is checked. This option can be specified multiple times.</para>
|
||||
<para>Trigger events for devices with a matching sysfs
|
||||
attribute. If a value is specified along with the
|
||||
attribute name, the content of the attribute is matched
|
||||
against the given value using shell style pattern
|
||||
matching. If no value is specified, the existence of the
|
||||
sysfs attribute is checked. This option can be specified
|
||||
multiple times.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--attr-nomatch=<replaceable>attribute</replaceable>=<replaceable>value</replaceable></option></term>
|
||||
<term><option>-A</option></term>
|
||||
<term><option>--attr-nomatch=<replaceable>ATTRIBUTE</replaceable>=<replaceable>VALUE</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Do not trigger events for devices with a matching sysfs attribute. If a value is
|
||||
specified along with the attribute name, the content of the attribute is matched against
|
||||
the given value using shell style pattern matching. If no value is specified, the existence
|
||||
of the sysfs attribute is checked. This option can be specified multiple times.</para>
|
||||
<para>Do not trigger events for devices with a matching
|
||||
sysfs attribute. If a value is specified along with the
|
||||
attribute name, the content of the attribute is matched
|
||||
against the given value using shell style pattern
|
||||
matching. If no value is specified, the existence of the
|
||||
sysfs attribute is checked. This option can be specified
|
||||
multiple times.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--property-match=<replaceable>property</replaceable>=<replaceable>value</replaceable></option></term>
|
||||
<term><option>-p</option></term>
|
||||
<term><option>--property-match=<replaceable>PROPERTY</replaceable>=<replaceable>VALUE</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Trigger events for devices with a matching property value. This option can be
|
||||
specified multiple times and supports shell style pattern matching.</para>
|
||||
<para>Trigger events for devices with a matching property
|
||||
value. This option can be specified multiple times and
|
||||
supports shell style pattern matching.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--tag-match=<replaceable>property</replaceable></option></term>
|
||||
<term><option>-g</option></term>
|
||||
<term><option>--tag-match=<replaceable>PROPERTY</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Trigger events for devices with a matching tag. This option can be
|
||||
specified multiple times.</para>
|
||||
<para>Trigger events for devices with a matching tag. This
|
||||
option can be specified multiple times.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--sysname-match=<replaceable>name</replaceable></option></term>
|
||||
<term><option>-y</option></term>
|
||||
<term><option>--sysname-match=<replaceable>NAME</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Trigger events for devices with a matching sys device name. This option can be
|
||||
specified multiple times and supports shell style pattern matching.</para>
|
||||
<para>Trigger events for devices with a matching sys
|
||||
device name. This option can be specified multiple times
|
||||
and supports shell style pattern matching.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--parent-match=<replaceable>syspath</replaceable></option></term>
|
||||
<term><option>-b</option></term>
|
||||
<term><option>--parent-match=<replaceable>SYSPATH</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Trigger events for all children of a given device.</para>
|
||||
<para>Trigger events for all children of a given
|
||||
device.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-h</option></term>
|
||||
<term><option>--help</option></term>
|
||||
<listitem>
|
||||
<para>Print help text.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
@ -287,38 +329,46 @@
|
||||
<para>Watches the udev event queue, and exits if all current events are handled.</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>--timeout=<replaceable>seconds</replaceable></option></term>
|
||||
<term><option>-t</option></term>
|
||||
<term><option>--timeout=<replaceable>SECONDS</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Maximum number of seconds to wait for the event queue to become empty.
|
||||
The default value is 120 seconds. A value of 0 will check if the queue is empty
|
||||
and always return immediately.</para>
|
||||
<para>Maximum number of seconds to wait for the event
|
||||
queue to become empty. The default value is 120 seconds. A
|
||||
value of 0 will check if the queue is empty and always
|
||||
return immediately.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--seq-start=<replaceable>seqnum</replaceable></option></term>
|
||||
<term><option>-s</option></term>
|
||||
<term><option>--seq-start=<replaceable>SEQNUM</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Wait only for events after the given sequence number.</para>
|
||||
<para>Wait only for events after the given sequence
|
||||
number.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--seq-end=<replaceable>seqnum</replaceable></option></term>
|
||||
<term><option>-e</option></term>
|
||||
<term><option>--seq-end=<replaceable>SEQNUM</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Wait only for events before the given sequence number.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--exit-if-exists=<replaceable>file</replaceable></option></term>
|
||||
<term><option>-E</option></term>
|
||||
<term><option>--exit-if-exists=<replaceable>FILE</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Stop waiting if file exists.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-q</option></term>
|
||||
<term><option>--quiet</option></term>
|
||||
<listitem>
|
||||
<para>Do not print any output, like the remaining queue entries when reaching the timeout.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-h</option></term>
|
||||
<term><option>--help</option></term>
|
||||
<listitem>
|
||||
<para>Print help text.</para>
|
||||
@ -331,12 +381,14 @@
|
||||
<para>Modify the internal state of the running udev daemon.</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>-x</option></term>
|
||||
<term><option>--exit</option></term>
|
||||
<listitem>
|
||||
<para>Signal and wait for systemd-udevd to exit.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-l</option></term>
|
||||
<term><option>--log-priority=<replaceable>value</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Set the internal log level of systemd-udevd. Valid values are the numerical
|
||||
@ -345,6 +397,7 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-s</option></term>
|
||||
<term><option>--stop-exec-queue</option></term>
|
||||
<listitem>
|
||||
<para>Signal systemd-udevd to stop executing new events. Incoming events
|
||||
@ -352,12 +405,14 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-S</option></term>
|
||||
<term><option>--start-exec-queue</option></term>
|
||||
<listitem>
|
||||
<para>Signal systemd-udevd to enable the execution of events.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-R</option></term>
|
||||
<term><option>--reload</option></term>
|
||||
<listitem>
|
||||
<para>Signal systemd-udevd to reload the rules files and other databases like the kernel
|
||||
@ -366,12 +421,14 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-p</option></term>
|
||||
<term><option>--property=<replaceable>KEY</replaceable>=<replaceable>value</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Set a global property for all events.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-m</option></term>
|
||||
<term><option>--children-max=</option><replaceable>value</replaceable></term>
|
||||
<listitem>
|
||||
<para>Set the maximum number of events, systemd-udevd will handle at the
|
||||
@ -385,6 +442,7 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-h</option></term>
|
||||
<term><option>--help</option></term>
|
||||
<listitem>
|
||||
<para>Print help text.</para>
|
||||
@ -400,36 +458,42 @@
|
||||
</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>-k</option></term>
|
||||
<term><option>--kernel</option></term>
|
||||
<listitem>
|
||||
<para>Print the kernel uevents.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-u</option></term>
|
||||
<term><option>--udev</option></term>
|
||||
<listitem>
|
||||
<para>Print the udev event after the rule processing.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-p</option></term>
|
||||
<term><option>--property</option></term>
|
||||
<listitem>
|
||||
<para>Also print the properties of the event.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-s</option></term>
|
||||
<term><option>--subsystem-match=<replaceable>string[/string]</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Filter events by subsystem[/devtype]. Only udev events with a matching subsystem value will pass.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-t</option></term>
|
||||
<term><option>--tag-match=<replaceable>string</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Filter events by property. Only udev events with a given tag attached will pass.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-h</option></term>
|
||||
<term><option>--help</option></term>
|
||||
<listitem>
|
||||
<para>Print help text.</para>
|
||||
@ -442,6 +506,7 @@
|
||||
<para>Maintain the hardware database index in <filename>/etc/udev/hwdb.bin</filename>.</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>-u</option></term>
|
||||
<term><option>--update</option></term>
|
||||
<listitem>
|
||||
<para>Compile the hardware database information located in /usr/lib/udev/hwdb.d/,
|
||||
@ -452,6 +517,7 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-t</option></term>
|
||||
<term><option>--test=<replaceable>string</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Query the database with a modalias string, and print the
|
||||
@ -459,11 +525,19 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-r</option></term>
|
||||
<term><option>--root=<replaceable>string</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>Alternative root path in the filesystem for reading and writing files.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-h</option></term>
|
||||
<term><option>--help</option></term>
|
||||
<listitem>
|
||||
<para>Print help text.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect2>
|
||||
|
||||
@ -471,12 +545,14 @@
|
||||
<para>Simulate a udev event run for the given device, and print debug output.</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>-a</option></term>
|
||||
<term><option>--action=<replaceable>string</replaceable></option></term>
|
||||
<listitem>
|
||||
<para>The action string.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-N</option></term>
|
||||
<term><option>--resolve-names=<constant>early</constant>|<constant>late</constant>|<constant>never</constant></option></term>
|
||||
<listitem>
|
||||
<para>Specify when udevadm should resolve names of users
|
||||
@ -489,6 +565,7 @@
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>-h</option></term>
|
||||
<term><option>--help</option></term>
|
||||
<listitem>
|
||||
<para>Print help text.</para>
|
||||
@ -497,10 +574,13 @@
|
||||
</variablelist>
|
||||
</refsect2>
|
||||
|
||||
<refsect2><title>udevadm test-builtin <optional>options</optional> <replaceable>command</replaceable> <replaceable>devpath</replaceable></title>
|
||||
<para>Run a built-in command for the given device, and print debug output.</para>
|
||||
<refsect2><title>udevadm test-builtin <optional>options</optional> <replaceable>COMMAND</replaceable> <replaceable>DEVPATH</replaceable></title>
|
||||
<para>Run a built-in command <replaceable>COMMAND</replaceable>
|
||||
for device <replaceable>DEVPATH</replaceable>, and print debug
|
||||
output.</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><option>-h</option></term>
|
||||
<term><option>--help</option></term>
|
||||
<listitem>
|
||||
<para>Print help text.</para>
|
||||
|
@ -44,7 +44,7 @@ static const struct option options[] = {
|
||||
{ "replace-whitespace", no_argument, NULL, 'u' },
|
||||
{ "sg-version", required_argument, NULL, 's' },
|
||||
{ "verbose", no_argument, NULL, 'v' },
|
||||
{ "version", no_argument, NULL, 'V' },
|
||||
{ "version", no_argument, NULL, 'V' }, /* don't advertise -V */
|
||||
{ "export", no_argument, NULL, 'x' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{}
|
||||
@ -313,6 +313,22 @@ static int get_file_options(struct udev *udev,
|
||||
return retval;
|
||||
}
|
||||
|
||||
static void help(void) {
|
||||
printf("Usage: scsi_id [OPTION...] DEVICE\n"
|
||||
" -d,--device= device node for SG_IO commands\n"
|
||||
" -f,--config= location of config file\n"
|
||||
" -p,--page=0x80|0x83|pre-spc3-83 SCSI page (0x80, 0x83, pre-spc3-83)\n"
|
||||
" -s,--sg-version=3|4 use SGv3 or SGv4\n"
|
||||
" -b,--blacklisted threat device as blacklisted\n"
|
||||
" -g,--whitelisted threat device as whitelisted\n"
|
||||
" -u,--replace-whitespace replace all whitespace by underscores\n"
|
||||
" -v,--verbose verbose logging\n"
|
||||
" --version print version\n"
|
||||
" -x,--export print values as environment keys\n"
|
||||
" -h,--help print this help text\n\n");
|
||||
|
||||
}
|
||||
|
||||
static int set_options(struct udev *udev,
|
||||
int argc, char **argv,
|
||||
char *maj_min_dev)
|
||||
@ -325,7 +341,7 @@ static int set_options(struct udev *udev,
|
||||
* file) we have to reset this back to 1.
|
||||
*/
|
||||
optind = 1;
|
||||
while ((option = getopt_long(argc, argv, "d:f:ghp:uvVx", options, NULL)) >= 0)
|
||||
while ((option = getopt_long(argc, argv, "d:f:gp:uvVxh", options, NULL)) >= 0)
|
||||
switch (option) {
|
||||
case 'b':
|
||||
all_good = false;
|
||||
@ -345,18 +361,7 @@ static int set_options(struct udev *udev,
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
printf("Usage: scsi_id [OPTION...] DEVICE\n"
|
||||
" --device= device node for SG_IO commands\n"
|
||||
" --config= location of config file\n"
|
||||
" --page=0x80|0x83|pre-spc3-83 SCSI page (0x80, 0x83, pre-spc3-83)\n"
|
||||
" --sg-version=3|4 use SGv3 or SGv4\n"
|
||||
" --blacklisted threat device as blacklisted\n"
|
||||
" --whitelisted threat device as whitelisted\n"
|
||||
" --replace-whitespace replace all whitespace by underscores\n"
|
||||
" --verbose verbose logging\n"
|
||||
" --version print version\n"
|
||||
" --export print values as environment keys\n"
|
||||
" --help print this help text\n\n");
|
||||
help();
|
||||
exit(0);
|
||||
|
||||
case 'p':
|
||||
|
@ -30,35 +30,35 @@
|
||||
static void print_help(void)
|
||||
{
|
||||
printf("Usage: udevadm control COMMAND\n"
|
||||
" --exit instruct the daemon to cleanup and exit\n"
|
||||
" --log-priority=<level> set the udev log level for the daemon\n"
|
||||
" --stop-exec-queue do not execute events, queue only\n"
|
||||
" --start-exec-queue execute events, flush queue\n"
|
||||
" --reload reload rules and databases\n"
|
||||
" --property=<KEY>=<value> set a global property for all events\n"
|
||||
" --children-max=<N> maximum number of children\n"
|
||||
" --timeout=<seconds> maximum time to block for a reply\n"
|
||||
" --help print this help text\n\n");
|
||||
" -e,--exit instruct the daemon to cleanup and exit\n"
|
||||
" -l,--log-priority=LEVEL set the udev log level for the daemon\n"
|
||||
" -s,--stop-exec-queue do not execute events, queue only\n"
|
||||
" -S,--start-exec-queue execute events, flush queue\n"
|
||||
" -R,--reload reload rules and databases\n"
|
||||
" -p,--property=KEY=VALUE set a global property for all events\n"
|
||||
" -m,--children-max=N maximum number of children\n"
|
||||
" --timeout=SECONDS maximum time to block for a reply\n"
|
||||
" -h,--help print this help text\n\n");
|
||||
}
|
||||
|
||||
static int adm_control(struct udev *udev, int argc, char *argv[])
|
||||
{
|
||||
struct udev_ctrl *uctrl = NULL;
|
||||
int timeout = 60;
|
||||
int rc = 1;
|
||||
int rc = 1, c;
|
||||
|
||||
static const struct option options[] = {
|
||||
{ "exit", no_argument, NULL, 'e' },
|
||||
{ "log-priority", required_argument, NULL, 'l' },
|
||||
{ "stop-exec-queue", no_argument, NULL, 's' },
|
||||
{ "start-exec-queue", no_argument, NULL, 'S' },
|
||||
{ "reload", no_argument, NULL, 'R' },
|
||||
{ "reload-rules", no_argument, NULL, 'R' },
|
||||
{ "property", required_argument, NULL, 'p' },
|
||||
{ "env", required_argument, NULL, 'p' },
|
||||
{ "children-max", required_argument, NULL, 'm' },
|
||||
{ "timeout", required_argument, NULL, 't' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{ "exit", no_argument, NULL, 'e' },
|
||||
{ "log-priority", required_argument, NULL, 'l' },
|
||||
{ "stop-exec-queue", no_argument, NULL, 's' },
|
||||
{ "start-exec-queue", no_argument, NULL, 'S' },
|
||||
{ "reload", no_argument, NULL, 'R' },
|
||||
{ "reload-rules", no_argument, NULL, 'R' }, /* alias for -R */
|
||||
{ "property", required_argument, NULL, 'p' },
|
||||
{ "env", required_argument, NULL, 'p' }, /* alias for -p */
|
||||
{ "children-max", required_argument, NULL, 'm' },
|
||||
{ "timeout", required_argument, NULL, 't' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{}
|
||||
};
|
||||
|
||||
@ -71,14 +71,8 @@ static int adm_control(struct udev *udev, int argc, char *argv[])
|
||||
if (uctrl == NULL)
|
||||
return 2;
|
||||
|
||||
for (;;) {
|
||||
int option;
|
||||
|
||||
option = getopt_long(argc, argv, "el:sSRp:m:h", options, NULL);
|
||||
if (option == -1)
|
||||
break;
|
||||
|
||||
switch (option) {
|
||||
while ((c = getopt_long(argc, argv, "el:sSRp:m:h", options, NULL)) >= 0)
|
||||
switch (c) {
|
||||
case 'e':
|
||||
if (udev_ctrl_send_exit(uctrl, timeout) < 0)
|
||||
rc = 2;
|
||||
@ -157,12 +151,11 @@ static int adm_control(struct udev *udev, int argc, char *argv[])
|
||||
rc = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (argv[optind] != NULL)
|
||||
fprintf(stderr, "unknown option\n");
|
||||
if (optind < argc)
|
||||
fprintf(stderr, "Extraneous argument: %s\n", argv[optind]);
|
||||
else if (optind == 1)
|
||||
fprintf(stderr, "missing option\n");
|
||||
fprintf(stderr, "Option missing\n");
|
||||
out:
|
||||
udev_ctrl_unref(uctrl);
|
||||
return rc;
|
||||
|
@ -526,35 +526,29 @@ static int import_file(struct udev *udev, struct trie *trie, const char *filenam
|
||||
|
||||
static void help(void) {
|
||||
printf("Usage: udevadm hwdb OPTIONS\n"
|
||||
" --update update the hardware database\n"
|
||||
" --test=<modalias> query database and print result\n"
|
||||
" --root=<path> alternative root path in the filesystem\n"
|
||||
" --help\n\n");
|
||||
" -u,--update update the hardware database\n"
|
||||
" -t,--test=MODALIAS query database and print result\n"
|
||||
" -r,--root=PATH alternative root path in the filesystem\n"
|
||||
" -h,--help\n\n");
|
||||
}
|
||||
|
||||
static int adm_hwdb(struct udev *udev, int argc, char *argv[]) {
|
||||
static const struct option options[] = {
|
||||
{ "update", no_argument, NULL, 'u' },
|
||||
{ "root", required_argument, NULL, 'r' },
|
||||
{ "test", required_argument, NULL, 't' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{ "update", no_argument, NULL, 'u' },
|
||||
{ "test", required_argument, NULL, 't' },
|
||||
{ "root", required_argument, NULL, 'r' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{}
|
||||
};
|
||||
const char *test = NULL;
|
||||
const char *root = "";
|
||||
bool update = false;
|
||||
struct trie *trie = NULL;
|
||||
int err;
|
||||
int err, c;
|
||||
int rc = EXIT_SUCCESS;
|
||||
|
||||
for (;;) {
|
||||
int option;
|
||||
|
||||
option = getopt_long(argc, argv, "ut:r:h", options, NULL);
|
||||
if (option == -1)
|
||||
break;
|
||||
|
||||
switch (option) {
|
||||
while ((c = getopt_long(argc, argv, "ut:r:h", options, NULL)) >= 0)
|
||||
switch(c) {
|
||||
case 'u':
|
||||
update = true;
|
||||
break;
|
||||
@ -567,12 +561,15 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) {
|
||||
case 'h':
|
||||
help();
|
||||
return EXIT_SUCCESS;
|
||||
case '?':
|
||||
return EXIT_FAILURE;
|
||||
default:
|
||||
assert_not_reached("Unknown option");
|
||||
}
|
||||
}
|
||||
|
||||
if (!update && !test) {
|
||||
help();
|
||||
return EXIT_SUCCESS;
|
||||
log_error("Either --update or --test must be used");
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (update) {
|
||||
|
@ -302,43 +302,44 @@ static int uinfo(struct udev *udev, int argc, char *argv[])
|
||||
const char *export_prefix = NULL;
|
||||
char name[UTIL_PATH_SIZE];
|
||||
struct udev_list_entry *list_entry;
|
||||
int rc = 0;
|
||||
int rc = 0, c;
|
||||
|
||||
static const struct option options[] = {
|
||||
{ "name", required_argument, NULL, 'n' },
|
||||
{ "path", required_argument, NULL, 'p' },
|
||||
{ "query", required_argument, NULL, 'q' },
|
||||
{ "attribute-walk", no_argument, NULL, 'a' },
|
||||
{ "cleanup-db", no_argument, NULL, 'c' },
|
||||
{ "export-db", no_argument, NULL, 'e' },
|
||||
{ "root", no_argument, NULL, 'r' },
|
||||
{ "name", required_argument, NULL, 'n' },
|
||||
{ "path", required_argument, NULL, 'p' },
|
||||
{ "query", required_argument, NULL, 'q' },
|
||||
{ "attribute-walk", no_argument, NULL, 'a' },
|
||||
{ "cleanup-db", no_argument, NULL, 'c' },
|
||||
{ "export-db", no_argument, NULL, 'e' },
|
||||
{ "root", no_argument, NULL, 'r' },
|
||||
{ "device-id-of-file", required_argument, NULL, 'd' },
|
||||
{ "export", no_argument, NULL, 'x' },
|
||||
{ "export-prefix", required_argument, NULL, 'P' },
|
||||
{ "version", no_argument, NULL, 'V' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{ "export", no_argument, NULL, 'x' },
|
||||
{ "export-prefix", required_argument, NULL, 'P' },
|
||||
{ "version", no_argument, NULL, 'V' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{}
|
||||
};
|
||||
|
||||
static const char *usage =
|
||||
"Usage: udevadm info OPTIONS\n"
|
||||
" --query=<type> query device information:\n"
|
||||
"Usage: udevadm info [OPTIONS] [DEVPATH|FILE]\n"
|
||||
" -q,--query=TYPE query device information:\n"
|
||||
" name name of device node\n"
|
||||
" symlink pointing to node\n"
|
||||
" path sys device path\n"
|
||||
" property the device properties\n"
|
||||
" all all values\n"
|
||||
" --path=<syspath> sys device path used for query or attribute walk\n"
|
||||
" --name=<name> node or symlink name used for query or attribute walk\n"
|
||||
" --root prepend dev directory to path names\n"
|
||||
" --attribute-walk print all key matches while walking along the chain\n"
|
||||
" -p,--path=SYSPATH sys device path used for query or attribute walk\n"
|
||||
" -n,--name=NAME node or symlink name used for query or attribute walk\n"
|
||||
" -r,--root prepend dev directory to path names\n"
|
||||
" -a,--attribute-walk print all key matches walking along the chain\n"
|
||||
" of parent devices\n"
|
||||
" --device-id-of-file=<file> print major:minor of device containing this file\n"
|
||||
" --export export key/value pairs\n"
|
||||
" --export-prefix export the key name with a prefix\n"
|
||||
" --export-db export the content of the udev database\n"
|
||||
" --cleanup-db cleanup the udev database\n"
|
||||
" --help\n";
|
||||
" -d,--device-id-of-file=FILE print major:minor of device containing this file\n"
|
||||
" -x,--export export key/value pairs\n"
|
||||
" -P,--export-prefix export the key name with a prefix\n"
|
||||
" -e,--export-db export the content of the udev database\n"
|
||||
" -c,--cleanup-db cleanup the udev database\n"
|
||||
" --version print version of the program\n"
|
||||
" -h,--help print this message\n";
|
||||
|
||||
enum action_type {
|
||||
ACTION_QUERY,
|
||||
@ -354,14 +355,8 @@ static int uinfo(struct udev *udev, int argc, char *argv[])
|
||||
QUERY_ALL,
|
||||
} query = QUERY_ALL;
|
||||
|
||||
for (;;) {
|
||||
int option;
|
||||
|
||||
option = getopt_long(argc, argv, "aced:n:p:q:rxP:RVh", options, NULL);
|
||||
if (option == -1)
|
||||
break;
|
||||
|
||||
switch (option) {
|
||||
while ((c = getopt_long(argc, argv, "aced:n:p:q:rxP:RVh", options, NULL)) >= 0)
|
||||
switch (c) {
|
||||
case 'n': {
|
||||
if (device != NULL) {
|
||||
fprintf(stderr, "device already specified\n");
|
||||
@ -441,7 +436,6 @@ static int uinfo(struct udev *udev, int argc, char *argv[])
|
||||
rc = 1;
|
||||
goto exit;
|
||||
}
|
||||
}
|
||||
|
||||
switch (action) {
|
||||
case ACTION_QUERY:
|
||||
|
@ -64,6 +64,16 @@ static void print_device(struct udev_device *device, const char *source, int pro
|
||||
}
|
||||
}
|
||||
|
||||
static void help(void) {
|
||||
printf("Usage: udevadm monitor [--property] [--kernel] [--udev] [--help]\n"
|
||||
" -p,--property print the event properties\n"
|
||||
" -k,--kernel print kernel uevents\n"
|
||||
" -u,--udev print udev events\n"
|
||||
" -s,--subsystem-match=SUBSYSTEM[/DEVTYPE] filter events by subsystem\n"
|
||||
" -t,--tag-match=TAG filter events by tag\n"
|
||||
" -h,--help\n\n");
|
||||
}
|
||||
|
||||
static int adm_monitor(struct udev *udev, int argc, char *argv[])
|
||||
{
|
||||
struct sigaction act = {};
|
||||
@ -79,28 +89,24 @@ static int adm_monitor(struct udev *udev, int argc, char *argv[])
|
||||
int fd_ep = -1;
|
||||
int fd_kernel = -1, fd_udev = -1;
|
||||
struct epoll_event ep_kernel, ep_udev;
|
||||
int rc = 0;
|
||||
int rc = 0, c;
|
||||
|
||||
static const struct option options[] = {
|
||||
{ "property", no_argument, NULL, 'p' },
|
||||
{ "environment", no_argument, NULL, 'e' },
|
||||
{ "kernel", no_argument, NULL, 'k' },
|
||||
{ "udev", no_argument, NULL, 'u' },
|
||||
{ "property", no_argument, NULL, 'p' },
|
||||
{ "environment", no_argument, NULL, 'e' }, /* alias for -p */
|
||||
{ "kernel", no_argument, NULL, 'k' },
|
||||
{ "udev", no_argument, NULL, 'u' },
|
||||
{ "subsystem-match", required_argument, NULL, 's' },
|
||||
{ "tag-match", required_argument, NULL, 't' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{ "tag-match", required_argument, NULL, 't' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{}
|
||||
};
|
||||
|
||||
udev_list_init(udev, &subsystem_match_list, true);
|
||||
udev_list_init(udev, &tag_match_list, true);
|
||||
|
||||
for (;;) {
|
||||
option = getopt_long(argc, argv, "pekus:t:h", options, NULL);
|
||||
if (option == -1)
|
||||
break;
|
||||
|
||||
switch (option) {
|
||||
while((c = getopt_long(argc, argv, "pekus:t:h", options, NULL)) >= 0)
|
||||
switch (c) {
|
||||
case 'p':
|
||||
case 'e':
|
||||
prop = true;
|
||||
@ -129,19 +135,12 @@ static int adm_monitor(struct udev *udev, int argc, char *argv[])
|
||||
udev_list_entry_add(&tag_match_list, optarg, NULL);
|
||||
break;
|
||||
case 'h':
|
||||
printf("Usage: udevadm monitor [--property] [--kernel] [--udev] [--help]\n"
|
||||
" --property print the event properties\n"
|
||||
" --kernel print kernel uevents\n"
|
||||
" --udev print udev events\n"
|
||||
" --subsystem-match=<subsystem[/devtype]> filter events by subsystem\n"
|
||||
" --tag-match=<tag> filter events by tag\n"
|
||||
" --help\n\n");
|
||||
help();
|
||||
goto out;
|
||||
default:
|
||||
rc = 1;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
if (!print_kernel && !print_udev) {
|
||||
print_kernel = true;
|
||||
|
@ -37,15 +37,25 @@
|
||||
#include "udev.h"
|
||||
#include "util.h"
|
||||
|
||||
static void help(void) {
|
||||
printf("Usage: udevadm settle OPTIONS\n"
|
||||
" -t,--timeout=<seconds> maximum time to wait for events\n"
|
||||
" -s,--seq-start=<seqnum> first seqnum to wait for\n"
|
||||
" -e,--seq-end=<seqnum> last seqnum to wait for\n"
|
||||
" -E,--exit-if-exists=<file> stop waiting if file exists\n"
|
||||
" -q,--quiet do not print list after timeout\n"
|
||||
" -h,--help\n\n");
|
||||
}
|
||||
|
||||
static int adm_settle(struct udev *udev, int argc, char *argv[])
|
||||
{
|
||||
static const struct option options[] = {
|
||||
{ "seq-start", required_argument, NULL, 's' },
|
||||
{ "seq-end", required_argument, NULL, 'e' },
|
||||
{ "timeout", required_argument, NULL, 't' },
|
||||
{ "seq-start", required_argument, NULL, 's' },
|
||||
{ "seq-end", required_argument, NULL, 'e' },
|
||||
{ "timeout", required_argument, NULL, 't' },
|
||||
{ "exit-if-exists", required_argument, NULL, 'E' },
|
||||
{ "quiet", no_argument, NULL, 'q' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{ "quiet", no_argument, NULL, 'q' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{}
|
||||
};
|
||||
usec_t start_usec = now(CLOCK_MONOTONIC);
|
||||
@ -56,21 +66,10 @@ static int adm_settle(struct udev *udev, int argc, char *argv[])
|
||||
unsigned int timeout = 120;
|
||||
struct pollfd pfd[1] = { {.fd = -1}, };
|
||||
struct udev_queue *udev_queue = NULL;
|
||||
int rc = EXIT_FAILURE;
|
||||
int rc = EXIT_FAILURE, c;
|
||||
|
||||
for (;;) {
|
||||
int option;
|
||||
|
||||
option = getopt_long(argc, argv, "s:e:t:E:qh", options, NULL);
|
||||
if (option == -1) {
|
||||
if (optind < argc) {
|
||||
fprintf(stderr, "Extraneous argument: '%s'\n", argv[optind]);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
switch (option) {
|
||||
while ((c = getopt_long(argc, argv, "s:e:t:E:qh", options, NULL)) >= 0)
|
||||
switch (c) {
|
||||
case 's':
|
||||
start = strtoull(optarg, NULL, 0);
|
||||
break;
|
||||
@ -87,25 +86,25 @@ static int adm_settle(struct udev *udev, int argc, char *argv[])
|
||||
exit(EXIT_FAILURE);
|
||||
};
|
||||
break;
|
||||
};
|
||||
case 'q':
|
||||
quiet = 1;
|
||||
break;
|
||||
}
|
||||
case 'E':
|
||||
exists = optarg;
|
||||
break;
|
||||
case 'q':
|
||||
quiet = 1;
|
||||
break;
|
||||
case 'h':
|
||||
printf("Usage: udevadm settle OPTIONS\n"
|
||||
" --timeout=<seconds> maximum time to wait for events\n"
|
||||
" --seq-start=<seqnum> first seqnum to wait for\n"
|
||||
" --seq-end=<seqnum> last seqnum to wait for\n"
|
||||
" --exit-if-exists=<file> stop waiting if file exists\n"
|
||||
" --quiet do not print list after timeout\n"
|
||||
" --help\n\n");
|
||||
help();
|
||||
exit(EXIT_SUCCESS);
|
||||
default:
|
||||
case '?':
|
||||
exit(EXIT_FAILURE);
|
||||
default:
|
||||
assert_not_reached("Unkown argument");
|
||||
}
|
||||
|
||||
if (optind < argc) {
|
||||
fprintf(stderr, "Extraneous argument: '%s'\n", argv[optind]);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
udev_queue = udev_queue_new(udev);
|
||||
|
@ -37,7 +37,7 @@
|
||||
static void help(struct udev *udev)
|
||||
{
|
||||
fprintf(stderr, "\n");
|
||||
fprintf(stderr, "Usage: udevadm builtin [--help] <command> <syspath>\n");
|
||||
fprintf(stderr, "Usage: udevadm builtin [--help] COMMAND SYSPATH\n");
|
||||
udev_builtin_list(udev);
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
@ -53,21 +53,14 @@ static int adm_builtin(struct udev *udev, int argc, char *argv[])
|
||||
char filename[UTIL_PATH_SIZE];
|
||||
struct udev_device *dev = NULL;
|
||||
enum udev_builtin_cmd cmd;
|
||||
int rc = EXIT_SUCCESS;
|
||||
int rc = EXIT_SUCCESS, c;
|
||||
|
||||
for (;;) {
|
||||
int option;
|
||||
|
||||
option = getopt_long(argc, argv, "h", options, NULL);
|
||||
if (option == -1)
|
||||
break;
|
||||
|
||||
switch (option) {
|
||||
while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0)
|
||||
switch (c) {
|
||||
case 'h':
|
||||
help(udev);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
command = argv[optind++];
|
||||
if (command == NULL) {
|
||||
@ -79,7 +72,7 @@ static int adm_builtin(struct udev *udev, int argc, char *argv[])
|
||||
|
||||
syspath = argv[optind++];
|
||||
if (syspath == NULL) {
|
||||
fprintf(stderr, "syspath missing\n\n");
|
||||
fprintf(stderr, "syspath missing\n");
|
||||
rc = 3;
|
||||
goto out;
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ static int adm_test(struct udev *udev, int argc, char *argv[])
|
||||
struct udev_list_entry *entry;
|
||||
sigset_t mask, sigmask_orig;
|
||||
int err;
|
||||
int rc = 0;
|
||||
int rc = 0, c;
|
||||
|
||||
static const struct option options[] = {
|
||||
{ "action", required_argument, NULL, 'a' },
|
||||
@ -54,14 +54,8 @@ static int adm_test(struct udev *udev, int argc, char *argv[])
|
||||
|
||||
log_debug("version %s\n", VERSION);
|
||||
|
||||
for (;;) {
|
||||
int option;
|
||||
|
||||
option = getopt_long(argc, argv, "a:s:N:fh", options, NULL);
|
||||
if (option == -1)
|
||||
break;
|
||||
|
||||
switch (option) {
|
||||
while((c = getopt_long(argc, argv, "a:N:h", options, NULL)) >= 0)
|
||||
switch (c) {
|
||||
case 'a':
|
||||
action = optarg;
|
||||
break;
|
||||
@ -80,15 +74,18 @@ static int adm_test(struct udev *udev, int argc, char *argv[])
|
||||
break;
|
||||
case 'h':
|
||||
printf("Usage: udevadm test OPTIONS <syspath>\n"
|
||||
" --action=<string> set action string\n"
|
||||
" --help\n\n");
|
||||
" -a,--action=ACTION set action string\n"
|
||||
" -N,--resolve-names=early|late|never when to resolve names\n"
|
||||
" -h,--help print this help string\n"
|
||||
"\n");
|
||||
exit(EXIT_SUCCESS);
|
||||
default:
|
||||
case '?':
|
||||
exit(EXIT_FAILURE);
|
||||
default:
|
||||
assert_not_reached("Unknown option");
|
||||
}
|
||||
}
|
||||
syspath = argv[optind];
|
||||
|
||||
syspath = argv[optind];
|
||||
if (syspath == NULL) {
|
||||
fprintf(stderr, "syspath parameter missing\n");
|
||||
rc = 2;
|
||||
|
@ -73,22 +73,41 @@ static const char *keyval(const char *str, const char **val, char *buf, size_t s
|
||||
return buf;
|
||||
}
|
||||
|
||||
static void help(void) {
|
||||
printf("Usage: udevadm trigger OPTIONS\n"
|
||||
" -v,--verbose print the list of devices while running\n"
|
||||
" -n,--dry-run do not actually trigger the events\n"
|
||||
" -t,--type= type of events to trigger\n"
|
||||
" devices sys devices (default)\n"
|
||||
" subsystems sys subsystems and drivers\n"
|
||||
" -c,--action=<action> event action value, default is \"change\"\n"
|
||||
" -s,--subsystem-match=<subsystem> trigger devices from a matching subsystem\n"
|
||||
" -S,--subsystem-nomatch=<subsystem> exclude devices from a matching subsystem\n"
|
||||
" -a,--attr-match=<file[=<value>]> trigger devices with a matching attribute\n"
|
||||
" -A,--attr-nomatch=<file[=<value>]> exclude devices with a matching attribute\n"
|
||||
" -p,--property-match=<key>=<value> trigger devices with a matching property\n"
|
||||
" -g,--tag-match=<key>=<value> trigger devices with a matching property\n"
|
||||
" -y,--sysname-match=<name> trigger devices with a matching name\n"
|
||||
" -b,--parent-match=<name> trigger devices with that parent device\n"
|
||||
" -h,--help\n\n");
|
||||
}
|
||||
|
||||
static int adm_trigger(struct udev *udev, int argc, char *argv[])
|
||||
{
|
||||
static const struct option options[] = {
|
||||
{ "verbose", no_argument, NULL, 'v' },
|
||||
{ "dry-run", no_argument, NULL, 'n' },
|
||||
{ "type", required_argument, NULL, 't' },
|
||||
{ "action", required_argument, NULL, 'c' },
|
||||
{ "subsystem-match", required_argument, NULL, 's' },
|
||||
{ "verbose", no_argument, NULL, 'v' },
|
||||
{ "dry-run", no_argument, NULL, 'n' },
|
||||
{ "type", required_argument, NULL, 't' },
|
||||
{ "action", required_argument, NULL, 'c' },
|
||||
{ "subsystem-match", required_argument, NULL, 's' },
|
||||
{ "subsystem-nomatch", required_argument, NULL, 'S' },
|
||||
{ "attr-match", required_argument, NULL, 'a' },
|
||||
{ "attr-nomatch", required_argument, NULL, 'A' },
|
||||
{ "property-match", required_argument, NULL, 'p' },
|
||||
{ "tag-match", required_argument, NULL, 'g' },
|
||||
{ "sysname-match", required_argument, NULL, 'y' },
|
||||
{ "parent-match", required_argument, NULL, 'b' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{ "attr-match", required_argument, NULL, 'a' },
|
||||
{ "attr-nomatch", required_argument, NULL, 'A' },
|
||||
{ "property-match", required_argument, NULL, 'p' },
|
||||
{ "tag-match", required_argument, NULL, 'g' },
|
||||
{ "sysname-match", required_argument, NULL, 'y' },
|
||||
{ "parent-match", required_argument, NULL, 'b' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{}
|
||||
};
|
||||
enum {
|
||||
@ -98,6 +117,7 @@ static int adm_trigger(struct udev *udev, int argc, char *argv[])
|
||||
const char *action = "change";
|
||||
struct udev_enumerate *udev_enumerate;
|
||||
int rc = 0;
|
||||
int c;
|
||||
|
||||
udev_enumerate = udev_enumerate_new(udev);
|
||||
if (udev_enumerate == NULL) {
|
||||
@ -105,23 +125,12 @@ static int adm_trigger(struct udev *udev, int argc, char *argv[])
|
||||
goto exit;
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
int option;
|
||||
while ((c = getopt_long(argc, argv, "vno:t:c:s:S:a:A:p:g:y:b:h", options, NULL)) >= 0) {
|
||||
const char *key;
|
||||
const char *val;
|
||||
char buf[UTIL_PATH_SIZE];
|
||||
|
||||
option = getopt_long(argc, argv, "vng:o:t:hc:p:s:S:a:A:y:b:", options, NULL);
|
||||
if (option == -1) {
|
||||
if (optind < argc) {
|
||||
fprintf(stderr, "Extraneous argument: '%s'\n", argv[optind]);
|
||||
rc = 1;
|
||||
goto exit;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
switch (option) {
|
||||
switch (c) {
|
||||
case 'v':
|
||||
verbose = 1;
|
||||
break;
|
||||
@ -194,29 +203,21 @@ static int adm_trigger(struct udev *udev, int argc, char *argv[])
|
||||
break;
|
||||
}
|
||||
case 'h':
|
||||
printf("Usage: udevadm trigger OPTIONS\n"
|
||||
" --verbose print the list of devices while running\n"
|
||||
" --dry-run do not actually trigger the events\n"
|
||||
" --type= type of events to trigger\n"
|
||||
" devices sys devices (default)\n"
|
||||
" subsystems sys subsystems and drivers\n"
|
||||
" --action=<action> event action value, default is \"change\"\n"
|
||||
" --subsystem-match=<subsystem> trigger devices from a matching subsystem\n"
|
||||
" --subsystem-nomatch=<subsystem> exclude devices from a matching subsystem\n"
|
||||
" --attr-match=<file[=<value>]> trigger devices with a matching attribute\n"
|
||||
" --attr-nomatch=<file[=<value>]> exclude devices with a matching attribute\n"
|
||||
" --property-match=<key>=<value> trigger devices with a matching property\n"
|
||||
" --tag-match=<key>=<value> trigger devices with a matching property\n"
|
||||
" --sysname-match=<name> trigger devices with a matching name\n"
|
||||
" --parent-match=<name> trigger devices with that parent device\n"
|
||||
" --help\n\n");
|
||||
help();
|
||||
goto exit;
|
||||
default:
|
||||
case '?':
|
||||
rc = 1;
|
||||
goto exit;
|
||||
default:
|
||||
assert_not_reached("Unknown option");
|
||||
}
|
||||
}
|
||||
|
||||
if (optind < argc) {
|
||||
fprintf(stderr, "Extraneous argument: '%s'\n", argv[optind]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
switch (device_type) {
|
||||
case TYPE_SUBSYSTEMS:
|
||||
udev_enumerate_scan_subsystems(udev_enumerate);
|
||||
|
Loading…
Reference in New Issue
Block a user