#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)
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);
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);
}
return retval;
}
+
+
+} // namespace lyx