mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
48edb15e9c
This is an instance where we can safely convert the first argument, rest are the cases except one where we are using 'c' which is not there in Python 3. So that needs to be handled differently. This will help in making `hg help` run on Python 3.
80 lines
2.1 KiB
Python
80 lines
2.1 KiB
Python
from __future__ import absolute_import
|
|
|
|
import array
|
|
import errno
|
|
import fcntl
|
|
import os
|
|
import sys
|
|
|
|
from . import (
|
|
encoding,
|
|
osutil,
|
|
pycompat,
|
|
)
|
|
|
|
def _rcfiles(path):
|
|
rcs = [os.path.join(path, 'hgrc')]
|
|
rcdir = os.path.join(path, 'hgrc.d')
|
|
try:
|
|
rcs.extend([os.path.join(rcdir, f)
|
|
for f, kind in osutil.listdir(rcdir)
|
|
if f.endswith(".rc")])
|
|
except OSError:
|
|
pass
|
|
return rcs
|
|
|
|
def systemrcpath():
|
|
path = []
|
|
if pycompat.sysplatform == 'plan9':
|
|
root = 'lib/mercurial'
|
|
else:
|
|
root = 'etc/mercurial'
|
|
# old mod_python does not set sys.argv
|
|
if len(getattr(sys, 'argv', [])) > 0:
|
|
p = os.path.dirname(os.path.dirname(pycompat.sysargv[0]))
|
|
if p != '/':
|
|
path.extend(_rcfiles(os.path.join(p, root)))
|
|
path.extend(_rcfiles('/' + root))
|
|
return path
|
|
|
|
def userrcpath():
|
|
if pycompat.sysplatform == 'plan9':
|
|
return [encoding.environ['home'] + '/lib/hgrc']
|
|
elif pycompat.sysplatform == 'darwin':
|
|
return [os.path.expanduser('~/.hgrc')]
|
|
else:
|
|
confighome = encoding.environ.get('XDG_CONFIG_HOME')
|
|
if confighome is None or not os.path.isabs(confighome):
|
|
confighome = os.path.expanduser('~/.config')
|
|
|
|
return [os.path.expanduser('~/.hgrc'),
|
|
os.path.join(confighome, 'hg', 'hgrc')]
|
|
|
|
def termsize(ui):
|
|
try:
|
|
import termios
|
|
TIOCGWINSZ = termios.TIOCGWINSZ # unavailable on IRIX (issue3449)
|
|
except (AttributeError, ImportError):
|
|
return 80, 24
|
|
|
|
for dev in (ui.ferr, ui.fout, ui.fin):
|
|
try:
|
|
try:
|
|
fd = dev.fileno()
|
|
except AttributeError:
|
|
continue
|
|
if not os.isatty(fd):
|
|
continue
|
|
arri = fcntl.ioctl(fd, TIOCGWINSZ, '\0' * 8)
|
|
height, width = array.array(r'h', arri)[:2]
|
|
if width > 0 and height > 0:
|
|
return width, height
|
|
except ValueError:
|
|
pass
|
|
except IOError as e:
|
|
if e[0] == errno.EINVAL:
|
|
pass
|
|
else:
|
|
raise
|
|
return 80, 24
|