chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Revert f_type fixups
[elogind.git]
/
src
/
journal
/
journalctl.c
diff --git
a/src/journal/journalctl.c
b/src/journal/journalctl.c
index 002ff7cda08d5ad98c52b383cd7122de0672e9f2..d1b201beba24918457223791a41b3d9814ee9e96 100644
(file)
--- a/
src/journal/journalctl.c
+++ b/
src/journal/journalctl.c
@@
-80,8
+80,8
@@
static usec_t arg_interval = DEFAULT_FSS_INTERVAL_USEC;
#endif
static usec_t arg_since, arg_until;
static bool arg_since_set = false, arg_until_set = false;
#endif
static usec_t arg_since, arg_until;
static bool arg_since_set = false, arg_until_set = false;
-static c
onst char *arg_unit
= NULL;
-static
bool arg_unit_system
;
+static c
har **arg_system_units
= NULL;
+static
char **arg_user_units = NULL
;
static const char *arg_field = NULL;
static bool arg_catalog = false;
static bool arg_reverse = false;
static const char *arg_field = NULL;
static bool arg_catalog = false;
static bool arg_reverse = false;
@@
-437,13
+437,15
@@
static int parse_argv(int argc, char *argv[]) {
break;
case 'u':
break;
case 'u':
- arg_unit = optarg;
- arg_unit_system = true;
+ r = strv_extend(&arg_system_units, optarg);
+ if (r < 0)
+ return log_oom();
break;
case ARG_USER_UNIT:
break;
case ARG_USER_UNIT:
- arg_unit = optarg;
- arg_unit_system = false;
+ r = strv_extend(&arg_user_units, optarg);
+ if (r < 0)
+ return log_oom();
break;
case '?':
break;
case '?':
@@
-542,7
+544,7
@@
static int add_matches(sd_journal *j, char **args) {
if (streq(*i, "+"))
r = sd_journal_add_disjunction(j);
else if (path_is_absolute(*i)) {
if (streq(*i, "+"))
r = sd_journal_add_disjunction(j);
else if (path_is_absolute(*i)) {
-
char _cleanup_free_
*p, *t = NULL;
+
_cleanup_free_ char
*p, *t = NULL;
const char *path;
struct stat st;
const char *path;
struct stat st;
@@
-604,26
+606,48
@@
static int add_this_boot(sd_journal *j) {
return r;
}
return r;
}
+ r = sd_journal_add_conjunction(j);
+ if (r < 0)
+ return r;
+
return 0;
}
return 0;
}
-static int add_unit(sd_journal *j) {
+static int add_unit
s
(sd_journal *j) {
_cleanup_free_ char *u = NULL;
int r;
_cleanup_free_ char *u = NULL;
int r;
+ char **i;
assert(j);
assert(j);
- if (isempty(arg_unit))
- return 0;
+ STRV_FOREACH(i, arg_system_units) {
+ u = unit_name_mangle(*i);
+ if (!u)
+ return log_oom();
+ r = add_matches_for_unit(j, u);
+ if (r < 0)
+ return r;
+ r = sd_journal_add_disjunction(j);
+ if (r < 0)
+ return r;
+ }
- u = unit_name_mangle(arg_unit);
- if (!u)
- return log_oom();
+ STRV_FOREACH(i, arg_user_units) {
+ u = unit_name_mangle(*i);
+ if (!u)
+ return log_oom();
- if (arg_unit_system)
- r = add_matches_for_unit(j, u);
- else
r = add_matches_for_user_unit(j, u, getuid());
r = add_matches_for_user_unit(j, u, getuid());
+ if (r < 0)
+ return r;
+
+ r = sd_journal_add_disjunction(j);
+ if (r < 0)
+ return r;
+
+ }
+
+ r = sd_journal_add_conjunction(j);
if (r < 0)
return r;
if (r < 0)
return r;
@@
-633,7
+657,6
@@
static int add_unit(sd_journal *j) {
static int add_priorities(sd_journal *j) {
char match[] = "PRIORITY=0";
int i, r;
static int add_priorities(sd_journal *j) {
char match[] = "PRIORITY=0";
int i, r;
-
assert(j);
if (arg_priorities == 0xFF)
assert(j);
if (arg_priorities == 0xFF)
@@
-650,6
+673,10
@@
static int add_priorities(sd_journal *j) {
}
}
}
}
+ r = sd_journal_add_conjunction(j);
+ if (r < 0)
+ return r;
+
return 0;
}
return 0;
}
@@
-1001,7
+1028,7
@@
static int access_check(sd_journal *j) {
int main(int argc, char *argv[]) {
int r;
int main(int argc, char *argv[]) {
int r;
-
sd_journal _cleanup_journal_close_
*j = NULL;
+
_cleanup_journal_close_ sd_journal
*j = NULL;
bool need_seek = false;
sd_id128_t previous_boot_id;
bool previous_boot_id_valid = false, first_line = true;
bool need_seek = false;
sd_id128_t previous_boot_id;
bool previous_boot_id_valid = false, first_line = true;
@@
-1032,7
+1059,7
@@
int main(int argc, char *argv[]) {
arg_action == ACTION_DUMP_CATALOG) {
const char* database = CATALOG_DATABASE;
arg_action == ACTION_DUMP_CATALOG) {
const char* database = CATALOG_DATABASE;
-
char _cleanup_free_
*copy = NULL;
+
_cleanup_free_ char
*copy = NULL;
if (arg_root) {
copy = strjoin(arg_root, "/", CATALOG_DATABASE, NULL);
if (!copy) {
if (arg_root) {
copy = strjoin(arg_root, "/", CATALOG_DATABASE, NULL);
if (!copy) {
@@
-1102,15
+1129,18
@@
int main(int argc, char *argv[]) {
if (r < 0)
return EXIT_FAILURE;
if (r < 0)
return EXIT_FAILURE;
- r = add_unit(j);
+ r = add_units(j);
+ strv_free(arg_system_units);
+ strv_free(arg_user_units);
+
if (r < 0)
return EXIT_FAILURE;
if (r < 0)
return EXIT_FAILURE;
- r = add_
matches(j, argv + optind
);
+ r = add_
priorities(j
);
if (r < 0)
return EXIT_FAILURE;
if (r < 0)
return EXIT_FAILURE;
- r = add_
priorities(j
);
+ r = add_
matches(j, argv + optind
);
if (r < 0)
return EXIT_FAILURE;
if (r < 0)
return EXIT_FAILURE;
@@
-1123,6
+1153,12
@@
int main(int argc, char *argv[]) {
const void *data;
size_t size;
const void *data;
size_t size;
+ r = sd_journal_set_data_threshold(j, 0);
+ if (r < 0) {
+ log_error("Failed to unset data size threshold");
+ return EXIT_FAILURE;
+ }
+
r = sd_journal_query_unique(j, arg_field);
if (r < 0) {
log_error("Failed to query unique data objects: %s", strerror(-r));
r = sd_journal_query_unique(j, arg_field);
if (r < 0) {
log_error("Failed to query unique data objects: %s", strerror(-r));