diff options
| -rwxr-xr-x | texall | 37 |
1 files changed, 24 insertions, 13 deletions
@@ -162,10 +162,15 @@ class AnalyseTexBibfiles(Analyser): def finish(self, dirname): bibpaths = [] for bib in self.d.bibfiles: - bibpath = texpath(dirname, bib, pathtype="bib",progname="bibtex") - bibpath = strippath(bibpath, dirname) - self.d.deps.append((bibpath, ("",))) - bibpaths.append(bibpath) + try: + bibpath = texpath(dirname, bib, pathtype="bib",progname="bibtex") + bibpath = strippath(bibpath, dirname) + self.d.deps.append((bibpath, ("",))) + bibpaths.append(bibpath) + except ValueError, e: + error(self.d.name, str(e), warning=True) + bibpaths.append(bib) + pass self.d.bibfiles = bibpaths class AnalyseTexNeedsPs(Analyser): @@ -278,7 +283,6 @@ def analyseFile(dirname, filename, analyserclasses, parsetype, fulltext=False, c a.parse(line) except IOError, e: error(os.path.join(dirname, filename), "could not be analysed: %s"%e) - data = None else: f.close() if hasattr(data, "deps") and (recurse @@ -297,7 +301,7 @@ def analyseFile(dirname, filename, analyserclasses, parsetype, fulltext=False, c if hasattr(data, "required") and data.required: for a in analysers: a.finish(dirname) - if cache and data: + if cache: analysecache[(parsetype, pathname)] = data return data @@ -312,6 +316,8 @@ kpseproc = {} def texpath(dirname,filename,pathtype="tex",progname="latex",extlist=("",)): filename = os.path.expanduser(filename) # first try files in current directory + if pathtype=="bib" and extlist==("",): + extlist=(".bib", "") for ext in extlist: if os.path.isfile(os.path.join(dirname,filename+ext)): return filename+ext @@ -330,7 +336,9 @@ def texpath(dirname,filename,pathtype="tex",progname="latex",extlist=("",)): continue else: if iswindows: - kpse=subprocess.Popen(["kpsewhich", "-format", pathtype, "-progname", progname, lookupname], stdout=subprocess.PIPE) + kpse=subprocess.Popen(["kpsewhich", "-format", pathtype, "-progname", progname, lookupname], + stdout=subprocess.PIPE, + cwd=dirname) (out,err)=kpse.communicate() if kpse.wait() == 0: pathname = out[:-1] @@ -354,7 +362,8 @@ def texpath(dirname,filename,pathtype="tex",progname="latex",extlist=("",)): "-format", pathtype, "-progname", progname, lookupname], stdout=slave, - stdin=slave) + stdin=slave, + cwd="/") kpseproc[(pathtype, progname)] = (proc, master) if select.select([master], [], [], 0.1)[0]: pathname = os.read(master, 1024) @@ -512,11 +521,13 @@ def needsupdate(dirname, texname, data=None): error(os.path.join(dirname, texname), "ignored dependency: " + str(e), warning=True) # check for errors and requests - logdata = analyseLog(dirname, jobname + ".log") - if logdata.errors: - return " (because of error(s) in .log file)" - if logdata.requests: - return " (because of request(s) in .log file)" + logname = jobname + ".log" + if os.path.isfile(os.path.join(dirname, logname)): + logdata = analyseLog(dirname, jobname + ".log") + if logdata.errors: + return " (because of error(s) in .log file)" + if logdata.requests: + return " (because of request(s) in .log file)" # verbose force if opts.force: |
