Index: funcname.tab =================================================================== RCS file: /home/aito/cvsroot/w3m/funcname.tab,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 funcname.tab --- funcname.tab 2000/06/20 04:01:40 1.1.1.1 +++ funcname.tab 2000/08/21 10:29:02 @@ -60,6 +60,7 @@ PCMAP pcmap PEEK curURL PEEK_LINK peekURL +PIPEBUF pipeBuf PIPE_SHELL pipesh PREV_LINK prevA PREV_MARK prevMk Index: main.c =================================================================== RCS file: /home/aito/cvsroot/w3m/main.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 main.c --- main.c 2000/06/20 04:01:40 1.1.1.1 +++ main.c 2000/08/21 10:28:04 @@ -3553,3 +3553,41 @@ execdict(GetWord(Currentbuf)); } #endif /* DICT */ + +static int pipeseq = 0; + +void +pipeBuf(void) +{ + char *cmd; + FILE *f; + Buffer *buf; + Str bn,tmpf; + + tmpf = Sprintf("%s/w3mp%d-%d", rc_dir, (int) getpid(), pipeseq++); + f = fopen(tmpf->ptr, "w"); + if (f == NULL) { + disp_message(Sprintf("Can't save buffer to %s\n", cmd)->ptr, TRUE); + return; + } + saveBuffer(Currentbuf, f); + fclose(f); + pushText(fileToDelete,tmpf->ptr); + + cmd = inputLineHist("Pipe buffer to: ", NULL, IN_COMMAND, SaveHist); + if (cmd == NULL || *cmd == '\0') { + displayBuffer(Currentbuf, B_FORCE_REDRAW); + return; + } + tmpf = Sprintf("%s < %s",cmd,tmpf->ptr); + f = popen(tmpf->ptr, "r"); + if (f == NULL) { + disp_message(Sprintf("Can't open %s\n", cmd)->ptr, TRUE); + return; + } + buf = openGeneralPagerBuffer(f); + pushBuffer(buf); + + displayBuffer(Currentbuf, B_FORCE_REDRAW); + +} Index: proto.h =================================================================== RCS file: /home/aito/cvsroot/w3m/proto.h,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 proto.h --- proto.h 2000/06/20 04:01:40 1.1.1.1 +++ proto.h 2000/08/21 10:30:33 @@ -82,6 +82,7 @@ extern void extbrz(void); extern void linkbrz(void); extern void curlno(void); +extern void pipeBuf(void); extern int currentLn(Buffer * buf); extern FILE *examineFile(char *path, void (**close_rout) ()); extern int dir_exist(char *path);