|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
From 6ce0f84be6b567660fc4ad4e766ef14217392c05 Mon Sep 17 00:00:00 2001
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
Date: Wed, 29 Oct 2014 22:46:30 -0400
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
Subject: [PATCH] systemctl: let list-{units,unit-files } honour --type
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
The docs don't clarify what is expected, but I don't see any reason
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
why --type should be ignored.
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
Also restucture the compund conditions into separate clauses for
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
easier reading.
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
(cherry picked from commit 6c71341aeecc3d092ed90f66e1b2c481b8e260ff)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
---
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
src/systemctl/systemctl.c | 48 ++++++++++++++++++++++++++++++++++++-----------
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
1 file changed, 37 insertions(+), 11 deletions(-)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
index 28eaa6a847..b71040be40 100644
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
--- a/src/systemctl/systemctl.c
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+++ b/src/systemctl/systemctl.c
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
@@ -301,21 +301,37 @@ static int compare_unit_info(const void *a, const void *b) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
static bool output_show_unit(const UnitInfo *u, char **patterns) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- const char *dot;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
if (!strv_isempty(patterns)) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
char **pattern;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
STRV_FOREACH(pattern, patterns)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
if (fnmatch(*pattern, u->id, FNM_NOESCAPE) == 0)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- return true;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ goto next;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
return false;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- return (!arg_types || ((dot = strrchr(u->id, '.')) &&
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- strv_find(arg_types, dot+1))) &&
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- (arg_all || !(streq(u->active_state, "inactive")
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- || u->following[0]) || u->job_id > 0);
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+next:
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (arg_types) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ const char *dot;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ dot = strrchr(u->id, '.');
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (!dot)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ return false;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (!strv_find(arg_types, dot+1))
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ return false;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (arg_all)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ return true;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (u->job_id > 0)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ return true;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (streq(u->active_state, "inactive") || u->following[0])
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ return false;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ return true;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
static int output_units_list(const UnitInfo *unit_infos, unsigned c) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
@@ -1231,18 +1247,28 @@ static int compare_unit_file_list(const void *a, const void *b) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
static bool output_show_unit_file(const UnitFileList *u, char **patterns) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- const char *dot;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
-
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
if (!strv_isempty(patterns)) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
char **pattern;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
STRV_FOREACH(pattern, patterns)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
if (fnmatch(*pattern, basename(u->path), FNM_NOESCAPE) == 0)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- return true;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ goto next;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
return false;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
- return !arg_types || ((dot = strrchr(u->path, '.')) && strv_find(arg_types, dot+1));
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+next:
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (!strv_isempty(arg_types)) {
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ const char *dot;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ dot = strrchr(u->path, '.');
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (!dot)
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ return false;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ if (!strv_find(arg_types, dot+1))
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ return false;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ }
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
+ return true;
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
}
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
|
|
Zbigniew Jędrzejewski-Szmek |
ea1976 |
static void output_unit_file_list(const UnitFileList *units, unsigned c) {
|