mirror of
https://github.com/systemd/systemd.git
synced 2025-03-19 22:50:17 +03:00
analyze: change behaviour of combined --to/from--pattern
We would require a match against all three: patterns specified with --to, with --from, and as positional arguments to show an edge. This does not seem useful. Let instead the positional args behave like they were specified in both --to and --from, which is fairly intuitive and should be more useful.
This commit is contained in:
parent
ee5de57b9d
commit
6ecb6cec66
@ -227,13 +227,22 @@
|
||||
|
||||
<listitem><para>When used in conjunction with the
|
||||
<command>dot</command> command (see above), this selects which
|
||||
relationships are shown in the dependency graph. They both
|
||||
require
|
||||
relationships are shown in the dependency graph. Both options
|
||||
require a
|
||||
<citerefentry><refentrytitle>glob</refentrytitle><manvolnum>7</manvolnum></citerefentry>
|
||||
patterns as arguments, which are matched against left-hand and
|
||||
right-hand, respectively, nodes of a relationship. Each of
|
||||
these can be used more than once, which means a unit name must
|
||||
match one of the given values.</para></listitem>
|
||||
pattern as an argument, which will be matched against the
|
||||
left-hand and the right-hand, respectively, nodes of a
|
||||
relationship.</para>
|
||||
|
||||
<para>Each of these can be used more than once, in which case
|
||||
the unit name must match one of the values. When tests for
|
||||
both sides of the relation are present, a relation must pass
|
||||
both tests to be shown. When patterns are also specified as
|
||||
positional arguments, they must match at least one side of the
|
||||
relation. In other words, patterns specified with those two
|
||||
options will trim the list of edges matched by the positional
|
||||
arguments, if any are given, and fully determine the list of
|
||||
edges shown otherwise.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
@ -252,7 +261,7 @@
|
||||
<term><option>--no-man</option></term>
|
||||
|
||||
<listitem><para>Do not invoke man to verify the existence of
|
||||
man pages listen in <varname>Documentation=</varname>.
|
||||
man pages listed in <varname>Documentation=</varname>.
|
||||
</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
@ -974,24 +974,34 @@ static int graph_one_property(sd_bus *bus, const UnitInfo *u, const char* prop,
|
||||
_cleanup_strv_free_ char **units = NULL;
|
||||
char **unit;
|
||||
int r;
|
||||
bool match_patterns;
|
||||
|
||||
assert(u);
|
||||
assert(prop);
|
||||
assert(color);
|
||||
|
||||
match_patterns = strv_fnmatch(u->id, patterns, 0);
|
||||
|
||||
if (!strv_isempty(arg_dot_from_patterns) &&
|
||||
!match_patterns &&
|
||||
!strv_fnmatch(u->id, arg_dot_from_patterns, 0))
|
||||
return 0;
|
||||
|
||||
r = bus_get_unit_property_strv(bus, u->unit_path, prop, &units);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
STRV_FOREACH(unit, units) {
|
||||
if (!strv_fnmatch_or_empty(u->id, arg_dot_from_patterns, 0))
|
||||
bool match_patterns2;
|
||||
|
||||
match_patterns2 = strv_fnmatch(*unit, patterns, 0);
|
||||
|
||||
if (!strv_isempty(arg_dot_to_patterns) &&
|
||||
!match_patterns2 &&
|
||||
!strv_fnmatch(*unit, arg_dot_to_patterns, 0))
|
||||
continue;
|
||||
|
||||
if (!strv_fnmatch_or_empty(*unit, arg_dot_to_patterns, 0))
|
||||
continue;
|
||||
|
||||
if (!strv_fnmatch_or_empty(u->id, patterns, 0) &&
|
||||
!strv_fnmatch_or_empty(*unit, patterns, 0))
|
||||
if (!strv_isempty(patterns) && !match_patterns && !match_patterns2)
|
||||
continue;
|
||||
|
||||
printf("\t\"%s\"->\"%s\" [color=\"%s\"];\n", u->id, *unit, color);
|
||||
|
Loading…
x
Reference in New Issue
Block a user