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:
parent
c3f532d814
commit
9e60084262
@ -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);
|
||||
|
||||
|
29
src/todo.c
29
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)
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user