summaryrefslogtreecommitdiff
path: root/src/ical.c
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@calcurse.org>2016-02-11 18:22:05 +0100
committerLukas Fleischer <lfleischer@calcurse.org>2016-02-11 18:33:57 +0100
commit07954626c6925f22e4d59b6d68f0947d4e54b8b9 (patch)
treee691a26dbb8ada6f708f08c529c1e8af826d61e2 /src/ical.c
parentfe0621bafd21acaf9909cb2f8ea65fa56560faed (diff)
downloadcalcurse-07954626c6925f22e4d59b6d68f0947d4e54b8b9.zip
Support format strings when dumping imported items
In commit 3eae7ce (Add --list-imported command line option, 2016-01-12), we added an option to print the hashes of imported items to stdout. Extend this command line option such that it dumps the items using the specified formatting strings. With the new behavior it is, for example, easier to check items for import errors. Also, rename the option from --list-imported to --dump-imported (it is not part of any official release yet so we do not need to care about backwards compatibility). Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
Diffstat (limited to 'src/ical.c')
-rw-r--r--src/ical.c83
1 files changed, 36 insertions, 47 deletions
diff --git a/src/ical.c b/src/ical.c
index 3230681..c4ab43f 100644
--- a/src/ical.c
+++ b/src/ical.c
@@ -325,21 +325,19 @@ static void ical_log(FILE * log, ical_types_e type, unsigned lineno,
}
static void ical_store_todo(int priority, int completed, char *mesg,
- char *note, int list)
+ char *note, const char *fmt_todo)
{
struct todo *todo = todo_add(mesg, priority, completed, note);
- if (list) {
- char *hash = todo_hash(todo);
- printf("%s\n", hash);
- mem_free(hash);
- }
+ if (fmt_todo)
+ print_todo(fmt_todo, todo);
mem_free(mesg);
erase_note(&note);
}
static void
ical_store_event(char *mesg, char *note, long day, long end,
- ical_rpt_t * rpt, llist_t * exc, int list)
+ ical_rpt_t * rpt, llist_t * exc, const char *fmt_ev,
+ const char *fmt_rev)
{
const int EVENTID = 1;
struct event *ev;
@@ -349,21 +347,15 @@ ical_store_event(char *mesg, char *note, long day, long end,
rev = recur_event_new(mesg, note, day, EVENTID, rpt->type,
rpt->freq, rpt->until, exc);
mem_free(rpt);
- if (list) {
- char *hash = recur_event_hash(rev);
- printf("%s\n", hash);
- mem_free(hash);
- }
+ if (fmt_rev)
+ print_recur_event(fmt_rev, day, rev);
goto cleanup;
}
if (end == 0 || end - day <= DAYINSEC) {
ev = event_new(mesg, note, day, EVENTID);
- if (list) {
- char *hash = event_hash(ev);
- printf("%s\n", hash);
- mem_free(hash);
- }
+ if (fmt_ev)
+ print_event(fmt_ev, day, ev);
goto cleanup;
}
@@ -383,11 +375,8 @@ ical_store_event(char *mesg, char *note, long day, long end,
rev = recur_event_new(mesg, note, day, EVENTID, rpt->type,
rpt->freq, rpt->until, exc);
mem_free(rpt);
- if (list) {
- char *hash = recur_event_hash(rev);
- printf("%s\n", hash);
- mem_free(hash);
- }
+ if (fmt_rev)
+ print_recur_event(fmt_rev, day, rev);
cleanup:
mem_free(mesg);
@@ -396,7 +385,8 @@ cleanup:
static void
ical_store_apoint(char *mesg, char *note, long start, long dur,
- ical_rpt_t * rpt, llist_t * exc, int has_alarm, int list)
+ ical_rpt_t * rpt, llist_t * exc, int has_alarm,
+ const char *fmt_apt, const char *fmt_rapt)
{
char state = 0L;
struct apoint *apt;
@@ -408,18 +398,12 @@ ical_store_apoint(char *mesg, char *note, long start, long dur,
rapt = recur_apoint_new(mesg, note, start, dur, state,
rpt->type, rpt->freq, rpt->until, exc);
mem_free(rpt);
- if (list) {
- char *hash = recur_apoint_hash(rapt);
- printf("%s\n", hash);
- mem_free(hash);
- }
+ if (fmt_rapt)
+ print_recur_apoint(fmt_rapt, start, rapt->start, rapt);
} else {
apt = apoint_new(mesg, note, start, dur, state);
- if (list) {
- char *hash = apoint_hash(apt);
- printf("%s\n", hash);
- mem_free(hash);
- }
+ if (fmt_apt)
+ print_apoint(fmt_apt, start, apt);
}
mem_free(mesg);
erase_note(&note);
@@ -897,9 +881,10 @@ static char *ical_read_summary(char *line)
}
static void
-ical_read_event(FILE * fdi, FILE * log, int list, unsigned *noevents,
+ical_read_event(FILE * fdi, FILE * log, unsigned *noevents,
unsigned *noapoints, unsigned *noskipped, char *buf,
- char *lstore, unsigned *lineno)
+ char *lstore, unsigned *lineno, const char *fmt_ev,
+ const char *fmt_rev, const char *fmt_apt, const char *fmt_rapt)
{
const int ITEMLINE = *lineno;
ical_vevent_e vevent_type;
@@ -963,13 +948,15 @@ ical_read_event(FILE * fdi, FILE * log, int list, unsigned *noevents,
ical_store_apoint(vevent.mesg, vevent.note,
vevent.start, vevent.dur,
vevent.rpt, &vevent.exc,
- vevent.has_alarm, list);
+ vevent.has_alarm, fmt_apt,
+ fmt_rapt);
(*noapoints)++;
break;
case EVENT:
ical_store_event(vevent.mesg, vevent.note,
vevent.start, vevent.end,
- vevent.rpt, &vevent.exc, list);
+ vevent.rpt, &vevent.exc,
+ fmt_ev, fmt_rev);
(*noevents)++;
break;
case UNDEFINED:
@@ -1050,9 +1037,8 @@ cleanup:
}
static void
-ical_read_todo(FILE * fdi, FILE * log, int list, unsigned *notodos,
- unsigned *noskipped, char *buf, char *lstore,
- unsigned *lineno)
+ical_read_todo(FILE * fdi, FILE * log, unsigned *notodos, unsigned *noskipped,
+ char *buf, char *lstore, unsigned *lineno, const char *fmt_todo)
{
const int ITEMLINE = *lineno;
struct {
@@ -1083,7 +1069,7 @@ ical_read_todo(FILE * fdi, FILE * log, int list, unsigned *notodos,
}
ical_store_todo(vtodo.priority, vtodo.completed,
- vtodo.mesg, vtodo.note, list);
+ vtodo.mesg, vtodo.note, fmt_todo);
(*notodos)++;
return;
}
@@ -1121,9 +1107,11 @@ cleanup:
/* Import calcurse data. */
void
-ical_import_data(FILE * stream, FILE * log, int list, unsigned *events,
+ical_import_data(FILE * stream, FILE * log, unsigned *events,
unsigned *apoints, unsigned *todos, unsigned *lines,
- unsigned *skipped)
+ unsigned *skipped, const char *fmt_ev, const char *fmt_rev,
+ const char *fmt_apt, const char *fmt_rapt,
+ const char *fmt_todo)
{
char buf[BUFSIZ], lstore[BUFSIZ];
int major, minor;
@@ -1139,11 +1127,12 @@ ical_import_data(FILE * stream, FILE * log, int list, unsigned *events,
while (ical_readline(stream, buf, lstore, lines)) {
(*lines)++;
if (starts_with_ci(buf, "BEGIN:VEVENT")) {
- ical_read_event(stream, log, list, events, apoints,
- skipped, buf, lstore, lines);
+ ical_read_event(stream, log, events, apoints,
+ skipped, buf, lstore, lines, fmt_ev,
+ fmt_rev, fmt_apt, fmt_rapt);
} else if (starts_with_ci(buf, "BEGIN:VTODO")) {
- ical_read_todo(stream, log, list, todos, skipped, buf,
- lstore, lines);
+ ical_read_todo(stream, log, todos, skipped, buf,
+ lstore, lines, fmt_todo);
}
}
}