summaryrefslogtreecommitdiff
path: root/development/translation/shared/proparser.cpp
Side-by-side diff
Diffstat (limited to 'development/translation/shared/proparser.cpp') (more/less context) (show whitespace changes)
-rw-r--r--development/translation/shared/proparser.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/development/translation/shared/proparser.cpp b/development/translation/shared/proparser.cpp
index f616c5a..bb099bb 100644
--- a/development/translation/shared/proparser.cpp
+++ b/development/translation/shared/proparser.cpp
@@ -114,48 +114,49 @@ QMap<QString, QString> proFileTagMap( const QString& text, const QString& opieDi
}
/*
Expand $$variables within the 'value' part of a 'key = value'
pair.
*/
QRegExp var( "\\$\\$[({]?([a-zA-Z0-9_]+)[)}]?" );
QMap<QString, QString>::Iterator it;
for ( it = tagMap.begin(); it != tagMap.end(); ++it ) {
int i = 0;
while ( (i = var.search((*it), i)) != -1 ) {
int len = var.matchedLength();
QString invocation = var.cap(1);
QString after;
if ( invocation == "system" ) {
// skip system(); it will be handled in the next pass
++i;
} else if ( invocation == "OPIEDIR") {
(*it).replace( i, len, opieDir );
}else {
if ( tagMap.contains(invocation) )
after = tagMap[invocation];
(*it).replace( i, len, after );
+ i += after.length();
}
}
}
/*
Execute system() calls.
*/
QRegExp callToSystem( "\\$\\$system\\s*\\(([^()]*)\\)" );
for ( it = tagMap.begin(); it != tagMap.end(); ++it ) {
int i = 0;
while ( (i = callToSystem.search((*it), i)) != -1 ) {
/*
This code is stolen from qmake's project.cpp file.
Ideally we would use the same parser, so we wouldn't
have this code duplication.
*/
QString after;
char buff[256];
FILE *proc = QT_POPEN( callToSystem.cap(1).latin1(), "r" );
while ( proc && !feof(proc) ) {
int read_in = fread( buff, 1, 255, proc );
if ( !read_in )
break;
for ( int i = 0; i < read_in; i++ ) {