ACTION_VERIFY,
ACTION_DISK_USAGE,
ACTION_LIST_CATALOG,
+ ACTION_DUMP_CATALOG,
ACTION_UPDATE_CATALOG
} arg_action = ACTION_SHOW;
" --disk-usage Show total disk usage\n"
" -F --field=FIELD List all values a certain field takes\n"
" --list-catalog Show message IDs of all entries in the message catalog\n"
+ " --dump-catalog Show entries in the message catalog\n"
" --update-catalog Update the message catalog database\n"
#ifdef HAVE_GCRYPT
" --setup-keys Generate new FSS key pair\n"
ARG_UNTIL,
ARG_USER_UNIT,
ARG_LIST_CATALOG,
+ ARG_DUMP_CATALOG,
ARG_UPDATE_CATALOG
};
{ "field", required_argument, NULL, 'F' },
{ "catalog", no_argument, NULL, 'x' },
{ "list-catalog", no_argument, NULL, ARG_LIST_CATALOG },
+ { "dump-catalog", no_argument, NULL, ARG_DUMP_CATALOG },
{ "update-catalog",no_argument, NULL, ARG_UPDATE_CATALOG },
{ "reverse", no_argument, NULL, 'r' },
{ NULL, 0, NULL, 0 }
arg_action = ACTION_LIST_CATALOG;
break;
+ case ARG_DUMP_CATALOG:
+ arg_action = ACTION_DUMP_CATALOG;
+ break;
+
case ARG_UPDATE_CATALOG:
arg_action = ACTION_UPDATE_CATALOG;
break;
static int add_matches(sd_journal *j, char **args) {
char **i;
- int r;
assert(j);
STRV_FOREACH(i, args) {
+ int r;
if (streq(*i, "+"))
r = sd_journal_add_disjunction(j);
else if (path_is_absolute(*i)) {
- char *p, *t = NULL;
+ char _cleanup_free_ *p, *t = NULL;
const char *path;
struct stat st;
path = p ? p : *i;
if (stat(path, &st) < 0) {
- free(p);
log_error("Couldn't stat file: %m");
return -errno;
}
else if (S_ISBLK(st.st_mode))
asprintf(&t, "_KERNEL_DEVICE=b%u:%u", major(st.st_rdev), minor(st.st_rdev));
else {
- free(p);
log_error("File is not a device node, regular file or is not executable: %s", *i);
return -EINVAL;
}
- free(p);
-
if (!t)
return log_oom();
r = sd_journal_add_match(j, t, 0);
- free(t);
} else
r = sd_journal_add_match(j, *i, 0);
}
static int add_unit(sd_journal *j) {
- _cleanup_free_ char *m = NULL, *u = NULL;
+ _cleanup_free_ char *u = NULL;
int r;
assert(j);
goto finish;
}
- if (arg_action == ACTION_LIST_CATALOG) {
- r = catalog_list(stdout);
+ if (arg_action == ACTION_LIST_CATALOG ||
+ arg_action == ACTION_DUMP_CATALOG) {
+ bool oneline = arg_action == ACTION_LIST_CATALOG;
+ if (optind < argc)
+ r = catalog_list_items(stdout, oneline, argv + optind);
+ else
+ r = catalog_list(stdout, oneline);
if (r < 0)
log_error("Failed to list catalog: %s", strerror(-r));
goto finish;