summaryrefslogtreecommitdiff
path: root/development/translation/shared/proparser.cpp
Unidiff
Diffstat (limited to 'development/translation/shared/proparser.cpp') (more/less context) (ignore 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
114 } 114 }
115 115
116 /* 116 /*
117 Expand $$variables within the 'value' part of a 'key = value' 117 Expand $$variables within the 'value' part of a 'key = value'
118 pair. 118 pair.
119 */ 119 */
120 QRegExp var( "\\$\\$[({]?([a-zA-Z0-9_]+)[)}]?" ); 120 QRegExp var( "\\$\\$[({]?([a-zA-Z0-9_]+)[)}]?" );
121 QMap<QString, QString>::Iterator it; 121 QMap<QString, QString>::Iterator it;
122 for ( it = tagMap.begin(); it != tagMap.end(); ++it ) { 122 for ( it = tagMap.begin(); it != tagMap.end(); ++it ) {
123 int i = 0; 123 int i = 0;
124 while ( (i = var.search((*it), i)) != -1 ) { 124 while ( (i = var.search((*it), i)) != -1 ) {
125 int len = var.matchedLength(); 125 int len = var.matchedLength();
126 QString invocation = var.cap(1); 126 QString invocation = var.cap(1);
127 QString after; 127 QString after;
128 128
129 if ( invocation == "system" ) { 129 if ( invocation == "system" ) {
130 // skip system(); it will be handled in the next pass 130 // skip system(); it will be handled in the next pass
131 ++i; 131 ++i;
132 } else if ( invocation == "OPIEDIR") { 132 } else if ( invocation == "OPIEDIR") {
133 (*it).replace( i, len, opieDir ); 133 (*it).replace( i, len, opieDir );
134 }else { 134 }else {
135 if ( tagMap.contains(invocation) ) 135 if ( tagMap.contains(invocation) )
136 after = tagMap[invocation]; 136 after = tagMap[invocation];
137 (*it).replace( i, len, after ); 137 (*it).replace( i, len, after );
138 i += after.length();
138 } 139 }
139 } 140 }
140 } 141 }
141 142
142 /* 143 /*
143 Execute system() calls. 144 Execute system() calls.
144 */ 145 */
145 QRegExp callToSystem( "\\$\\$system\\s*\\(([^()]*)\\)" ); 146 QRegExp callToSystem( "\\$\\$system\\s*\\(([^()]*)\\)" );
146 for ( it = tagMap.begin(); it != tagMap.end(); ++it ) { 147 for ( it = tagMap.begin(); it != tagMap.end(); ++it ) {
147 int i = 0; 148 int i = 0;
148 while ( (i = callToSystem.search((*it), i)) != -1 ) { 149 while ( (i = callToSystem.search((*it), i)) != -1 ) {
149 /* 150 /*
150 This code is stolen from qmake's project.cpp file. 151 This code is stolen from qmake's project.cpp file.
151 Ideally we would use the same parser, so we wouldn't 152 Ideally we would use the same parser, so we wouldn't
152 have this code duplication. 153 have this code duplication.
153 */ 154 */
154 QString after; 155 QString after;
155 char buff[256]; 156 char buff[256];
156 FILE *proc = QT_POPEN( callToSystem.cap(1).latin1(), "r" ); 157 FILE *proc = QT_POPEN( callToSystem.cap(1).latin1(), "r" );
157 while ( proc && !feof(proc) ) { 158 while ( proc && !feof(proc) ) {
158 int read_in = fread( buff, 1, 255, proc ); 159 int read_in = fread( buff, 1, 255, proc );
159 if ( !read_in ) 160 if ( !read_in )
160 break; 161 break;
161 for ( int i = 0; i < read_in; i++ ) { 162 for ( int i = 0; i < read_in; i++ ) {