]> git.lyx.org Git - lyx.git/blobdiff - src/Chktex.C
* src/LyXAction.C: mark goto-clear-bookmark as working without buffer
[lyx.git] / src / Chktex.C
index 5e2fe5ce6ae5495036425029e011dd645355f79e..981999f303fb0c5b33275982cabc356d824e91ae 100644 (file)
 #include <config.h>
 
 #include "Chktex.h"
-#include "LaTeX.h" // TeXErrors
-#include "lyxlex.h"
-#include "debug.h"
 #include "gettext.h"
 
-#include "support/FileInfo.h"
+#include "LaTeX.h" // TeXErrors
+
+#include "support/convert.h"
+#include "support/docstream.h"
 #include "support/filetools.h"
-#include "support/systemcall.h"
-#include "support/path.h"
 #include "support/lstrings.h"
+#include "support/systemcall.h"
+
+#include <boost/format.hpp>
 
-#include "support/BoostFormat.h"
 
-#include <fstream>
+namespace lyx {
 
-using namespace lyx::support;
+using support::changeExtension;
+using support::FileName;
+using support::makeAbsPath;
+using support::onlyFilename;
+using support::split;
+using support::Systemcall;
 
-using std::ifstream;
 using std::getline;
+using std::string;
 
 
 Chktex::Chktex(string const & chktex, string const & f, string const & p)
@@ -41,7 +46,7 @@ Chktex::Chktex(string const & chktex, string const & f, string const & p)
 int Chktex::run(TeXErrors &terr)
 {
        // run bibtex
-       string log = OnlyFilename(ChangeExtension(file, ".log"));
+       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);
@@ -56,34 +61,38 @@ int Chktex::run(TeXErrors &terr)
 
 int Chktex::scanLogFile(TeXErrors & terr)
 {
-       string token;
        int retval = 0;
 
-       string const tmp = 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::format msg(STRCONV(_("ChkTeX warning id # %1$d")));
+       boost::basic_format<char_type> msg(_("ChkTeX warning id # %1$d"));
 #else
-       string const msg(_("ChkTeX warning id # "));
+       docstring const msg(_("ChkTeX warning id # "));
 #endif
-       ifstream ifs(tmp.c_str());
+       docstring token;
+       // FIXME UNICODE
+       // We have no idea what the encoding of the error file is
+       idocfstream ifs(tmp.toFilesystemEncoding().c_str());
        while (getline(ifs, token)) {
-               string srcfile;
-               string line;
-               string pos;
-               string warno;
-               string warning;
+               docstring srcfile;
+               docstring line;
+               docstring pos;
+               docstring warno;
+               docstring warning;
                token = split(token, srcfile, ':');
                token = split(token, line, ':');
                token = split(token, pos, ':');
                token = split(token, warno, ':');
                token = split(token, warning, ':');
 
-               int const lineno = atoi(line);
+               int const lineno = convert<int>(line);
 
 #if USE_BOOST_FORMAT
                msg % warno;
-               terr.insertError(lineno, STRCONV(msg.str()), warning);
+               terr.insertError(lineno, msg.str(), warning);
                msg.clear();
 #else
                terr.insertError(lineno, msg + warno, warning);
@@ -93,3 +102,6 @@ int Chktex::scanLogFile(TeXErrors & terr)
        }
        return retval;
 }
+
+
+} // namespace lyx