]> git.lyx.org Git - lyx.git/blobdiff - src/Chktex.C
Don't launch that Alert if the graphics file isn't found. It doesn't work
[lyx.git] / src / Chktex.C
index dc94696ace1b5a8317eee8d9a2b7a3c89ef74575..ac08ba8879172a190d4f1fdf97bc7b5747f7e03d 100644 (file)
@@ -1,35 +1,39 @@
 /* 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 <config.h>
 
-#include <cstdlib> // 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 "debug.h"
-#include "support/syscall.h"
-#include "support/syscontr.h"
-#include "support/path.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 <fstream>
+
+using std::ifstream;
+using std::getline;
+
 /*
  * CLASS Chktex
  */
@@ -43,10 +47,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 +60,30 @@ 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 tmp = ChangeExtension(file, ".log", true);
-
-       if (!lex.setFile(tmp)) {
-               // Unable to open file. Return at once
-               return -1;
-       }
-
-       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());
+       string tmp = OnlyFilename(ChangeExtension(file, ".log"));
+
+       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 lineno = lyx::atoi(line);
                warno = _("ChkTeX warning id #") + warno;
                terr.insertError(lineno, warno, warning);
-               retval++;
+               ++retval;
        }
        return retval;
 }