Refactor grep mode
Split io_save_{apts,todo}() into functions that write raw data to a file and functions that write formatted items to stdout such that one can easily extend the grep mode for format string support in a follow-up commit. Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
This commit is contained in:
parent
8bdf0c0b3b
commit
e9c8197e4e
@ -727,8 +727,13 @@ int parse_args(int argc, char **argv)
|
|||||||
vars_init();
|
vars_init();
|
||||||
config_load(); /* To get output date format. */
|
config_load(); /* To get output date format. */
|
||||||
io_load_data(&filter);
|
io_load_data(&filter);
|
||||||
io_save_todo(grep_filter ? path_todo : NULL);
|
if (grep_filter) {
|
||||||
io_save_apts(grep_filter ? path_apts : NULL);
|
io_save_todo(path_todo);
|
||||||
|
io_save_apts(path_apts);
|
||||||
|
} else {
|
||||||
|
io_dump_todo("%(raw)");
|
||||||
|
io_dump_apts("%(raw)", "%(raw)", "%(raw)", "%(raw)");
|
||||||
|
}
|
||||||
} else if (query) {
|
} else if (query) {
|
||||||
io_check_file(path_apts);
|
io_check_file(path_apts);
|
||||||
io_check_file(path_todo);
|
io_check_file(path_todo);
|
||||||
|
@ -819,7 +819,9 @@ void io_init(const char *, const char *);
|
|||||||
void io_extract_data(char *, const char *, int);
|
void io_extract_data(char *, const char *, int);
|
||||||
void io_save_mutex_lock(void);
|
void io_save_mutex_lock(void);
|
||||||
void io_save_mutex_unlock(void);
|
void io_save_mutex_unlock(void);
|
||||||
|
void io_dump_apts(const char *, const char *, const char *, const char *);
|
||||||
unsigned io_save_apts(const char *);
|
unsigned io_save_apts(const char *);
|
||||||
|
void io_dump_todo(const char *);
|
||||||
unsigned io_save_todo(const char *);
|
unsigned io_save_todo(const char *);
|
||||||
unsigned io_save_keys(void);
|
unsigned io_save_keys(void);
|
||||||
void io_save_cal(enum save_display);
|
void io_save_cal(enum save_display);
|
||||||
|
42
src/io.c
42
src/io.c
@ -295,6 +295,37 @@ void io_save_mutex_unlock(void)
|
|||||||
pthread_mutex_unlock(&io_save_mutex);
|
pthread_mutex_unlock(&io_save_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Print all appointments and events to stdout. */
|
||||||
|
void io_dump_apts(const char *fmt_apt, const char *fmt_rapt,
|
||||||
|
const char *fmt_ev, const char *fmt_rev)
|
||||||
|
{
|
||||||
|
llist_item_t *i;
|
||||||
|
|
||||||
|
LLIST_FOREACH(&recur_elist, i) {
|
||||||
|
struct recur_event *rev = LLIST_GET_DATA(i);
|
||||||
|
time_t day = update_time_in_date(rev->day, 0, 0);
|
||||||
|
print_recur_event(fmt_rev, day, rev);
|
||||||
|
}
|
||||||
|
|
||||||
|
LLIST_TS_FOREACH(&recur_alist_p, i) {
|
||||||
|
struct recur_apoint *rapt = LLIST_GET_DATA(i);
|
||||||
|
time_t day = update_time_in_date(rapt->start, 0, 0);
|
||||||
|
print_recur_apoint(fmt_rapt, day, rapt->start, rapt);
|
||||||
|
}
|
||||||
|
|
||||||
|
LLIST_TS_FOREACH(&alist_p, i) {
|
||||||
|
struct apoint *apt = LLIST_TS_GET_DATA(i);
|
||||||
|
time_t day = update_time_in_date(apt->start, 0, 0);
|
||||||
|
print_apoint(fmt_apt, day, apt);
|
||||||
|
}
|
||||||
|
|
||||||
|
LLIST_FOREACH(&eventlist, i) {
|
||||||
|
struct event *ev = LLIST_TS_GET_DATA(i);
|
||||||
|
time_t day = update_time_in_date(ev->day, 0, 0);
|
||||||
|
print_event(fmt_ev, day, ev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Save the apts data file, which contains the
|
* Save the apts data file, which contains the
|
||||||
* appointments first, and then the events.
|
* appointments first, and then the events.
|
||||||
@ -337,6 +368,17 @@ unsigned io_save_apts(const char *aptsfile)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Print all todo items to stdout. */
|
||||||
|
void io_dump_todo(const char *fmt_todo)
|
||||||
|
{
|
||||||
|
llist_item_t *i;
|
||||||
|
|
||||||
|
LLIST_FOREACH(&todolist, i) {
|
||||||
|
struct todo *todo = LLIST_TS_GET_DATA(i);
|
||||||
|
print_todo(fmt_todo, todo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Save the todo data file. */
|
/* Save the todo data file. */
|
||||||
unsigned io_save_todo(const char *todofile)
|
unsigned io_save_todo(const char *todofile)
|
||||||
{
|
{
|
||||||
|
@ -485,6 +485,7 @@ long update_time_in_date(long date, unsigned hr, unsigned mn)
|
|||||||
localtime_r(&t, <);
|
localtime_r(&t, <);
|
||||||
lt.tm_hour = hr;
|
lt.tm_hour = hr;
|
||||||
lt.tm_min = mn;
|
lt.tm_min = mn;
|
||||||
|
lt.tm_sec = 0;
|
||||||
new_date = mktime(<);
|
new_date = mktime(<);
|
||||||
EXIT_IF(new_date == -1, _("error in mktime"));
|
EXIT_IF(new_date == -1, _("error in mktime"));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user