##// END OF EJS Templates
Merge with stable
Matt Mackall -
r11186:a890cc50 merge default
parent child Browse files
Show More
@@ -49,9 +49,27 b' To ignore global commands like :hg:`vers'
49 to specify them in the global .hgrc
49 to specify them in the global .hgrc
50 '''
50 '''
51
51
52 import sys, os, signal
52 import sys, os, signal, shlex
53 from mercurial import dispatch, util, extensions
53 from mercurial import dispatch, util, extensions
54
54
55 def _runpager(p):
56 if not hasattr(os, 'fork'):
57 sys.stderr = sys.stdout = util.popen(p, 'wb')
58 return
59 fdin, fdout = os.pipe()
60 pid = os.fork()
61 if pid == 0:
62 os.close(fdin)
63 os.dup2(fdout, sys.stdout.fileno())
64 os.dup2(fdout, sys.stderr.fileno())
65 os.close(fdout)
66 return
67 os.dup2(fdin, sys.stdin.fileno())
68 os.close(fdin)
69 os.close(fdout)
70 args = shlex.split(p)
71 os.execvp(args[0], args)
72
55 def uisetup(ui):
73 def uisetup(ui):
56 def pagecmd(orig, ui, options, cmd, cmdfunc):
74 def pagecmd(orig, ui, options, cmd, cmdfunc):
57 p = ui.config("pager", "pager", os.environ.get("PAGER"))
75 p = ui.config("pager", "pager", os.environ.get("PAGER"))
@@ -60,7 +78,7 b' def uisetup(ui):'
60 if (cmd in attend or
78 if (cmd in attend or
61 (cmd not in ui.configlist('pager', 'ignore') and not attend)):
79 (cmd not in ui.configlist('pager', 'ignore') and not attend)):
62 ui.setconfig('ui', 'interactive', False)
80 ui.setconfig('ui', 'interactive', False)
63 sys.stderr = sys.stdout = util.popen(p, "wb")
81 _runpager(p)
64 if ui.configbool('pager', 'quiet'):
82 if ui.configbool('pager', 'quiet'):
65 signal.signal(signal.SIGPIPE, signal.SIG_DFL)
83 signal.signal(signal.SIGPIPE, signal.SIG_DFL)
66 return orig(ui, options, cmd, cmdfunc)
84 return orig(ui, options, cmd, cmdfunc)
General Comments 0
You need to be logged in to leave comments. Login now