Mercurial > hg
changeset 11215:ebc90fd4ebc0
pager: exec pager using /bin/sh -c
This mimics the behavior of popen() and ensures setting the pager to something
like "LESS=FSRX less" will work.
author | Brodie Rao <brodie@bitheap.org> |
---|---|
date | Wed, 19 May 2010 09:54:12 -0500 |
parents | b05ec0cc063e |
children | 1abd9442727c 1893867231d1 |
files | hgext/pager.py |
diffstat | 1 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/pager.py Wed May 19 00:45:50 2010 +0200 +++ b/hgext/pager.py Wed May 19 09:54:12 2010 -0500 @@ -49,7 +49,7 @@ to specify them in the global .hgrc ''' -import sys, os, signal, shlex +import sys, os, signal, shlex, errno from mercurial import dispatch, util, extensions def _runpager(p): @@ -67,8 +67,15 @@ os.dup2(fdin, sys.stdin.fileno()) os.close(fdin) os.close(fdout) - args = shlex.split(p) - os.execvp(args[0], args) + try: + os.execvp('/bin/sh', ['/bin/sh', '-c', p]) + except OSError, e: + if e.errno == errno.ENOENT: + # no /bin/sh, try executing the pager directly + args = shlex.split(p) + os.execvp(args[0], args) + else: + raise def uisetup(ui): def pagecmd(orig, ui, options, cmd, cmdfunc):