#include <config.h>
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
#include "LaTeX.h"
#include "bufferlist.h"
#include "gettext.h"
#include "lyxfunc.h"
#include "debug.h"
+#include "funcrequest.h"
#include "support/filetools.h"
#include "support/FileInfo.h"
#include "support/lstrings.h"
#include "support/path.h"
#include <boost/regex.hpp>
+#include "BoostFormat.h"
#include <fstream>
#include <cstdio> // sscanf
using std::set;
using boost::regex;
using boost::regex_match;
+
+#ifndef USE_INCLUDED_STRING
using boost::smatch;
+#else
+using boost::cmatch;
+#endif
// TODO: in no particular order
// - get rid of the extern BufferList and the call to
extern BufferList bufferlist;
+namespace {
+
+void showRunMessage(LyXFunc * lf, unsigned int count)
+{
+ ostringstream str;
+#if USE_BOOST_FORMAT
+ str << boost::format(_("Waiting for LaTeX run number %1$d")) % count;
+#else
+ str << _("Waiting for LaTeX run number ") << count;
+#endif
+ lf->dispatch(FuncRequest(LFUN_MESSAGE, STRCONV(str.str())));
+}
+
+
+};
/*
* CLASS TEXERRORS
*/
// but the reason for the error might be in a generated file...
- string ofname = OnlyFilename(file);
+ string const ofname = OnlyFilename(file);
// bibtex file
- string bbl = ChangeExtension(ofname, ".bbl");
+ string const bbl = ChangeExtension(ofname, ".bbl");
lyx::unlink(bbl);
// makeindex file
- string ind = ChangeExtension(ofname, ".ind");
+ string const ind = ChangeExtension(ofname, ".ind");
lyx::unlink(ind);
// Also remove the aux file
- string aux = ChangeExtension(ofname, ".aux");
+ string const aux = ChangeExtension(ofname, ".aux");
lyx::unlink(aux);
}
int scanres = NO_ERRORS;
unsigned int count = 0; // number of times run
num_errors = 0; // just to make sure.
- const unsigned int MAX_RUN = 6;
+ unsigned int const MAX_RUN = 6;
DepTable head; // empty head
bool rerun = false; // rerun requested
// The class LaTeX does not know the temp path.
- bufferlist.updateIncludedTeXfiles(lyx::getcwd()); //GetCWD());
+ bufferlist.updateIncludedTeXfiles(lyx::getcwd());
// Never write the depfile if an error was encountered.
++count;
lyxerr[Debug::LATEX] << "Run #" << count << endl;
if (lfun) {
- ostringstream str;
- str << _("LaTeX run number") << ' ' << count;
- // check lyxstring string stream and gcc 3.1 before fixing
- lfun->dispatch(LFUN_MESSAGE, string(str.str().c_str()));
+ showRunMessage(lfun, count);
}
this->operator()();
// no checks for now
lyxerr[Debug::LATEX] << "Running MakeIndex." << endl;
if (lfun) {
- lfun->dispatch(LFUN_MESSAGE, string(_("Running MakeIndex.")));
+ lfun->dispatch(FuncRequest(LFUN_MESSAGE, _("Running MakeIndex.")));
}
rerun = runMakeIndex(OnlyFilename(ChangeExtension(file, ".idx")));
// no checks for now
lyxerr[Debug::LATEX] << "Running BibTeX." << endl;
if (lfun) {
- lfun->dispatch(LFUN_MESSAGE, string(_("Running BibTeX.")));
+ lfun->dispatch(FuncRequest(LFUN_MESSAGE, _("Running BibTeX.")));
}
updateBibtexDependencies(head, bibtex_info);
lyxerr[Debug::LATEX]
<< "Run #" << count << endl;
if (lfun) {
- ostringstream str;
- str << _("LaTeX run number") << ' ' << count;
- // check lyxstring string stream and gcc 3.1 before fixing
- lfun->dispatch(LFUN_MESSAGE, string(str.str().c_str()));
+ showRunMessage(lfun, count);
}
this->operator()();
// no checks for now
lyxerr[Debug::LATEX] << "Running MakeIndex." << endl;
if (lfun) {
- lfun->dispatch(LFUN_MESSAGE, string(_("Running MakeIndex.")));
+ lfun->dispatch(FuncRequest(LFUN_MESSAGE, _("Running MakeIndex.")));
}
rerun = runMakeIndex(OnlyFilename(ChangeExtension(file, ".idx")));
++count;
lyxerr[Debug::LATEX] << "Run #" << count << endl;
if (lfun) {
- ostringstream str;
- str << _("LaTeX run number") << ' ' << count;
- // check lyxstring string stream and gcc 3.1 before fixing
- lfun->dispatch(LFUN_MESSAGE, string(str.str().c_str()));
+ showRunMessage(lfun, count);
}
this->operator()();
result.push_back(scanAuxFile(file));
for (int i = 1; i < 1000; ++i) {
- string file2 = ChangeExtension(file, "") + "." + tostr(i)
+ string file2 = ChangeExtension(file, "") + '.' + tostr(i)
+ ".aux";
FileInfo fi(file2);
if (!fi.exist())
regex reg4("\\\\@input\\{([^}]+)\\}");
while (getline(ifs, token)) {
- token = strip(token, '\r');
+ token = rtrim(token, "\r");
+#ifndef USE_INCLUDED_STRING
smatch sub;
- if (regex_match(token, sub, reg1)) {
- string data = sub[1];
+#else
+ cmatch sub;
+#endif
+ if (regex_match(STRCONV(token), sub, reg1)) {
+ string data = STRCONV(sub.str(1));
while (!data.empty()) {
string citation;
data = split(data, citation, ',');
<< citation << endl;
aux_info.citations.insert(citation);
}
- } else if (regex_match(token, sub, reg2)) {
- string data = sub[1];
+ } else if (regex_match(STRCONV(token), sub, reg2)) {
+ string data = sub.STRCONV(str(1));
// data is now all the bib files separated by ','
// get them one by one and pass them to the helper
while (!data.empty()) {
string database;
data = split(data, database, ',');
database = ChangeExtension(database, "bib");
- lyxerr[Debug::LATEX] << "Bibtex database: `"
- << database << "'" << endl;
+ lyxerr[Debug::LATEX] << "BibTeX database: `"
+ << database << '\'' << endl;
aux_info.databases.insert(database);
}
- } else if (regex_match(token, sub, reg3)) {
- string style = sub[1];
+ } else if (regex_match(STRCONV(token), sub, reg3)) {
+ string style = STRCONV(sub.str(1));
// token is now the style file
// pass it to the helper
style = ChangeExtension(style, "bst");
- lyxerr[Debug::LATEX] << "Bibtex style: `"
- << style << "'" << endl;
+ lyxerr[Debug::LATEX] << "BibTeX style: `"
+ << style << '\'' << endl;
aux_info.styles.insert(style);
- } else if (regex_match(token, sub, reg4)) {
- string file2 = sub[1];
+ } else if (regex_match(STRCONV(token), sub, reg4)) {
+ string const file2 = STRCONV(sub.str(1));
scanAuxFile(file2, aux_info);
}
}
<< "We should rerun." << endl;
retval |= RERUN;
}
- } else if (prefixIs(token, "(")) {
+ } else if (token[0] == '(') {
if (contains(token, "Rerun LaTeX") ||
contains(token, "Rerun to get")) {
// Used by natbib
string foundfile;
string token;
getline(ifs, token);
- token = strip(token, '\r');
+ token = rtrim(token, "\r");
if (token.empty()) continue;
+#ifndef USE_INCLUDED_STRING
smatch sub;
- if (regex_match(token, sub, reg1)) {
- foundfile = sub[1];
- } else if (regex_match(token, sub, reg2)) {
- foundfile = sub[1];
- } else if (regex_match(token, sub, reg3)) {
- foundfile = sub[1];
- } else if (regex_match(token, sub, reg4)) {
- foundfile = sub[1];
- } else if (regex_match(token, sub, reg5)) {
- foundfile = sub[1];
+#else
+ cmatch sub;
+#endif
+ if (regex_match(STRCONV(token), sub, reg1)) {
+ foundfile = STRCONV(sub.str(1));
+ } else if (regex_match(STRCONV(token), sub, reg2)) {
+ foundfile = STRCONV(sub.str(1));
+ } else if (regex_match(STRCONV(token), sub, reg3)) {
+ foundfile = STRCONV(sub.str(1));
+ } else if (regex_match(STRCONV(token), sub, reg4)) {
+ foundfile = STRCONV(sub.str(1));
+ } else if (regex_match(STRCONV(token), sub, reg5)) {
+ foundfile = STRCONV(sub.str(1));
} else {
continue;
}
// (2) foundfile is in the tmpdir
// insert it into head
else if (FileInfo(OnlyFilename(foundfile)).exist()) {
- if (regex_match(foundfile, unwanted)) {
+ if (regex_match(STRCONV(foundfile), unwanted)) {
lyxerr[Debug::DEPEND]
<< "We don't want "
<< OnlyFilename(foundfile)