Change the way xz/lzma man pages are detected

This avoids the use of the global and puts the diagnostic message in a
self-contained location.
This commit is contained in:
Marc Joliet 2013-09-26 17:15:53 +02:00
parent 1c8c9a10b5
commit 6de9a92582

View file

@ -20,7 +20,6 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
import string, sys, re, os.path, bz2, gzip, traceback, getopt, errno, codecs
from deroff import Deroffer
lzma_printed_msg = False
lzma_available = True
try:
try:
@ -715,7 +714,7 @@ def parse_manpage_at_path(manpage_path, output_directory):
filename = os.path.basename(manpage_path)
# Clear diagnostics
global diagnostic_indent, lzma_printed_msg
global diagnostic_indent
diagnostic_output[:] = []
diagnostic_indent = 0
@ -733,11 +732,6 @@ def parse_manpage_at_path(manpage_path, output_directory):
if IS_PY3: manpage = manpage.decode('latin-1')
elif manpage_path.endswith('.xz') or manpage_path.endswith('.lzma'):
if not lzma_available:
if not lzma_printed_msg:
add_diagnostic('A man page is compressed with lzma or xz, but the "lzma" module is not available.'
' Skipping. (This message is only printed on the first occurrence.)',
NOT_VERBOSE)
lzma_printed_msg = True
return
fd = lzma.LZMAFile(str(manpage_path), 'r')
manpage = fd.read()
@ -841,6 +835,15 @@ def parse_and_output_man_pages(paths, output_directory, show_progress):
last_progress_string_length = 0
if show_progress and not WRITE_TO_STDOUT:
print("Parsing man pages and writing completions to {0}".format(output_directory))
man_page_suffixes = set([os.path.splitext(m)[1][1:] for m in paths])
lzma_xz_occurs = "xz" in man_page_suffixes or "lzma" in man_page_suffixes
if lzma_xz_occurs and not lzma_available:
add_diagnostic('At least one man page is compressed with lzma or xz, but the "lzma" module is not available.'
' Any man page compressed with either will be skipped.',
NOT_VERBOSE)
flush_diagnostics(sys.stderr)
for manpage_path in paths:
index += 1