mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-25 04:13:08 +00:00
Add generic parser for /etc/man.conf
- Also rename get_paths_from_manpath() to get_paths_from_man_locations()
This commit is contained in:
parent
277cd30520
commit
db0ff0bcde
1 changed files with 14 additions and 7 deletions
|
@ -857,7 +857,7 @@ def parse_and_output_man_pages(paths, output_directory, show_progress):
|
|||
add_diagnostic("Successfully parsed %d / %d pages" % (successful_count, total_count), BRIEF_VERBOSE)
|
||||
flush_diagnostics(sys.stderr)
|
||||
|
||||
def get_paths_from_manpath():
|
||||
def get_paths_from_man_locations():
|
||||
# Return all the paths to man(1) and man(8) files in the manpath
|
||||
import subprocess, os
|
||||
proc = None
|
||||
|
@ -866,7 +866,6 @@ def get_paths_from_manpath():
|
|||
parent_paths = os.getenv("MANPATH").strip().split(':')
|
||||
else:
|
||||
# Some systems have manpath, others have `man --path` (like Haiku).
|
||||
# TODO: Deal with systems that have neither (OpenBSD)
|
||||
for prog in [['manpath'], ['man', '--path']]:
|
||||
try:
|
||||
proc = subprocess.Popen(prog, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
|
@ -876,10 +875,18 @@ def get_paths_from_manpath():
|
|||
manpath, err_data = proc.communicate()
|
||||
parent_paths = manpath.decode().strip().split(':')
|
||||
if (not parent_paths) or (proc and proc.returncode > 0):
|
||||
# HACK: Use some fallback in case we can't get anything else.
|
||||
# `mandoc` does not provide `manpath` or `man --path` and $MANPATH might not be set, so just use the default for mandoc (minus /usr/X11R6/man, because that's not relevant).
|
||||
# HACK: Use some fallbacks in case we can't get anything else.
|
||||
# `mandoc` does not provide `manpath` or `man --path` and $MANPATH might not be set.
|
||||
# The alternative is reading its config file (/etc/man.conf)
|
||||
sys.stderr.write("Unable to get the manpath, falling back to /usr/share/man:/usr/local/share/man. Please set $MANPATH if that is not correct.\n")
|
||||
if os.path.isfile('/etc/man.conf'):
|
||||
data = open('/etc/man.conf', 'r')
|
||||
for line in data:
|
||||
if ('manpath' in line or 'MANPATH' in line):
|
||||
p = line.split(' ')[1]
|
||||
p = p.split()[0]
|
||||
parent_paths.append(p)
|
||||
if (not parent_paths):
|
||||
sys.stderr.write("Unable to get the manpath, falling back to /usr/share/man:/usr/local/share/man. Please set $MANPATH if that is not correct.\n")
|
||||
parent_paths = ["/usr/share/man", "/usr/local/share/man"]
|
||||
result = []
|
||||
for parent_path in parent_paths:
|
||||
|
@ -943,8 +950,8 @@ if __name__ == "__main__":
|
|||
assert False, "unhandled option"
|
||||
|
||||
if use_manpath:
|
||||
# Fetch all man1 and man8 files from the manpath
|
||||
file_paths.extend(get_paths_from_manpath())
|
||||
# Fetch all man1 and man8 files from the manpath or man.conf
|
||||
file_paths.extend(get_paths_from_man_locations())
|
||||
|
||||
if cleanup_directories:
|
||||
for cleanup_dir in cleanup_directories:
|
||||
|
|
Loading…
Reference in a new issue