X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-sys%2Ffilter.c;h=90d9af2c477e1623153e82f81bc7fbe07478bd5f;hp=193b2adea99cd5cc9faccede5cb5f96da0a57a7b;hb=f65ae399906906f734398432691dbacf2c7bda9f;hpb=96e4b6de291b2195b26289fb03536acd101c6650 diff --git a/lib-sys/filter.c b/lib-sys/filter.c index 193b2ad..90d9af2 100644 --- a/lib-sys/filter.c +++ b/lib-sys/filter.c @@ -7,14 +7,8 @@ * please see the file GPL in the top level source directory. */ -#if HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include +#include +#include #include "mutt_signal.h" #include "unix.h" @@ -152,3 +146,31 @@ int mutt_wait_filter (pid_t pid) return rc; } + +/* This function allows the user to specify a command to read stdout from in + place of a normal file. If the last character in the string is a pipe (|), + then we assume it is a commmand to run instead of a normal file. */ +FILE *mutt_open_read (const char *path, pid_t * thepid) +{ + int len = m_strlen(path); + FILE *f; + + if (path[len - 1] == '|') { + char *s = m_strdup(path); + + /* read from a pipe */ + + s[len - 1] = 0; + mutt_endwin (NULL); + *thepid = mutt_create_filter (s, NULL, &f, NULL); + p_delete(&s); + } else { + f = fopen (path, "r"); + if (!f) + return NULL; + *thepid = -1; + } + + return (f); +} +