# HG changeset patch # User Brodie Rao # Date 1274280852 18000 # Node ID ebc90fd4ebc009c72cf94094390c001e41c7b544 # Parent b05ec0cc063ecc41f670689ba3194770eeb4517e 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. diff -r b05ec0cc063e -r ebc90fd4ebc0 hgext/pager.py --- 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):