From 9e60084262e3e85900a42001ca11876e5c452d32 Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sat, 2 Jul 2011 09:41:54 +0200 Subject: Add todo_pipe_item() function Pipe a serialized todo item to an external process, similar to what day_pipe_item() does (cf. c3f532d814e555abf67efb136491956428f19965). Signed-off-by: Lukas Fleischer --- src/calcurse.h | 1 + src/todo.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/calcurse.h b/src/calcurse.h index f753d97..95382e9 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -838,6 +838,7 @@ void todo_edit_item (void); void todo_update_panel (int); void todo_edit_note (char *); void todo_view_note (char *); +void todo_pipe_item (void); void todo_init_list (void); void todo_free_list (void); diff --git a/src/todo.c b/src/todo.c index 935109f..c11a676 100644 --- a/src/todo.c +++ b/src/todo.c @@ -504,6 +504,35 @@ todo_view_note (char *pager) wins_launch_external (fullname, pager); } +/* Pipe a todo item to an external program. */ +void +todo_pipe_item (void) +{ + char cmd[BUFSIZ] = ""; + int pout; + int pid; + FILE *fpout; + struct todo *todo; + + status_mesg (_("Pipe item to external command:"), ""); + if (getstring (win[STA].p, cmd, BUFSIZ, 0, 1) != GETSTRING_VALID) + return; + + wins_prepare_external (); + if ((pid = shell_exec (NULL, &pout, cmd))) + { + fpout = fdopen (pout, "w"); + + todo = todo_get_item (hilt); + todo_write (todo, fpout); + + fclose (fpout); + child_wait (NULL, &pout, pid); + press_any_key (); + } + wins_unprepare_external (); +} + void todo_free (struct todo *todo) { -- cgit v1.2.3