// initialize the regexps we will use
QRegExp repoLine("create repository\\s+(\\S+)", Qt::CaseInsensitive);
- QRegExp repoBranchLine("branch\\s+(\\S+)\\s+from\\s+(\\S+)", Qt::CaseInsensitive);
+ QRegExp repoBranchLine("branch\\s+(\\S+)", Qt::CaseInsensitive);
QRegExp matchLine("match\\s+(.*)", Qt::CaseInsensitive);
QRegExp matchRepoLine("repository\\s+(\\S+)", Qt::CaseInsensitive);
QRegExp matchBranchLine("branch\\s+(\\S+)", Qt::CaseInsensitive);
- QRegExp matchPathLine("path\\s+(.*)", Qt::CaseInsensitive);
QRegExp matchRevLine("(min|max) revision (\\d+)", Qt::CaseInsensitive);
QTextStream s(&file);
enum { ReadingNone, ReadingRepository, ReadingMatch } state = ReadingNone;
Repository repo;
Match match;
+ int lineNumber = 0;
while (!s.atEnd()) {
+ ++lineNumber;
QString origLine = s.readLine();
QString line = origLine;
if (repoBranchLine.exactMatch(line)) {
Repository::Branch branch;
branch.name = repoBranchLine.cap(1);
- branch.branchFrom = repoBranchLine.cap(2);
repo.branches += branch;
continue;
} else if (matchBranchLine.exactMatch(line)) {
match.branch = matchBranchLine.cap(1);
continue;
- } else if (matchPathLine.exactMatch(line)) {
- match.path = matchPathLine.cap(1);
- continue;
} else if (matchRevLine.exactMatch(line)) {
if (matchRevLine.cap(1) == "min")
match.minRevision = matchRevLine.cap(2).toInt();
state = ReadingRepository;
repo = Repository(); // clear
repo.name = repoLine.cap(1);
+ repo.lineNumber = lineNumber;
} else if (isMatchRule) {
// match rule
state = ReadingMatch;
match = Match();
match.rx = QRegExp(matchLine.cap(1), Qt::CaseSensitive, QRegExp::RegExp2);
+ match.lineNumber = lineNumber;
} else {
- qFatal("Malformed line in rules file: %s", qPrintable(origLine));
+ qFatal("Malformed line in rules file: line %d: %s",
+ lineNumber, qPrintable(origLine));
}
}
}