72 const QByteArray &value,
73 uint linelen,
bool url )
80 result = fieldname.toUtf8() +
":< " + value;
82 isDn = fieldname.toLower() == QLatin1String(
"dn" );
84 if ( value.size() > 0 && value[0] > 0 && value[0] !=
'\n' &&
85 value[0] !=
'\r' && value[0] !=
':' && value[0] !=
'<' ) {
91 for (
int i=1; i < value.size(); ++i ) {
93 if ( ( isDn && value[i] == 0 ) ||
94 ( !isDn && value[i] <= 0 ) ||
95 value[i] ==
'\r' || value[i] ==
'\n' ) {
102 if ( value.size() == 0 ) {
107 result = fieldname.toUtf8() +
": " + value;
109 result = fieldname.toUtf8() +
":: " + value.toBase64();
113 int i = (uint)( fieldname.length() + 2 ) > linelen ? fieldname.length() + 2 : linelen;
114 while ( i < result.length() ) {
115 result.insert( i,
"\n " );
137 position = line.indexOf(
":" );
138 if ( position == -1 ) {
140 fieldname = QLatin1String(
"" );
141 value = line.trimmed();
146 linelen = line.size();
147 fieldname = QString::fromUtf8( line.left( position ).trimmed() );
149 if ( linelen > ( position + 1 ) && line[ position + 1 ] ==
':' ) {
151 if ( linelen <= ( position + 3 ) ) {
155 value = QByteArray::fromBase64( line.mid( position + 3 ) );
159 if ( linelen > ( position + 1 ) && line[ position + 1 ] ==
'<' ) {
161 if ( linelen <= ( position + 3 ) ) {
165 value = QByteArray::fromBase64( line.mid( position + 3 ) );
169 if ( linelen <= ( position + 2 ) ) {
173 value = line.mid( position + 2 );
182 bool url =
splitLine( line, tmp, value );
184 kDebug() <<
"value:" << QString::fromUtf8( value, value.size() );
185 if ( tmp.isEmpty() ) {
186 tmp = QString::fromUtf8( value, value.size() );
189 if ( tmp.endsWith( QLatin1String(
"true" ) ) ) {
191 tmp.truncate( tmp.length() - 5 );
192 }
else if ( tmp.endsWith( QLatin1String(
"false" ) ) ) {
194 tmp.truncate( tmp.length() - 6 );
203 if ( d->mIsComment ) {
207 ParseValue retval = None;
208 if ( d->mLastParseValue == EndEntry ) {
209 d->mEntryType = Entry_None;
212 d->mUrl =
splitLine( d->mLine, d->mAttr, d->mValue );
214 QString attrLower = d->mAttr.toLower();
216 switch ( d->mEntryType ) {
218 if ( attrLower == QLatin1String(
"version" ) ) {
219 if ( !d->mDn.isEmpty() ) {
222 }
else if ( attrLower == QLatin1String(
"dn" ) ) {
223 kDebug() <<
"ldapentry dn:" << QString::fromUtf8( d->mValue, d->mValue.size() );
224 d->mDn = LdapDN( QString::fromUtf8( d->mValue, d->mValue.size() ) );
225 d->mModType = Mod_None;
227 }
else if ( attrLower == QLatin1String(
"changetype" ) ) {
228 if ( d->mDn.isEmpty() ) {
231 QString tmpval = QString::fromUtf8( d->mValue, d->mValue.size() );
232 kDebug() <<
"changetype:" << tmpval;
233 if ( tmpval == QLatin1String(
"add" ) ) {
234 d->mEntryType = Entry_Add;
235 }
else if ( tmpval == QLatin1String(
"delete" ) ) {
236 d->mEntryType = Entry_Del;
237 }
else if ( tmpval == QLatin1String(
"modrdn" ) || tmpval == QLatin1String(
"moddn" ) ) {
238 d->mNewRdn = QLatin1String(
"" );
239 d->mNewSuperior = QLatin1String(
"" );
240 d->mDelOldRdn =
true;
241 d->mEntryType = Entry_Modrdn;
242 }
else if ( tmpval == QLatin1String(
"modify" ) ) {
243 d->mEntryType = Entry_Mod;
248 }
else if ( attrLower == QLatin1String(
"control" ) ) {
249 d->mUrl =
splitControl( d->mValue, d->mOid, d->mCritical, d->mValue );
251 }
else if ( !d->mAttr.isEmpty() && d->mValue.size() > 0 ) {
252 d->mEntryType = Entry_Add;
257 if ( d->mAttr.isEmpty() && d->mValue.size() == 0 ) {
264 if ( d->mAttr.isEmpty() && d->mValue.size() == 0 ) {
271 if ( d->mModType == Mod_None ) {
272 kDebug() <<
"new modtype" << d->mAttr;
273 if ( d->mAttr.isEmpty() && d->mValue.size() == 0 ) {
275 }
else if ( attrLower == QLatin1String(
"add" ) ) {
276 d->mModType = Mod_Add;
277 }
else if ( attrLower == QLatin1String(
"replace" ) ) {
278 d->mModType = Mod_Replace;
279 d->mAttr = QString::fromUtf8( d->mValue, d->mValue.size() );
280 d->mValue = QByteArray();
282 }
else if ( attrLower == QLatin1String(
"delete" ) ) {
283 d->mModType = Mod_Del;
284 d->mAttr = QString::fromUtf8( d->mValue, d->mValue.size() );
285 d->mValue = QByteArray();
291 if ( d->mAttr.isEmpty() ) {
292 if ( QString::fromUtf8( d->mValue, d->mValue.size() ) == QLatin1String(
"-" ) ) {
293 d->mModType = Mod_None;
294 }
else if ( d->mValue.size() == 0 ) {
305 if ( d->mAttr.isEmpty() && d->mValue.size() == 0 ) {
307 }
else if ( attrLower == QLatin1String(
"newrdn" ) ) {
308 d->mNewRdn = QString::fromUtf8( d->mValue, d->mValue.size() );
309 }
else if ( attrLower == QLatin1String(
"newsuperior" ) ) {
310 d->mNewSuperior = QString::fromUtf8( d->mValue, d->mValue.size() );
311 }
else if ( attrLower == QLatin1String(
"deleteoldrdn" ) ) {
312 if ( d->mValue.size() > 0 && d->mValue[0] ==
'0' ) {
313 d->mDelOldRdn =
false;
314 }
else if ( d->mValue.size() > 0 && d->mValue[0] ==
'1' ) {
315 d->mDelOldRdn =
true;