diff -U 3 -H -d -p -r -N -- a/journalctl.c b/journalctl.c --- a/journalctl.c 2013-01-02 15:26:49.152000374 +0100 +++ b/journalctl.c 2013-01-02 15:26:23.398665322 +0100 @@ -417,11 +417,6 @@ static int parse_argv(int argc, char *ar if (arg_follow && !arg_no_tail && arg_lines <= 0) arg_lines = 10; - if (arg_since_set && arg_until_set && arg_since_set > arg_until_set) { - log_error("--since= must be before --until=."); - return -EINVAL; - } - if (arg_cursor && arg_since_set) { log_error("Please specify either --since= or --cursor=, not both."); return -EINVAL; @@ -1047,6 +1042,8 @@ int main(int argc, char *argv[]) { if (r == 0) break; + need_seek = true; + if (arg_until_set) { usec_t usec; @@ -1055,6 +1052,9 @@ int main(int argc, char *argv[]) { log_error("Failed to determine timestamp: %s", strerror(-r)); goto finish; } + else if (usec > arg_until) { + need_seek = false; + } } if (!arg_merge) { @@ -1081,7 +1081,6 @@ int main(int argc, char *argv[]) { if (r < 0) goto finish; - need_seek = true; n_shown++; }