X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FChktex.cpp;h=2db47b44c5b6968085dec793f09f11f8654293fc;hb=4ed0312c51704780af1c452d3a82a84171b3725a;hp=2af1ed0487a20bdf118fd9b112a1e07bed8c52bf;hpb=ada0bd00f07c85235c6653a0f7ecb04a8c28b54d;p=lyx.git diff --git a/src/Chktex.cpp b/src/Chktex.cpp index 2af1ed0487..2db47b44c5 100644 --- a/src/Chktex.cpp +++ b/src/Chktex.cpp @@ -11,50 +11,45 @@ #include #include "Chktex.h" -#include "gettext.h" #include "LaTeX.h" // TeXErrors #include "support/convert.h" #include "support/docstream.h" #include "support/filetools.h" +#include "support/gettext.h" #include "support/lstrings.h" #include "support/Systemcall.h" -#include - -using std::getline; -using std::string; - +using namespace std; +using namespace lyx::support; namespace lyx { -using support::changeExtension; -using support::FileName; -using support::makeAbsPath; -using support::onlyFilename; -using support::split; -using support::Systemcall; - Chktex::Chktex(string const & chktex, string const & f, string const & p) : cmd(chktex), file(f), path(p) -{ -} +{} int Chktex::run(TeXErrors &terr) { - // run bibtex - string log = onlyFilename(changeExtension(file, ".log")); + // run chktex + string log = onlyFileName(changeExtension(file, ".log")); string tmp = cmd + " -q -v0 -b0 -x " + file + " -o " + log; Systemcall one; int result = one.startscript(Systemcall::Wait, tmp); - if (result == 0) { - result = scanLogFile(terr); - } else { + // ChkTeX (as of v. 1.7.7) has the following return values: + // 0 = EXIT_SUCCESS : program ran successfully, nothing to report + // 1 = EXIT_FAILURE : program ran unsucessfully + // 2 = EXIT_WARNINGS : program ran successfully, only warnings to report + // 3 = EXIT_ERRORS : program ran successfully, errors to report + // We only check for EXIT_FAILURE here, since older versions of ChkTeX + // returned 0 also in case 2 and 3. + if (result == EXIT_FAILURE) result = -1; - } + else + result = scanLogFile(terr); return result; } @@ -63,19 +58,15 @@ int Chktex::scanLogFile(TeXErrors & terr) { int retval = 0; - // FIXME: Find out whether onlyFilename() is really needed, - // or whether makeAbsPath(onlyFilename()) is a noop here - FileName const tmp(makeAbsPath(onlyFilename(changeExtension(file, ".log")))); + // FIXME: Find out whether onlyFileName() is really needed, + // or whether makeAbsPath(onlyFileName()) is a noop here + FileName const tmp(makeAbsPath(onlyFileName(changeExtension(file, ".log")))); -#if USE_BOOST_FORMAT - boost::basic_format msg(_("ChkTeX warning id # %1$d")); -#else - docstring const msg(_("ChkTeX warning id # ")); -#endif + docstring const msg(_("ChkTeX warning id # %1$s")); docstring token; // FIXME UNICODE // We have no idea what the encoding of the error file is - idocfstream ifs(tmp.toFilesystemEncoding().c_str()); + ifdocstream ifs(tmp.toFilesystemEncoding().c_str()); while (getline(ifs, token)) { docstring srcfile; docstring line; @@ -90,13 +81,7 @@ int Chktex::scanLogFile(TeXErrors & terr) int const lineno = convert(line); -#if USE_BOOST_FORMAT - msg % warno; - terr.insertError(lineno, msg.str(), warning); - msg.clear(); -#else - terr.insertError(lineno, msg + warno, warning); -#endif + terr.insertError(lineno, bformat(msg, warno), warning); ++retval; }