X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FChktex.C;h=1e7f62d2bc7724506ecaa9f364aff8fd13fcd51a;hb=dad1fc66e44a4dad94eb1e9ffd5736bf8f59ae6d;hp=2f2dd73427ae6b911e16b923fe47e116f50153cf;hpb=0eccdd1c3613e5170deb77b22174dd0afde833e9;p=lyx.git diff --git a/src/Chktex.C b/src/Chktex.C index 2f2dd73427..1e7f62d2bc 100644 --- a/src/Chktex.C +++ b/src/Chktex.C @@ -1,35 +1,37 @@ /* This file is part of * ====================================================== - * - * LyX, The Document Processor + * + * LyX, The Document Processor * Copyright 1995 Matthias Ettrich - * Copyright 1995-1999 The LyX Team. + * Copyright 1995-2001 The LyX Team. * * This file is Copyright 1997-1998 * Asger Alstrup * - *====================================================== + * ====================================================== */ #include -#include // atoi - -#ifdef __GNUG__ -#pragma implementation -#endif - #include "Chktex.h" #include "LaTeX.h" // TeXErrors -#include "support/filetools.h" #include "lyxlex.h" -#include "support/FileInfo.h" -#include "error.h" -#include "support/syscall.h" -#include "support/syscontr.h" -#include "pathstack.h" +#include "debug.h" #include "gettext.h" +#include "support/FileInfo.h" +#include "support/filetools.h" +#include "support/systemcall.h" +#include "support/path.h" +#include "support/lstrings.h" + +#include "BoostFormat.h" + +#include + +using std::ifstream; +using std::getline; + /* * CLASS Chktex */ @@ -43,10 +45,10 @@ Chktex::Chktex(string const & chktex, string const & f, string const & p) int Chktex::run(TeXErrors &terr) { // run bibtex - string log = ChangeExtension(file, ".log", true); + string log = OnlyFilename(ChangeExtension(file, ".log")); string tmp = cmd + " -q -v0 -b0 -x " + file + " -o " + log; - Systemcalls one; - int result= one.Startscript(Systemcalls::System, tmp); + Systemcall one; + int result= one.startscript(Systemcall::Wait, tmp); if (result == 0) { result = scanLogFile(terr); } else { @@ -56,37 +58,42 @@ int Chktex::run(TeXErrors &terr) } -int Chktex::scanLogFile(TeXErrors &terr) +int Chktex::scanLogFile(TeXErrors & terr) { string token; int retval = 0; - LyXLex lex(0, 0); + string const tmp = OnlyFilename(ChangeExtension(file, ".log")); - string tmp = ChangeExtension(file, ".log", true); - - if (!lex.setFile(tmp)) { - // Unable to open file. Return at once - return -1; - } +#if USE_BOOST_FORMAT + boost::format msg(_("ChkTeX warning id # %1$d")); +#else + string const msg(_("ChkTeX warning id # ")); +#endif + ifstream ifs(tmp.c_str()); + while (getline(ifs, token)) { + string srcfile; + string line; + string pos; + string warno; + string warning; + token = split(token, srcfile, ':'); + token = split(token, line, ':'); + token = split(token, pos, ':'); + token = split(token, warno, ':'); + token = split(token, warning, ':'); + + int const lineno = lyx::atoi(line); + +#if USE_BOOST_FORMAT + msg % warno; + terr.insertError(lineno, msg.str(), warning); + msg.clear(); +#else + terr.insertError(lineno, msg + warno, warning); +#endif - while (lex.IsOK()) { - if (lex.EatLine()) - token = lex.GetString(); - else // blank line in the file being read - continue; - - string srcfile, line, pos, warno, warning; - token=split(token, srcfile, ':'); - token=split(token, line, ':'); - token=split(token, pos, ':'); - token=split(token, warno, ':'); - token=split(token, warning, ':'); - - int lineno = atoi(line.c_str()); - warno = _("ChkTeX warning id #") + warno; - terr.insertError(lineno, warno, warning); - retval++; + ++retval; } return retval; }