udevadm: allow to specify device by device ID (#37636)

This commit is contained in:
Yu Watanabe
2025-06-02 18:02:36 +09:00
committed by GitHub
6 changed files with 106 additions and 84 deletions

3
NEWS
View File

@@ -327,6 +327,9 @@ CHANGES WITH 258 in spe:
gained a knob PartialGenericSegmentationOffload= for controlling
Partial GSO support.
* 'udevadm info/trigger/test/test-builtin' commands now also take device
IDs to specify devices.
* udevadm test gained a new "--verbose" switch for generating
additional debug output for the test.

View File

@@ -28,41 +28,57 @@
<arg><option>--help</option></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>udevadm info <optional>options</optional> <optional>devpath</optional></command>
<command>udevadm info</command>
<arg choice="opt" rep="repeat"><replaceable>options</replaceable></arg>
<arg choice="opt" rep="repeat"><replaceable>devpath</replaceable>|<replaceable>syspath</replaceable>|<replaceable>id</replaceable>|<replaceable>unit</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>udevadm trigger <optional>options</optional> <optional>devpath</optional></command>
<command>udevadm trigger</command>
<arg choice="opt" rep="repeat"><replaceable>options</replaceable></arg>
<arg choice="opt" rep="repeat"><replaceable>devpath</replaceable>|<replaceable>syspath</replaceable>|<replaceable>id</replaceable>|<replaceable>unit</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>udevadm settle <optional>options</optional></command>
<command>udevadm settle</command>
<arg choice="opt" rep="repeat"><replaceable>options</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>udevadm control <replaceable>option</replaceable></command>
<command>udevadm control</command>
<arg choice="plain" rep="repeat"><replaceable>options</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>udevadm monitor <optional>options</optional></command>
<command>udevadm monitor</command>
<arg choice="opt" rep="repeat"><replaceable>options</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>udevadm test <optional>options</optional> <replaceable>devpath</replaceable></command>
<command>udevadm test</command>
<arg choice="opt" rep="repeat"><replaceable>options</replaceable></arg>
<arg choice="plain"><replaceable>devpath</replaceable>|<replaceable>syspath</replaceable>|<replaceable>id</replaceable>|<replaceable>unit</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>udevadm test-builtin <optional>options</optional> <replaceable>command</replaceable> <replaceable>devpath</replaceable></command>
<command>udevadm test-builtin</command>
<arg choice="opt" rep="repeat"><replaceable>options</replaceable></arg>
<arg choice="plain"><replaceable>command</replaceable></arg>
<arg choice="plain"><replaceable>devpath</replaceable>|<replaceable>syspath</replaceable>|<replaceable>id</replaceable>|<replaceable>unit</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>udevadm verify</command>
<arg choice="opt" rep="repeat">options</arg>
<arg choice="opt" rep="repeat"><replaceable>file</replaceable></arg>
<arg choice="opt" rep="repeat"><replaceable>options</replaceable></arg>
<arg choice="opt" rep="repeat"><replaceable>files</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>udevadm cat</command>
<arg choice="opt" rep="repeat">options</arg>
<arg choice="opt" rep="repeat"><replaceable>file</replaceable></arg>
<arg choice="opt" rep="repeat"><replaceable>options</replaceable></arg>
<arg choice="opt" rep="repeat"><replaceable>files</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>udevadm wait <optional>options</optional> <replaceable>device|syspath</replaceable></command>
<command>udevadm wait</command>
<arg choice="opt" rep="repeat"><replaceable>options</replaceable></arg>
<arg choice="plain" rep="repeat"><replaceable>devpath</replaceable>|<replaceable>syspath</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>udevadm lock <optional>options</optional> <replaceable>command</replaceable></command>
<command>udevadm lock</command>
<arg choice="opt" rep="repeat"><replaceable>options</replaceable></arg>
<arg choice="plain" rep="repeat"><replaceable>command</replaceable></arg>
</cmdsynopsis>
</refsynopsisdiv>
@@ -98,16 +114,18 @@
<refsect2>
<title>udevadm info
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>devpath</replaceable>|<replaceable>file</replaceable>|<replaceable>unit</replaceable></optional>
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>devpath</replaceable>|<replaceable>syspath</replaceable>|<replaceable>id</replaceable>|<replaceable>unit</replaceable></optional>
</title>
<para>Query the udev database for device information.</para>
<para>Positional arguments should be used to specify one or more devices. Each one may be a device name
(in which case it must start with <filename>/dev/</filename>), a sys path (in which case it must start
with <filename>/sys/</filename>), or a systemd device unit name (in which case it must end with
<literal>.device</literal>, see
with <filename>/sys/</filename>), a device ID (such as <literal>n1</literal>, <literal>c5:1</literal>,
or <literal>b259:1</literal>, see
<citerefentry><refentrytitle>sd_device_get_device_id</refentrytitle><manvolnum>3</manvolnum></citerefentry>).
or a systemd device unit name (in which case it must end with <literal>.device</literal>, see
<citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>).
</para>
@@ -410,14 +428,14 @@
<refsect2>
<title>udevadm trigger
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>devpath</replaceable>|<replaceable>file</replaceable>|<replaceable>unit</replaceable></optional>
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>devpath</replaceable>|<replaceable>syspath</replaceable>|<replaceable>id</replaceable>|<replaceable>unit</replaceable></optional>
</title>
<para>Request device events from the kernel. Primarily used to replay events at system coldplug time.</para>
<para>Takes device specifications as positional arguments. See the description of <command>info</command>
above.</para>
<para>Takes device specifications as positional arguments. See the description of
<command>udevadm info</command> above.</para>
<variablelist>
<varlistentry>
@@ -648,7 +666,7 @@
<refsect2>
<title>udevadm settle
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>options</replaceable></optional>
</title>
<para>Watches the udev event queue, and exits if all current events are handled.</para>
@@ -681,7 +699,7 @@
</refsect2>
<refsect2>
<title>udevadm control <replaceable>option</replaceable></title>
<title>udevadm control <replaceable>options</replaceable></title>
<para>Modify the internal state of the running udev daemon.</para>
@@ -832,7 +850,7 @@
<refsect2>
<title>udevadm monitor
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>options</replaceable></optional>
</title>
<para>Listens to the kernel uevents and events sent out by a udev rule
@@ -885,8 +903,8 @@
<refsect2>
<title>udevadm test
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>devpath</replaceable>|<replaceable>file</replaceable>|<replaceable>unit</replaceable></optional>
<optional><replaceable>options</replaceable></optional>
<replaceable>devpath</replaceable>|<replaceable>syspath</replaceable>|<replaceable>id</replaceable>|<replaceable>unit</replaceable>
</title>
<para>
@@ -950,9 +968,9 @@
<refsect2>
<title>udevadm test-builtin
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>options</replaceable></optional>
<replaceable>command</replaceable>
<optional><replaceable>devpath</replaceable>|<replaceable>file</replaceable>|<replaceable>unit</replaceable></optional>
<replaceable>devpath</replaceable>|<replaceable>file</replaceable>|<replaceable>unit</replaceable>
</title>
<para>Run a built-in command <replaceable>COMMAND</replaceable>
@@ -978,9 +996,8 @@
<refsect2>
<title>udevadm verify
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>file</replaceable></optional>
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>files</replaceable></optional>
</title>
<para>Verify syntactic, semantic, and stylistic correctness of udev rules files.</para>
@@ -1051,9 +1068,8 @@
<refsect2>
<title>udevadm cat
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>file</replaceable></optional>
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>file</replaceable></optional>
</title>
<para>Show udev rules files or udev.conf.</para>
@@ -1108,9 +1124,8 @@
<refsect2>
<title>udevadm wait
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>device|syspath</replaceable></optional>
<optional><replaceable>options</replaceable></optional>
<replaceable>devpath|syspath</replaceable>
</title>
<para>Wait for devices or device symlinks being created and initialized by
@@ -1170,9 +1185,8 @@
<refsect2>
<title>udevadm lock
<optional><replaceable>options</replaceable></optional>
<optional><replaceable>command</replaceable></optional>
<optional><replaceable>options</replaceable></optional>
<replaceable>command</replaceable>
</title>
<para><command>udevadm lock</command> takes an (advisory) exclusive lock on a block device (or all

View File

@@ -1276,7 +1276,7 @@ static int parse_argv(int argc, char *argv[]) {
}
int info_main(int argc, char *argv[], void *userdata) {
int r, ret;
int r;
r = parse_argv(argc, argv);
if (r <= 0)
@@ -1298,19 +1298,18 @@ int info_main(int argc, char *argv[], void *userdata) {
return print_tree(NULL);
}
ret = 0;
int ret = 0;
STRV_FOREACH(p, arg_devices) {
_cleanup_(sd_device_unrefp) sd_device *device = NULL;
r = find_device(*p, NULL, &device);
r = find_device(*p, /* prefix = */ NULL, &device);
if (r < 0) {
if (r == -EINVAL)
log_error_errno(r, "Bad argument \"%s\", expected an absolute path in /dev/ or /sys/ or a unit name: %m", *p);
log_error_errno(r, "Bad argument \"%s\", expected an absolute path in /dev/ or /sys/, device ID, or a unit name: %m", *p);
else
log_error_errno(r, "Unknown device \"%s\": %m", *p);
if (ret == 0)
ret = r;
RET_GATHER(ret, r);
continue;
}

View File

@@ -75,6 +75,9 @@ int find_device(const char *id, const char *prefix, sd_device **ret) {
assert(id);
assert(ret);
if (sd_device_new_from_device_id(ret, id) >= 0)
return 0;
if (sd_device_new_from_path(ret, id) >= 0)
return 0;

View File

@@ -82,6 +82,9 @@ udevadm control --revert
udevadm info /dev/null
udevadm info /sys/class/net/$netdev
udevadm info "$(systemd-escape -p --suffix device /sys/devices/virtual/net/$netdev)"
[[ "$(udevadm info --json=short n1 | jq -r .DEVICE_ID)" == n1 ]]
udevadm info "$(udevadm info --json=short /dev/null | jq -r .DEVICE_ID)"
udevadm info "$(udevadm info --json=short /sys/class/net/$netdev | jq -r .DEVICE_ID)"
udevadm info --property DEVNAME /sys/class/net/$netdev
udevadm info --property DEVNAME --value /sys/class/net/$netdev
udevadm info --property HELLO /sys/class/net/$netdev

View File

@@ -494,44 +494,44 @@ udev.xml ./refsect1[title="Rules Files"]/refsect2[title="Keys"]/variablelist[4]/
udev.xml ./refsect1[title="Rules Files"]/refsect2[title="Keys"]/variablelist[4]/varlistentry[term="$$"]
udevadm.xml ./refsect1[title="Options"]/variablelist/varlistentry[term="-d"]
udevadm.xml ./refsect1[title="Options"]/variablelist/varlistentry[term="-V"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-q"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-p"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-n"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-r"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-a"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-x"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-P"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-d"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-e"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-c"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-v"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-n"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-t"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-c"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-s"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-S"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-a"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-A"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-p"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-g"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-y"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-b"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm settle\n options\n "]/variablelist/varlistentry[term="-t"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm settle\n options\n "]/variablelist/varlistentry[term="-E"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control option"]/variablelist/varlistentry[term="-e"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control option"]/variablelist/varlistentry[term="-l"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control option"]/variablelist/varlistentry[term="-s"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control option"]/variablelist/varlistentry[term="-S"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control option"]/variablelist/varlistentry[term="-R"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control option"]/variablelist/varlistentry[term="-p"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control option"]/variablelist/varlistentry[term="-m"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control option"]/variablelist/varlistentry[term="-t"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm monitor\n options\n "]/variablelist/varlistentry[term="-k"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm monitor\n options\n "]/variablelist/varlistentry[term="-u"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm monitor\n options\n "]/variablelist/varlistentry[term="-p"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm monitor\n options\n "]/variablelist/varlistentry[term="-s"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm monitor\n options\n "]/variablelist/varlistentry[term="-t"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm test\n options\n devpath|file|unit\n "]/variablelist/varlistentry[term="-a"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-q"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-p"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-n"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-r"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-a"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-x"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-P"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-d"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-e"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm info\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-c"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-v"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-n"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-t"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-c"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-s"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-S"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-a"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-A"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-p"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-g"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-y"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm trigger\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-b"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm settle\n options\n "]/variablelist/varlistentry[term="-t"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm settle\n options\n "]/variablelist/varlistentry[term="-E"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control options…"]/variablelist/varlistentry[term="-e"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control options…"]/variablelist/varlistentry[term="-l"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control options…"]/variablelist/varlistentry[term="-s"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control options…"]/variablelist/varlistentry[term="-S"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control options…"]/variablelist/varlistentry[term="-R"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control options…"]/variablelist/varlistentry[term="-p"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control options…"]/variablelist/varlistentry[term="-m"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm control options…"]/variablelist/varlistentry[term="-t"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm monitor\n options\n "]/variablelist/varlistentry[term="-k"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm monitor\n options\n "]/variablelist/varlistentry[term="-u"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm monitor\n options\n "]/variablelist/varlistentry[term="-p"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm monitor\n options\n "]/variablelist/varlistentry[term="-s"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm monitor\n options\n "]/variablelist/varlistentry[term="-t"]
udevadm.xml ./refsect1[title="Options"]/refsect2[title="udevadm test\n options\n devpath|syspath|id|unit\n "]/variablelist/varlistentry[term="-a"]
vconsole.conf.xml ./refsect1[title="Options"]/variablelist/varlistentry[term="KEYMAP="]
vconsole.conf.xml ./refsect1[title="Options"]/variablelist/varlistentry[term="FONT="]
file-hierarchy.xml ./refsect1[title="General Structure"]/variablelist/varlistentry[term="/"]