Diffstat (limited to 'development/translation/shared/proparser.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | development/translation/shared/proparser.cpp | 1 |
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++ ) { |