135 position = line.indexOf(
":" );
136 if ( position == -1 ) {
138 fieldname = QLatin1String(
"");
139 value = line.trimmed();
144 linelen = line.size();
145 fieldname = QString::fromUtf8( line.left( position ).trimmed() );
147 if ( linelen > ( position + 1 ) && line[ position + 1 ] ==
':' ) {
149 if ( linelen <= ( position + 3 ) ) {
153 value = QByteArray::fromBase64( line.mid( position + 3 ) );
157 if ( linelen > ( position + 1 ) && line[ position + 1 ] ==
'<' ) {
159 if ( linelen <= ( position + 3 ) ) {
163 value = QByteArray::fromBase64( line.mid( position + 3 ) );
167 if ( linelen <= ( position + 2 ) ) {
171 value = line.mid( position + 2 );
201 if ( d->mIsComment ) {
205 ParseValue retval = None;
206 if ( d->mLastParseValue == EndEntry ) {
207 d->mEntryType = Entry_None;
210 d->mUrl =
splitLine( d->mLine, d->mAttr, d->mValue );
212 QString attrLower = d->mAttr.toLower();
214 switch ( d->mEntryType ) {
216 if ( attrLower == QLatin1String(
"version" ) ) {
217 if ( !d->mDn.isEmpty() ) {
220 }
else if ( attrLower == QLatin1String(
"dn" ) ) {
221 kDebug() <<
"ldapentry dn:" << QString::fromUtf8( d->mValue, d->mValue.size() );
222 d->mDn = LdapDN( QString::fromUtf8( d->mValue, d->mValue.size() ) );
223 d->mModType = Mod_None;
225 }
else if ( attrLower == QLatin1String(
"changetype" ) ) {
226 if ( d->mDn.isEmpty() ) {
229 QString tmpval = QString::fromUtf8( d->mValue, d->mValue.size() );
230 kDebug() <<
"changetype:" << tmpval;
231 if ( tmpval == QLatin1String(
"add" ) ) {
232 d->mEntryType = Entry_Add;
233 }
else if ( tmpval == QLatin1String(
"delete" ) ) {
234 d->mEntryType = Entry_Del;
235 }
else if ( tmpval == QLatin1String(
"modrdn" ) || tmpval == QLatin1String(
"moddn" ) ) {
237 d->mNewSuperior.clear();
238 d->mDelOldRdn =
true;
239 d->mEntryType = Entry_Modrdn;
240 }
else if ( tmpval == QLatin1String(
"modify" ) ) {
241 d->mEntryType = Entry_Mod;
246 }
else if ( attrLower == QLatin1String(
"control" ) ) {
247 d->mUrl =
splitControl( d->mValue, d->mOid, d->mCritical, d->mValue );
249 }
else if ( !d->mAttr.isEmpty() && d->mValue.size() > 0 ) {
250 d->mEntryType = Entry_Add;
255 if ( d->mAttr.isEmpty() && d->mValue.size() == 0 ) {
262 if ( d->mAttr.isEmpty() && d->mValue.size() == 0 ) {
269 if ( d->mModType == Mod_None ) {
270 kDebug() <<
"new modtype" << d->mAttr;
271 if ( d->mAttr.isEmpty() && d->mValue.size() == 0 ) {
273 }
else if ( attrLower == QLatin1String(
"add" ) ) {
274 d->mModType = Mod_Add;
275 }
else if ( attrLower == QLatin1String(
"replace" ) ) {
276 d->mModType = Mod_Replace;
277 d->mAttr = QString::fromUtf8( d->mValue, d->mValue.size() );
278 d->mValue = QByteArray();
280 }
else if ( attrLower == QLatin1String(
"delete" ) ) {
281 d->mModType = Mod_Del;
282 d->mAttr = QString::fromUtf8( d->mValue, d->mValue.size() );
283 d->mValue = QByteArray();
289 if ( d->mAttr.isEmpty() ) {
290 if ( QString::fromUtf8( d->mValue, d->mValue.size() ) == QLatin1String(
"-") ) {
291 d->mModType = Mod_None;
292 }
else if ( d->mValue.size() == 0 ) {
303 if ( d->mAttr.isEmpty() && d->mValue.size() == 0 ) {
305 }
else if ( attrLower == QLatin1String(
"newrdn" ) ) {
306 d->mNewRdn = QString::fromUtf8( d->mValue, d->mValue.size() );
307 }
else if ( attrLower == QLatin1String(
"newsuperior" ) ) {
308 d->mNewSuperior = QString::fromUtf8( d->mValue, d->mValue.size() );
309 }
else if ( attrLower == QLatin1String(
"deleteoldrdn" ) ) {
310 if ( d->mValue.size() > 0 && d->mValue[0] ==
'0' ) {
311 d->mDelOldRdn =
false;
312 }
else if ( d->mValue.size() > 0 && d->mValue[0] ==
'1' ) {
313 d->mDelOldRdn =
true;
static QByteArray assembleLine(const QString &fieldname, const QByteArray &value, uint linelen=0, bool url=false)
Assembles fieldname and value into a valid Ldif line, BASE64 encodes the value if necessary and optio...