chiark / gitweb /
fileio: in envfiles, do not skip lines following empty lines
[elogind.git] / src / analyze / systemd-analyze.c
index 55f7c42102a9b1d156f61f1d4a0d0d0b14f554a9..e648a4449f04cb03622b5c4cf0728034dc4a6680 100644 (file)
@@ -626,40 +626,48 @@ static int graph_one_property(const char *name, const char *prop, DBusMessageIte
                      dbus_message_iter_next(&sub)) {
                         const char *s;
                         char **p;
-                        bool match_found = true;
+                        bool match_found;
 
                         assert(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_STRING);
                         dbus_message_iter_get_basic(&sub, &s);
 
-                        STRV_FOREACH(p, arg_dot_from_patterns) {
+                        if (!strv_isempty(arg_dot_from_patterns)) {
                                 match_found = false;
-                                if (fnmatch(*p, name, 0) == 0) {
-                                        match_found = true;
-                                        break;
-                                }
+
+                                STRV_FOREACH(p, arg_dot_from_patterns)
+                                        if (fnmatch(*p, name, 0) == 0) {
+                                                match_found = true;
+                                                break;
+                                        }
+
+                                if (!match_found)
+                                        continue;
                         }
-                        if (!match_found)
-                                continue;
 
-                        STRV_FOREACH(p, arg_dot_to_patterns) {
+                        if (!strv_isempty(arg_dot_to_patterns)) {
                                 match_found = false;
-                                if (fnmatch(*p, s, 0) == 0) {
-                                        match_found = true;
-                                        break;
-                                }
+
+                                STRV_FOREACH(p, arg_dot_to_patterns)
+                                        if (fnmatch(*p, s, 0) == 0) {
+                                                match_found = true;
+                                                break;
+                                        }
+
+                                if (!match_found)
+                                        continue;
                         }
-                        if (!match_found)
-                                continue;
 
-                        STRV_FOREACH(p, patterns) {
+                        if (!strv_isempty(patterns)) {
                                 match_found = false;
-                                if (fnmatch(*p, name, 0) == 0 || fnmatch(*p, s, 0) == 0) {
-                                        match_found = true;
-                                        break;
-                                }
+
+                                STRV_FOREACH(p, patterns)
+                                        if (fnmatch(*p, name, 0) == 0 || fnmatch(*p, s, 0) == 0) {
+                                                match_found = true;
+                                                break;
+                                        }
+                                if (!match_found)
+                                        continue;
                         }
-                        if (!match_found)
-                                continue;
 
                         printf("\t\"%s\"->\"%s\" %s;\n", name, s, c);
                 }
@@ -851,11 +859,15 @@ static int parse_argv(int argc, char *argv[])
                         break;
 
                 case ARG_DOT_FROM_PATTERN:
-                        arg_dot_from_patterns = strv_append(arg_dot_from_patterns, optarg);
+                        if (strv_extend(&arg_dot_from_patterns, optarg) < 0)
+                                return log_oom();
+
                         break;
 
                 case ARG_DOT_TO_PATTERN:
-                        arg_dot_to_patterns = strv_append(arg_dot_to_patterns, optarg);
+                        if (strv_extend(&arg_dot_to_patterns, optarg) < 0)
+                                return log_oom();
+
                         break;
 
                 case -1: