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;
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;
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;
}
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;
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;