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 <calcurse@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2011-07-02 09:41:54 +02:00
parent c3f532d814
commit 9e60084262
2 changed files with 30 additions and 0 deletions

View File

@ -838,6 +838,7 @@ void todo_edit_item (void);
void todo_update_panel (int); void todo_update_panel (int);
void todo_edit_note (char *); void todo_edit_note (char *);
void todo_view_note (char *); void todo_view_note (char *);
void todo_pipe_item (void);
void todo_init_list (void); void todo_init_list (void);
void todo_free_list (void); void todo_free_list (void);

View File

@ -504,6 +504,35 @@ todo_view_note (char *pager)
wins_launch_external (fullname, 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 void
todo_free (struct todo *todo) todo_free (struct todo *todo)
{ {