From kmail-devel Tue Jul 31 21:25:52 2001 From: sybille.schumann-bjoern.wolf () t-online ! de (=?iso-8859-1?q?Bj=F6rn=20Wolf?=) Date: Tue, 31 Jul 2001 21:25:52 +0000 To: kmail-devel Subject: Re: KMail is seriously in need of a code audit X-MARC-Message: https://marc.info/?l=kmail-devel&m=99661517215735 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--------------Boundary-00=_4VWC7ONTHI5R2JU5E9YB" --------------Boundary-00=_4VWC7ONTHI5R2JU5E9YB Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Hi, On Saturday, 28. July 2001 01:38, Alan Chandler wrote: > Seriously, to conduct a code audit you need to understand the bigger > picture - have a view on the design understand what each functions purpose > is and then review whether the code meets that purpose. Several days ago (15. July 2001) Marc Mutz added a DESIGN file to CVS. While reading this thread I wondered if I shouldn't write down what I learned from investigating the kmail sources. Maybe it helps to document "the bigger picture" What I wrote covers only a very small area of KMail, namely vcard support, and - worse - covers only parts of that. But anyway, it maybe helps others to understand easier what happens with vcards in KMail. If you think that this kind of information is helpful I could continue and put down some words on KMail's addressbook support. Regards Björn --------------Boundary-00=_4VWC7ONTHI5R2JU5E9YB Content-Type: text/html; charset="iso-8859-1"; name="DESIGN-vcard.html" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="DESIGN-vcard.html" PGh0bWw+DQo8Ym9keT4NCjxoMT4NCktNYWlsIFZDYXJkIFN1cHBvcnQNCjwvaDE+DQoNCktNYWls IGN1cnJlbnRseSBzdXBwb3J0czoNCjx1bD4NCjxsaT4NCmRpc3BsYXlpbmcgdmNhcmQgYXR0YWNo bWVudHMgaW4gYSBzZXBhcmF0ZSBwb3B1cA0KPC9saT4NCjwvdWw+DQoNCkZvciBLREUgMi4zLCBz dXBwb3J0IGlzIHBsYW5uZWQgZm9yIDstKQ0KPHVsPg0KPGxpPg0KYWRkaW5nIHZjYXJkcyB0byBr YWRkZXNzYm9vaw0KPC9saT4NCjxsaT4NCnByZXR0eSBmb3JtYXR0aW5nIG9mIHZjYXJkIGF0dGFj aG1lbnRzDQo8L2xpPg0KPC91bD4NCg0KPGgyPg0KQ29tcG9uZW50cw0KPC9oMj4NCg0KPHVsPg0K PGxpPg0KYSB2Y2FyZCBwYXJzZXIgKHZjYXJkLmgvLmNwcCkNCjwvbGk+DQo8bGk+DQphIHNlcGFy YXRlIGRpYWxvZyB0byBkaXNwbGF5IHZjYXJkcyAoa21kaXNwbGF5dmNhcmQuaC8uY3BwKQ0KPC9s aT4NCjxsaT4NCnZjYXJkIHNwZWNpZmljIGNvZGUgaW4gdGhlIG1lc3NhZ2UgcmVhZGVyIChrbXJl YWRlcndpbi5oLy5jcHApDQo8L2xpPg0KPC91bD4NCg0KDQo8aDI+DQpIb3cgaXQgd29ya3MNCjwv aDI+DQoNCjxoMz4NClBhcnNpbmcgdkNhcmRzDQo8L2gzPg0KDQpUaGUgbWFpbiBjbGFzcyBpcyBg VkNhcmS0LiBFdmVyeSBWQ2FyZCBvYmplY3QgcmVwcmVzZW50cyBvbmUgc2luZ2xlDQp2Y2FyZC4g IFZDYXJkcyBjYW4gYmUgY29uc3RydWN0ZWQgZGlyZWN0bHkgKHZpYSB0aGUgVkNhcmQoKSBjb25z dHJ1Y3RvcikNCmJ1dCBpbSBLTWFpbCBjb2RlIHRoZXkgYXJlIGFsd2F5cyBjb25zdHJ1Y3RlZCBi eSB0aGUgc3RhdGljDQpWQ2FyZDo6cGFyc2VWQ2FyZCBtZXRob2QuDQoNCjxibG9ja3F1b3RlPjxw cmU+DQogICAgICAjaW5jbHVkZSAidmNhcmQuaCINCiAgICAgIC4uLg0KICAgICAgVkNhcmQgKnZj ID0gVkNhcmQ6OnBhcnNlVkNhcmQoZmlsZW5hbWUpOw0KPC9wcmU+PC9ibG9ja3F1b3RlPg0KDQo8 aDM+DQpEaXNwbGF5aW5nIHZDYXJkcw0KPC9oMz4NCg0KVG8gZGlzcGxheSBhIHZjYXJkLCBvbmUg aGFzIHRvIGNvbnN0cnVjdCBhIEtNRGlzcGxheVZDYXJkLURpYWxvZywgcGFzc2luZw0KYSBjb25z dHJ1Y3RlZCBWQ2FyZCBvYmplY3QgYXMgYW4gYXJndW1lbnQuDQo8YmxvY2txdW90ZT48cHJlPg0K ICAgICAgdmNkbGcgPSBuZXcgS01EaXNwbGF5VkNhcmQodmMpOw0KICAgICAga2VybmVsLT5rYnAo KS0+aWRsZSgpOw0KICAgICAgdmNkbGctPnNob3coKTsNCjwvcHJlPjwvYmxvY2txdW90ZT48L2Js b2NrcXVvdGU+DQpCZWNhdXNlIHRoZSBkaWFsb2cgaXMgbm9uLW1vZGFsLCB0aGUgdmNhcmQgaXMg ZGVzdHJ1Y3RlZCBvbiBkZXN0cnVjdGlvbiBvZiB0aGUgZGlhbG9nLg0KDQo8aDM+DQpWQ2FyZHMg aW4gdGhlIE1lc3NhZ2UgUmVhZGVyDQo8L2gzPg0KDQpWQ2FyZHMgYXJlIG9yZGluYXJ5IGF0dGFj aG1lbnRzIHRvIGUtbWFpbHMgb2YgTUlNRSB0eXBlICJ0ZXh0L3gtdmNhcmQiLg0KVGhlcmVmb3Jl IC0gZnJvbSB0aGUgdXNlcidzIHBvaW50IG9mIHZpZXcgLSBpdCBpcyBlYXN5IHRvIFNFTkQgdmNh cmRzIHRvIG90aGVycw0KYnkgYXR0YWNoaW5nIGEgLnZjZiBmaWxlLg0KPHA+DQpUaGUgbWVzc2Fn ZSByZWFkZXIgZGVhbHMgd2l0aCB2Y2FyZCBhdHRhY2htZW50cyBpbiB0aGUgZm9sbG93aW5nIG1h bm5lcg0KDQo8b2w+DQogIDxsaT50aGUgS01haWwtUmVhZGVyIGNoZWNrcyB0aGUgTUlNRSB0eXBl IG9mIEFMTCBhdHRhY2htZW50cy4gSWYgb25lIG9mIHRoZW0gaGFzDQogICB0aGUgTUlNRSB0eXBl ICJ0ZXh0L3gtdmNhcmQiIGl0IGFkZHMgYW4gYW5jaG9yIHdpdGggdGhlIHRleHQgIlt2Y2FyZF0i IHRvIHRoZQ0KICAgc2VuZGVytHMgYWRkcmVzcywgY2YuDQogICA8YSBocmVmPSIjS01SZWFkZXJX aW4td3JpdGVNc2dIZWFkZXIiPktNUmVhZGVyV2luOjp3cml0ZU1zZ0hlYWRlcigpPC9hPi48cD4N CiAgICAgVGhlIFVSTCBvZiB0aGUgYW5jaG9yIGJlZ2lucyB3aXRoIGBwYXJ0OrQgYW5kIHJlZmVy cyB0byB0aGUgdmNhcmQgYXR0YWNobWVudDxwPg0KICAgICBJZiBmdXJ0aGVyIGNoZWNrcyAoYnkg cGFyc2luZyB0aGUgdmNhcmQgYXR0YWNobWVudCkgaWYgdGhlIGF0dGFjaG1lbnQgY29udGFpbnMN CiAgIGEgdmFsaWQgdmNhcmQNCiAgPC9saT4NCiAgPGxpPklmIHRoZSB1c2VyIGNsaWNrcyBvbnRv IHRoYXQgYHBhcnQ6JyBhbmNob3IsIHRoaXMgYW5jaG9yIGVtaXRzIGEgc2lnbmFsIHdoaWNoIGlz DQogICBjb25uZWN0ZWQgdG8gdGhlIHNsb3QgYDxhIGhyZWY9IiNLTVJlYWRlcldpbi1zbG90QXRt T3BlbiI+c2xvdEF0bU9wZW4oKTwvYT4nLg0KICAgVGhpcyBzbG90IGNoZWNrcyBpZiB0aGUgY3Vy cmVudCBtc2dwYXJ0DQogICBpcyBhIHZjYXJkIChjb21wYXJlcyBpdHMgTUlNRSB0eXBlIHRvICJ0 ZXh0L3gtdmNhcmQiIGFnYWluKSBhbmQsIGlmIHNvLCBvcGVucyBhDQogICBLTURpc3BsYXlWQ2Fy ZCBkaWFsb2cuPHA+DQogICAgIFRoZSBzYW1lIGhhcHBlbnMgaWYgdGhlIEljb24gd2hpY2ggaXMg cmVwcmVzZW50aW5nIHRoZSBWQ2FyZCBhdHRhY2htZW50IGlzDQogICBjbGlja2VkIG9uLg0KICA8 L2xpPg0KICA8bGk+U2ltaWxhciBjb2RlIGlzIGV4ZWN1dGVkIGlmIHRoZSB1c2VyIGRlY2lkZXMg dG8gYHZpZXcuLi4nIHRoZSB2Y2FyZA0KICAgICg8YSBocmVmPSIjS01SZWFkZXJXaW4tYXRtVmll dyI+YXRtVmlldygpPC9hPikNCiAgPC9saT4NCjwvb2w+DQoNCg0KDQo8aDI+DQpWQ2FyZCBQYXJz ZXINCjwvaDI+DQoNCktNYWlsIGhhcyBpdHMgb3duLCBuYXRpdmUgQysrIHBhcnNlciBmb3IgVkNh cmRzOyBpdCBkb2VzIG5vdCBtYWtlIHVzZSBvZg0KdGhlIHZlcnNpdCBWQ2FyZC9WQ2FsZW5kZXIg Y2xhc3Nlcywgd2hpY2ggYXJlIHVzZWQgZWxzZXdoZXJlIChieQ0KS09yZ2FuaXplciwgZm9yIGV4 YW1wbGUpLg0KDQo8aDM+DQpUaGUgPGNvZGU+VkNhcmQ8L2NvZGU+IENsYXNzDQo8L2gzPg0KDQpU aGUgbWFpbiB2Y2FyZCBjbGFzcyBpcyBgVkNhcmQnLiBFdmVyeSBWQ2FyZCBvYmplY3QgcmVwcmVz ZW50cyBhIHZpc2l0aW5nIGNhcmQNCndpdGggYSBsb3Qgb2YgYXR0cmlidXRlcyB0byBhIHBlcnNv bi48cD4NClRoZSB1c3VhbCB3YXkgdG8gY29uc3RydWN0IGEgVkNhcmQgb2JqZWN0IGlzIGJ5IHBh cnNpbmcgaXQgZnJvbSBhIGZpbGUgKG9yIGZyb20gYQ0KbWVzc2FnZSBwYXJ0KToNCjxibG9ja3F1 b3RlPjxwcmU+DQogICAgICAjaW5jbHVkZSAidmNhcmQuaCINCiAgICAgIC4uLg0KICAgICAgVkNh cmQgKnZjID0gVkNhcmQ6OnBhcnNlVkNhcmQoZmlsZW5hbWUpOw0KPC9wcmU+PC9ibG9ja3F1b3Rl Pg0KT24gc3VjY2VzcywgPHZhcj52YzwvdmFyPiBpcyBkaWZmZXJlbnQgZnJvbSA8Y29kZT5OVUxM PC9jb2RlPiBhbmQgcmVmZXJzIHRvIGENCnZhbGlkIDxjb2RlPlZDYXJkPC9jb2RlPiBvYmplY3Qu PHA+DQpJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gY29uc3RydWN0IGEgVkNhcmQgZnJvbSBzY3Jh dGNoICh1c2luZyB0aGUgcHJpbWl0aXZlcw0KVkNhcmQ6OmFkZExpbmUoKSBhbmQgVkNhcmQ6OmFk ZFF1YWxpZmllZExpbmUoKS4gSG93ZXZlciwgdmNhcmRzIGFyZSBub3QNCmNyZWF0ZWQgdGhpcyB3 YXkgaW4gS01haWwuPHA+DQoNCjxoMz4NClF1ZXJ5aW5nIERhdGEgZnJvbSBhIDxjb2RlPlZDYXJk PC9jb2RlPg0KPC9oMz4NCkdlbmVyYWxseSBzcG9rZW4sIFZDYXJkIGRhdGEgaXMgb3JnYW5pemVk IGJ5IGtleXdvcmRzIGFuZCwgb3B0aW9uYWxseSwgcXVhbGlmaWVycy4NCkZvciBleGFtcGxlLCBh IHRlbGVwaG9uZSBudW1iZXIgY2FuIGJlIGp1c3QgYHRoZScgdGVsZXBob25lIG51bWJlciBvZiB0 aGUgcGVyc29uLA0Kb3IgaXQgY2FuIGJlIGEgc3BlY2lhbCB0ZWxlcGhvbmUgbnVtYmVyLCBsZXQn cyBzYXksIHRoYXQgb2YgdGhlIGNlbGx1bGFyLjxwPg0KVGhlIG1ldGhvZHMgZ2V0VmFsdWUoLi4u KSBhbmQgZ2V0VmFsdWVzKC4uLikgY2FuIGJlIHVzZWQgdG8gcXVlcnkgZGF0YSBmcm9tIGENCjxj b2RlPlZDYXJkPC9jb2RlPiBvYmplY3QsIGVpdGhlciBieSBxdWVyeWluZyBieSBrZXl3b3JkLCBl LmcuDQo8YmxvY2txdW90ZT48cHJlPg0KICAgICAgUVN0cmluZyBzID0gdmMtPmdldFZhbHVlKFZD QVJEX1RFTCk7DQo8L3ByZT48L2Jsb2NrcXVvdGU+DQpvciBieSBrZXl3b3JkIDxlbT5hbmQ8L2Vt PiBxdWFsaWZpZXIsIGUuZy4NCjxibG9ja3F1b3RlPjxwcmU+DQogICAgICBRU3RyaW5nIHMgPSB2 Yy0+Z2V0VmFsdWUoVkNBUkRfVEVMLCBWQ0FSRF9URUxfQ0VMTCk7DQo8L3ByZT48L2Jsb2NrcXVv dGU+DQpUaGVyZSBhcmUgYWxzbyBlbnRyeXMgKGxpa2UgbmFtZSwgYWRkcmVzcyBvZiB0aGUgcGVy c29uKSB3aGljaCBkbyBub3QgY29uc2lzdA0Kb2Ygb25lIHNpbmdsZSB0ZXh0IHN0cmluZywgYnV0 IHJhdGhlciBjb25zaXN0IG9mIDxlbT5hIG51bWJlcjwvZW0+IG9mIHN0cmluZ3MuDQpUaGVzZSBl bnRyaWVzIGFyZSB0aGVuIHF1ZXJpZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgZ2V0VmFsdWVzKC4u LikgbWV0aG9kcy48cD4NCkFnYWluLCBxdWVyeWluZyBieSBrZXl3b3JkDQo8YmxvY2txdW90ZT48 cHJlPg0KICAgICAgUVN0cmluZ0xpc3QgbCA9IHZjLT5nZXRWYWx1ZXMoVkNBUkRfQURSKTsNCjwv cHJlPjwvYmxvY2txdW90ZT4NCm9yIHF1ZXJ5aW5nIGJ5IGtleXdvcmQgPGVtPmFuZDwvZW0+IHF1 YWxpZmllciwgZS5nLg0KPGJsb2NrcXVvdGU+PHByZT4NCiAgICAgIFFTdHJpbmdMaXN0IGwgPSB2 Yy0+Z2V0VmFsdWVzKFZDQVJEX0FEUiwgVkNBUkRfQURSX0hPTUUpOw0KPC9wcmU+PC9ibG9ja3F1 b3RlPg0KaXMgcG9zc2libGUuPHA+DQpVbmZvcnR1bmF0ZWx5LCBvbmUgaGFzIHRvIDxlbT5rbm93 PC9lbT4gd2hpY2ggZW50cnkgaGFzIHRvIGJlIHF1ZXJpZWQgYnkNCjxjb2RlPmdldFZhbHVlKCk8 L2NvZGU+IGFuZCB3aGljaCBvbmUgYnkgPGNvZGU+Z2V0VmFsdWU8c3Ryb25nPnM8L3N0cm9uZz4o KTwvY29kZT4uDQpIYXZlIGEgbG9vayBpbnRvIDxjb2RlPmttZGlzcGxheXZjYXJkLmNwcDwvY29k ZT4gZm9yIGNvbmNyZXRlIGV4YW1wbGVzLg0KDQoNCjxoMj4NCkNvZGUgZnJhZ21lbnRzDQo8L2gy Pg0KDQo8aDM+DQprbXJlYWRlcndpbi5jcHANCjwvaDM+DQoNCkNvbnRleHQgbWVudSBmb3IgYXR0 YWNobWVudHMNCjxibG9ja3F1b3RlPjxhIG5hbWU9IktNUmVhZGVyV2luLXNsb3RVcmxQb3B1cCI+ PHByZT4NCnZvaWQgPGI+S01SZWFkZXJXaW46OnNsb3RVcmxQb3B1cDwvYj4oY29uc3QgUVN0cmlu ZyAmYVVybCwgY29uc3QgUVBvaW50JiBhUG9zKQ0KLi4uDQogICAgbWVudS0+aW5zZXJ0SXRlbShp MThuKCJPcGVuLi4uIiksIHRoaXMsIFNMT1Qoc2xvdEF0bU9wZW4oKSkpOw0KICAgIG1lbnUtPmlu c2VydEl0ZW0oaTE4bigiT3BlbiB3aXRoLi4uIiksIHRoaXMsIFNMT1Qoc2xvdEF0bU9wZW5XaXRo KCkpKTsNCiAgICBtZW51LT5pbnNlcnRJdGVtKGkxOG4oIlZpZXcuLi4iKSwgdGhpcywgU0xPVChz bG90QXRtVmlldygpKSk7DQogICAgbWVudS0+aW5zZXJ0SXRlbShpMThuKCJTYXZlIGFzLi4uIiks IHRoaXMsIFNMT1Qoc2xvdEF0bVNhdmUoKSkpOw0KLi4uDQo8L3ByZT48L2E+PC9ibG9ja3F1b3Rl Pg0KDQpJcyB0aGVyZSBhbnkgdmNhcmQgYXR0YWNoZWQ/DQo8YmxvY2txdW90ZT48YSBuYW1lPSJL TVJlYWRlcldpbi1wYXJzZU1zZyI+PHByZT4NCnZvaWQgPGI+S01SZWFkZXJXaW46OnBhcnNlTXNn PC9iPihLTU1lc3NhZ2UqIGFNc2cpDQogIC4uLg0KICBmb3IgKGludCBqID0gMDsgaiAmbHQ7IGFN c2ctJmd0O251bUJvZHlQYXJ0cygpOyBqKyspIHsNCiAgICAuLi4NCiAgICBpZiAoIXFzdHJpY21w KG1zZ1BhcnQudHlwZVN0cigpLCAidGV4dCIpDQogICAgICAgJiYgIXFzdHJpY21wKG1zZ1BhcnQu c3VidHlwZVN0cigpLCAieC12Y2FyZCIpKSB7DQogICAgICAgIC4uLg0KICAgICAgICB2YyA9IFZD YXJkOjpwYXJzZVZDYXJkKG1zZ1BhcnQuYm9keSgpLCAmYW1wO3ZjZXJyKTsNCg0KICAgICAgICBp ZiAodmMpIHsNCiAgICAgICAgICAuLi4NCiAgICAgICAgICB2Y251bSA9IGo7DQogICAgICAgICAg YnJlYWs7DQogICAgICAgIH0NCiAgICB9DQogIH0NCg0KICB3cml0ZU1zZ0hlYWRlcih2Y251bSk7 DQogIC4uLg0KPC9wcmU+PC9hPjwvYmxvY2txdW90ZT4NCg0KQWRkICJbdkNhcmRdIiB0byB0aGUg ZnJvbS1hZGRyZXNzDQo8YmxvY2txdW90ZT48YSBuYW1lPSJLTVJlYWRlcldpbi13cml0ZU1zZ0hl YWRlciI+PHByZT4NCnZvaWQgPGI+S01SZWFkZXJXaW46OndyaXRlTXNnSGVhZGVyPC9iPihpbnQg dmNwYXJ0bnVtKQ0KICAgIC4uLg0KICAgIGlmICh2Y3BhcnRudW0gPj0gMCkgew0KICAgICAgbVZp ZXdlci0+d3JpdGUoIiZsdDthIGhyZWY9XCIiK3ZjbmFtZSsiXCImZ3Q7IitpMThuKCJbdkNhcmRd IikrIiZsdDsvYSZndDsiKTsNCiAgICB9DQogICAgLi4uDQo8L3ByZT48L2E+PC9ibG9ja3F1b3Rl Pg0KDQpPcGVuaW5nIGEgdkNhcmQuLi4NCjxibG9ja3F1b3RlPjxhIG5hbWU9IktNUmVhZGVyV2lu LXNsb3RBdG1PcGVuIj48cHJlPg0Kdm9pZCA8Yj5LTVJlYWRlcldpbjo6c2xvdEF0bU9wZW48L2I+ KCkNCnsNCiAgLi4uDQogIGlmIChxc3RyaWNtcChtc2dQYXJ0LnR5cGVTdHIoKSwgInRleHQiKSA9 PSAwKSB7DQogICAgaWYgKHFzdHJpY21wKG1zZ1BhcnQuc3VidHlwZVN0cigpLCAieC12Y2FyZCIp ID09IDApIHsNCiAgICAgIC4uLg0KICAgICAgVkNhcmQgKnZjID0gVkNhcmQ6OnBhcnNlVkNhcmQo bXNnUGFydC5ib2R5KCksICZhbXA7dmNlcnIpOw0KICAgICAgLi4uDQogICAgICB2Y2RsZyA9IG5l dyBLTURpc3BsYXlWQ2FyZCh2Yyk7DQogICAgICB2Y2RsZy0+c2hvdygpOw0KICAgICAgcmV0dXJu Ow0KICAgIH0NCiAgfQ0KPC9wcmU+PC9hPjwvYmxvY2txdW90ZT4NCg0KLi4ub3Igdmlld2luZyBp dCAocGFydCAxKQ0KPGJsb2NrcXVvdGU+PGEgbmFtZT0iS01SZWFkZXJXaW4tc2xvdEF0bVZpZXci PjxwcmU+DQp2b2lkIDxiPktNUmVhZGVyV2luOjpzbG90QXRtVmlldzwvYj4oKQ0Kew0KICBLTU1l c3NhZ2VQYXJ0IG1zZ1BhcnQ7DQogIG1Nc2ctPmJvZHlQYXJ0KG1BdG1DdXJyZW50LCAmYW1wO21z Z1BhcnQpOw0KICBRU3RyaW5nIHBuYW1lID0gbXNnUGFydC5maWxlTmFtZSgpOw0KICBpZiAocG5h bWUuaXNFbXB0eSgpKSBwbmFtZT1tc2dQYXJ0Lm5hbWUoKTsNCiAgaWYgKHBuYW1lLmlzRW1wdHko KSkgcG5hbWU9bXNnUGFydC5jb250ZW50RGVzY3JpcHRpb24oKTsNCiAgaWYgKHBuYW1lLmlzRW1w dHkoKSkgcG5hbWU9InVubmFtZWQiOw0KICAvLyBpbWFnZSBBdHRhY2htZW50IGlzIHNhdmVkIGFs cmVhZHkNCiAgYXRtVmlldyh0aGlzLCAmbXNnUGFydCwgaHRtbE1haWwoKSwgUVN0cmluZygiJTFw YXJ0JTIvJTMiKS5hcmcobUF0dGFjaERpcikuDQogICAgYXJnKG1BdG1DdXJyZW50KzEpLmFyZyhw bmFtZSksIHBuYW1lLCBtQ29kZWMpOw0KfQ0KPC9wcmU+PC9hPjwvYmxvY2txdW90ZT4NCg0KKHBh cnQgMikNCjxibG9ja3F1b3RlPjxhIG5hbWU9IktNUmVhZGVyV2luLWF0bVZpZXciPjxwcmU+DQp2 b2lkIDxiPktNUmVhZGVyV2luOjphdG1WaWV3PC9iPihLTVJlYWRlcldpbiogYVJlYWRlcldpbiwg S01NZXNzYWdlUGFydCogYU1zZ1BhcnQsDQogICAgYm9vbCBhSFRNTCwgY29uc3QgUVN0cmluZyYg YUZpbGVOYW1lLCBjb25zdCBRU3RyaW5nJiBwbmFtZSwgUVRleHRDb2RlYyAqY29kZWMpDQogICAg Li4uDQogICAgaWYgKHFzdHJpY21wKGFNc2dQYXJ0LT50eXBlU3RyKCksICJ0ZXh0Iik9PTApIHsN CiAgICAgIGlmIChxc3RyaWNtcChhTXNnUGFydC0+c3VidHlwZVN0cigpLCAieC12Y2FyZCIpID09 IDApIHsNCiAgICAgICAgLi4uDQogICAgICAgIFZDYXJkICp2YyA9IFZDYXJkOjpwYXJzZVZDYXJk KGFNc2dQYXJ0LT5ib2R5KCksICZhbXA7dmNlcnIpOw0KICAgICAgICAuLi4NCiAgICAgICAgdmNk bGcgPSBuZXcgS01EaXNwbGF5VkNhcmQodmMpOw0KICAgICAgICBrZXJuZWwtPmticCgpLT5pZGxl KCk7DQogICAgICAgIHZjZGxnLT5zaG93KCk7DQogICAgICAgIC4uLg0KPC9wcmU+PC9hPjwvYmxv Y2txdW90ZT4NCjwvYm9keT4NCjwvaHRtbD4= --------------Boundary-00=_4VWC7ONTHI5R2JU5E9YB-- _______________________________________________ Kmail Developers mailing list Kmail@master.kde.org http://master.kde.org/mailman/listinfo/kmail