#include "Lexer.h"
#include "support/convert.h"
+#include "support/debug.h"
#include "support/FileName.h"
#include "support/filetools.h"
#include "support/lstrings.h"
-
-#include <regex>
+#include "support/Package.h"
using namespace std;
packages_.clear();
bool finished = false;
+ string lstformat = "1";
// Parse config-file
while (lex.isOK() && !finished) {
switch (lex.lex()) {
string const p = lex.getString();
// Parse optional version info
lex.eatLine();
- string const v = lex.getString();
+ string const v = trim(lex.getString());
+ if (p == "!!fileformat") {
+ lstformat = v;
+ continue;
+ }
packages_.insert(make_pair(p, v));
}
}
}
+ // Check if the pkglist has current format.
+ // Reconfigure and re-parse if not.
+ if (lstformat != "2") {
+ package().reconfigureUserLyXDir("");
+ getAvailable();
+ }
}
if (packages_.empty())
getAvailable();
- bool result = false;
- // Check for yyyy-mm-dd
- static regex const reg("([\\d]{4})-([\\d]{2})-([\\d]{2})");
+ // required date as int (yyyymmdd)
+ int const req_date = (y * 10000) + (m * 100) + d;
for (auto const & package : packages_) {
if (package.first == name && !package.second.empty()) {
- smatch sub;
- if (regex_match(package.second, sub, reg)) {
- // Test whether date is same or newer.
- //
- // Test for year first
- int const avail_y = convert<int>(sub.str(1));
- if (avail_y < y)
- // our year is older: bad!
- break;
- if (avail_y > y) {
- // our year is newer: good!
- result = true;
- break;
- }
- // Same year: now test month
- int const avail_m = convert<int>(sub.str(2));
- if (avail_m < m)
- // our month is older: bad!
- break;
- if (avail_m > m) {
- // our month is newer: good!
- result = true;
- break;
- }
- // Same year and month: test day
- if (convert<int>(sub.str(3)) >= d) {
- // day same or newer: good!
- result = true;
- break;
- }
+ if (!isStrInt(package.second)) {
+ LYXERR0("Warning: Invalid date of package "
+ << package.first << " (" << package.second << ")");
+ continue;
}
+ // required date not newer than available date
+ return req_date <= convert<int>(package.second);
}
}
- return result;
+ return false;
}
} // namespace lyx