postgres.git / summary / log / commit / refs

commit    433e65c2bd907723a5d93b3f2ff0bdbc77a0b625
Author:   Tom Lane <tgl@sss.pgh.pa.us>
Date:     Wed Dec 07 17:39:24 2016 +0000

    Restore psql's SIGPIPE setting if popen() fails.
    
    Ancient oversight in PageOutput(): if popen() fails, we'd better reset
    the SIGPIPE handler before returning stdout, because ClosePager() won't.
    Noticed while fixing the empty-PAGER issue.


src/bin/psql/print.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c index 85ac76b8fe3..b48fb8dd7ff 100644 --- a/src/bin/psql/print.c +++ b/src/bin/psql/print.c @@ -2217,6 +2217,10 @@ PageOutput(int lines, unsigned short int pager) pagerpipe = popen(pagerprog, "w"); if (pagerpipe) return pagerpipe; + /* if popen fails, silently proceed without pager */ +#ifndef WIN32 + pqsignal(SIGPIPE, SIG_DFL); +#endif #ifdef TIOCGWINSZ } #endif [parent: 82eb5c514473]