/* Seek to head, move to previous, then iterate down. */
assert_ret(sd_journal_open_directory(&j, t, 0));
assert_ret(sd_journal_seek_head(j));
- /* FIXME: calling sd_journal_previous() thrice (or >= number of journal files) here works as
- * mostly equivalent to calling sd_journal_next(). */
- assert_ret(sd_journal_previous(j));
- assert_ret(sd_journal_previous(j));
- assert_ret(sd_journal_previous(j)); /* pointing the first entry */
+ assert_ret(sd_journal_previous(j)); /* no-op */
+ assert_ret(sd_journal_next(j)); /* pointing the first entry */
test_check_numbers_down(j, 9);
sd_journal_close(j);
/* Seek to head, walk several steps, then iterate down. */
assert_ret(sd_journal_open_directory(&j, t, 0));
assert_ret(sd_journal_seek_head(j));
- assert_ret(sd_journal_previous(j));
- assert_ret(sd_journal_previous(j));
- assert_ret(sd_journal_previous(j)); /* pointing the first entry */
- assert_ret(sd_journal_next(j)); /* pointing the second entry */
- /* FIXME: as calling sd_journal_previous() thrice works equivalent to sd_journal_next(),
- * we need to call sd_journal_previous() here. */
- assert_ret(sd_journal_previous(j)); /* pointing the first entry */
+ assert_ret(sd_journal_previous(j)); /* no-op */
+ assert_ret(sd_journal_previous(j)); /* no-op */
+ assert_ret(sd_journal_previous(j)); /* no-op */
+ assert_ret(sd_journal_next(j)); /* pointing the first entry */
+ assert_ret(sd_journal_previous(j)); /* no-op */
assert_ret(sd_journal_previous(j)); /* no-op */
test_check_numbers_down(j, 9);
sd_journal_close(j);
/* Seek to tail, move to next, then iterate up. */
assert_ret(sd_journal_open_directory(&j, t, 0));
assert_ret(sd_journal_seek_tail(j));
- /* FIXME: calling sd_journal_next() thrice (or >= number of journal files) here works as mostly
- * equivalent to calling sd_journal_previous(). */
- assert_ret(sd_journal_next(j));
- assert_ret(sd_journal_next(j));
- assert_ret(sd_journal_next(j)); /* pointing the last entry */
+ assert_ret(sd_journal_next(j)); /* no-op */
+ assert_ret(sd_journal_previous(j)); /* pointing the first entry */
test_check_numbers_up(j, 9);
sd_journal_close(j);
/* Seek to tail, walk several steps, then iterate up. */
assert_ret(sd_journal_open_directory(&j, t, 0));
assert_ret(sd_journal_seek_tail(j));
- assert_ret(sd_journal_next(j));
- assert_ret(sd_journal_next(j));
- assert_ret(sd_journal_next(j)); /* pointing the last entry */
- assert_ret(sd_journal_previous(j)); /* pointing the previous of the last entry. */
- assert_ret(sd_journal_next(j)); /* pointing the last entry */
+ assert_ret(sd_journal_next(j)); /* no-op */
+ assert_ret(sd_journal_next(j)); /* no-op */
+ assert_ret(sd_journal_next(j)); /* no-op */
+ assert_ret(sd_journal_previous(j)); /* pointing the last entry. */
+ assert_ret(sd_journal_next(j)); /* no-op */
assert_ret(sd_journal_next(j)); /* no-op */
test_check_numbers_up(j, 9);
sd_journal_close(j);
/* Seek to tail, skip to head in a more complext way, then iterate down. */
assert_ret(sd_journal_open_directory(&j, t, 0));
assert_ret(sd_journal_seek_tail(j));
- // FIXME: sd_journal_next() cannot be called here.
- //assert_ret(sd_journal_next(j));
+ assert_ret(sd_journal_next(j)); /* no-op */
assert_ret(r = sd_journal_previous_skip(j, 4));
assert_se(r == 4);
assert_ret(r = sd_journal_previous_skip(j, 5));
/* Seek to head, skip to tail in a more complex way, then iterate up. */
assert_ret(sd_journal_open_directory(&j, t, 0));
assert_ret(sd_journal_seek_head(j));
- // FIXME: sd_journal_previous() cannot be called here.
- //assert_ret(sd_journal_previous(j));
+ assert_ret(sd_journal_previous(j)); /* no-op */
assert_ret(r = sd_journal_next_skip(j, 4));
assert_se(r == 4);
assert_ret(r = sd_journal_next_skip(j, 5));
/* FIXME: missing: find by monotonic */
if (j->current_location.type == LOCATION_HEAD)
- return journal_file_next_entry_for_data(f, d, DIRECTION_DOWN, ret, offset);
+ return direction == DIRECTION_DOWN ? journal_file_next_entry_for_data(f, d, DIRECTION_DOWN, ret, offset) : 0;
if (j->current_location.type == LOCATION_TAIL)
- return journal_file_next_entry_for_data(f, d, DIRECTION_UP, ret, offset);
+ return direction == DIRECTION_UP ? journal_file_next_entry_for_data(f, d, DIRECTION_UP, ret, offset) : 0;
if (j->current_location.seqnum_set && sd_id128_equal(j->current_location.seqnum_id, f->header->seqnum_id))
return journal_file_move_to_entry_by_seqnum_for_data(f, d, j->current_location.seqnum, direction, ret, offset);
if (j->current_location.monotonic_set) {
/* No matches is simple */
if (j->current_location.type == LOCATION_HEAD)
- return journal_file_next_entry(f, 0, DIRECTION_DOWN, ret, offset);
+ return direction == DIRECTION_DOWN ? journal_file_next_entry(f, 0, DIRECTION_DOWN, ret, offset) : 0;
if (j->current_location.type == LOCATION_TAIL)
- return journal_file_next_entry(f, 0, DIRECTION_UP, ret, offset);
+ return direction == DIRECTION_UP ? journal_file_next_entry(f, 0, DIRECTION_UP, ret, offset) : 0;
if (j->current_location.seqnum_set && sd_id128_equal(j->current_location.seqnum_id, f->header->seqnum_id))
return journal_file_move_to_entry_by_seqnum(f, j->current_location.seqnum, direction, ret, offset);
if (j->current_location.monotonic_set) {