From f9208c0b3dcb6cb53dbad734871aeead576ad06b Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 6 Aug 2014 15:48:02 +0200 Subject: Use backwards-compatible out format for queries Print TODO items before appointments in query outputs and add an empty line between the list of TODO items and the list of appointments. This is how items were printed before the big parser refactoring. Also, add a test to ensure we do not unintentionally change that format in the future. Signed-off-by: Lukas Fleischer --- src/args.c | 23 +++++++++++++---------- test/Makefile.am | 2 ++ test/data/apts-filter-001 | 8 ++++++++ test/filter-001.sh | 28 ++++++++++++++++++++++++++++ 4 files changed, 51 insertions(+), 10 deletions(-) create mode 100644 test/data/apts-filter-001 create mode 100755 test/filter-001.sh diff --git a/src/args.c b/src/args.c index 4a022b5..a2fbf81 100644 --- a/src/args.c +++ b/src/args.c @@ -217,18 +217,18 @@ static void status_arg(void) puts(_("calcurse is not running\n")); } -/* Print TODO list and exit. */ -static void todo_arg(const char *format, int *limit, - struct item_filter *filter) +/* Print TODO list and return the number of printed items. */ +static int todo_arg(const char *format, int *limit, struct item_filter *filter) { const char *titlestr = filter->completed ? _("completed tasks:\n") : _("to do:\n"); int title = 1; + int n = 0; llist_item_t *i; LLIST_FOREACH(&todolist, i) { if (*limit == 0) - return; + break; struct todo *todo = LLIST_TS_GET_DATA(i); if (title) { @@ -236,8 +236,11 @@ static void todo_arg(const char *format, int *limit, title = 0; } print_todo(format, todo); + n++; (*limit)--; } + + return n; } /* Print the next appointment within the upcoming 24 hours. */ @@ -286,11 +289,11 @@ static void arg_print_date(long date) * If no end date is given (-1), a range of 1 day is considered. */ static void -date_arg_from_to(long from, long to, const char *fmt_apt, const char *fmt_rapt, - const char *fmt_ev, const char *fmt_rev, int *limit) +date_arg_from_to(long from, long to, int add_line, const char *fmt_apt, + const char *fmt_rapt, const char *fmt_ev, const char *fmt_rev, + int *limit) { long date; - int add_line = 0; for (date = from; date < to; date += DAYINSEC) { day_store_items(date, 0); @@ -659,9 +662,9 @@ int parse_args(int argc, char **argv) config_load(); /* To get output date format. */ io_load_app(&filter); io_load_todo(&filter); - date_arg_from_to(from, to, fmt_apt, fmt_rapt, fmt_ev, fmt_rev, - &limit); - todo_arg(fmt_todo, &limit, &filter); + int add_line = todo_arg(fmt_todo, &limit, &filter); + date_arg_from_to(from, to, add_line, fmt_apt, fmt_rapt, fmt_ev, + fmt_rev, &limit); } else if (next) { io_check_file(path_apts); io_load_app(&filter); diff --git a/test/Makefile.am b/test/Makefile.am index 5e1bfca..d036a1d 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -41,6 +41,7 @@ TESTS = \ event-004.sh \ event-005.sh \ event-006.sh \ + filter-001.sh \ ical-001.sh \ ical-002.sh \ ical-003.sh \ @@ -98,6 +99,7 @@ EXTRA_DIST = \ data/apts-event-004 \ data/apts-event-005 \ data/apts-event-006 \ + data/apts-filter-001 \ data/apts-recur \ data/conf \ data/ical-001.ical \ diff --git a/test/data/apts-filter-001 b/test/data/apts-filter-001 new file mode 100644 index 0000000..59fe31c --- /dev/null +++ b/test/data/apts-filter-001 @@ -0,0 +1,8 @@ +02/22/2013 [1] Event 1 +02/23/2013 [1] Event 2 +02/24/2013 [1] Event 3 +02/25/2013 [1] Event 4 +02/22/2013 @ 10:00 -> 02/22/2013 @ 12:00 |Appointment 1 +02/23/2013 @ 10:00 -> 02/23/2013 @ 12:00 |Appointment 2 +02/24/2013 @ 10:00 -> 02/24/2013 @ 12:00 |Appointment 3 +02/25/2013 @ 10:00 -> 02/25/2013 @ 12:00 |Appointment 4 diff --git a/test/filter-001.sh b/test/filter-001.sh new file mode 100755 index 0000000..2dcbb25 --- /dev/null +++ b/test/filter-001.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +. "${TEST_INIT:-./test-init.sh}" + +if [ "$1" = 'actual' ]; then + "$CALCURSE" --read-only -D "$DATA_DIR"/ -c "$DATA_DIR/apts-filter-001" \ + -t9 -s02/23/2013 -r2 +elif [ "$1" = 'expected' ]; then + cat < 12:00 + Appointment 2 + +02/24/13: + * Event 3 + - 10:00 -> 12:00 + Appointment 3 +EOD +else + ./run-test "$0" +fi + -- cgit v1.2.3