chiark / gitweb /
logs-show: show messages for all unit types in systemctl status
[elogind.git] / src / shared / logs-show.c
index 034fde6624793de677ebd45b56e98444bd90eb91..b909c24e98579f395e027970d4a41ebcb7c69842 100644 (file)
@@ -886,12 +886,6 @@ int show_journal_by_unit(
         assert(mode < _OUTPUT_MODE_MAX);
         assert(unit);
 
-        if (!endswith(unit, ".service") &&
-            !endswith(unit, ".socket") &&
-            !endswith(unit, ".mount") &&
-            !endswith(unit, ".swap"))
-                return 0;
-
         if (how_many <= 0)
                 return 0;
 
@@ -954,7 +948,7 @@ int show_journal_by_user_unit(
                 uid_t uid,
                 OutputFlags flags) {
 
-        _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL;
+        _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL, *m4 = NULL;
         sd_journal *j = NULL;
         int r;
 
@@ -962,17 +956,13 @@ int show_journal_by_user_unit(
         assert(mode < _OUTPUT_MODE_MAX);
         assert(unit);
 
-        if (!endswith(unit, ".service") &&
-            !endswith(unit, ".socket"))
-
-                return 0;
-
         if (how_many <= 0)
                 return 0;
 
         if (asprintf(&m1, "_SYSTEMD_USER_UNIT=%s", unit) < 0 ||
             asprintf(&m2, "USER_UNIT=%s", unit) < 0 ||
-            asprintf(&m3, "_UID=%d", uid) < 0) {
+            asprintf(&m3, "COREDUMP_USER_UNIT=%s", unit) < 0 ||
+            asprintf(&m4, "_UID=%d", uid) < 0) {
                 r = -ENOMEM;
                 goto finish;
         }
@@ -985,7 +975,7 @@ int show_journal_by_user_unit(
         r = sd_journal_add_match(j, m1, 0);
         if (r < 0)
                 goto finish;
-        r = sd_journal_add_match(j, m3, 0);
+        r = sd_journal_add_match(j, m4, 0);
         if (r < 0)
                 goto finish;
 
@@ -994,9 +984,20 @@ int show_journal_by_user_unit(
         if (r < 0)
                 goto finish;
         r = sd_journal_add_match(j, m2, 0);
+        if (r < 0)
+                goto finish;
+        r = sd_journal_add_match(j, m4, 0);
+        if (r < 0)
+                goto finish;
+
+        /* Look for coredumps of the service */
+        r = sd_journal_add_disjunction(j);
         if (r < 0)
                 goto finish;
         r = sd_journal_add_match(j, m3, 0);
+        if (r < 0)
+                goto finish;
+        r = sd_journal_add_match(j, m4, 0);
         if (r < 0)
                 goto finish;