X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=lib%2Fscripts%2FTeXFiles.py;h=a5787eaacba4ce01fa28adb16f1bc48af073bcb6;hb=975f304185eca53d62de8b36e6fc5f95b2da4fd9;hp=31b44b49049f2a9fccf08c9b04ffe88efb7752ee;hpb=90e2004fde2bc1b2bb310499411a2f49bc3514be;p=features.git diff --git a/lib/scripts/TeXFiles.py b/lib/scripts/TeXFiles.py index 31b44b4904..a5787eaacb 100755 --- a/lib/scripts/TeXFiles.py +++ b/lib/scripts/TeXFiles.py @@ -35,6 +35,7 @@ # relies on python and kpsewhich (no shell command is used). # +from __future__ import print_function import os, sys, re cls_stylefile = 'clsFiles.lst' @@ -56,15 +57,15 @@ def cmdOutput(cmd): # processing command line options if len(sys.argv) > 1: if sys.argv[1] in ['--help', '-help']: - print '''Usage: TeXFiles.py [-version | cls | sty | bst | bib | bbx| cbx ] + print('''Usage: TeXFiles.py [-version | cls | sty | bst | bib | bbx| cbx ] Default is without any Parameters, - so that all files will be created''' + so that all files will be created''') sys.exit(0) else: types = sys.argv[1:] for type in types: if type not in ['cls', 'sty', 'bst', 'bib', 'bbx', 'cbx']: - print 'ERROR: unknown type', type + print('ERROR: unknown type', type) sys.exit(1) else: # if no parameter is specified, assume all @@ -84,7 +85,7 @@ if sys.platform == 'cygwin': # process each file type for type in types: - print "Indexing files of type", type + print("Indexing files of type", type) if type == 'cls': outfile = cls_stylefile kpsetype = '.tex' @@ -110,16 +111,27 @@ for type in types: file_ext = '.' + type out = open(outfile, 'w') + visited = set() for dir in dirs.split(path_sep): # for each valid directory if not os.path.isdir(dir): continue # walk down the file hierarchy - for root,path,files in os.walk(dir): + for root,dirs,files in os.walk(dir, followlinks=True): + # prevent inifinite recursion + recurse = [] + for dir in dirs: + dirname = os.path.join(root, dir) + dirname = os.path.realpath(dirname) + dirname = os.path.normcase(dirname) + if dirname not in visited: + visited.add(dirname) + recurse.append(dir) + dirs[:] = recurse # check file type for file in files: if len(file) > 4 and file[-4:] == file_ext: # force the use of / since miktex uses / even under windows - print >> out, root.replace('\\', '/') + '/' + file + print(root.replace('\\', '/') + '/' + file, file=out) out.close()