From mboxrd@z Thu Jan 1 00:00:00 1970 Date: Tue, 17 May 2005 15:53:14 +0300 From: Sergey Reva Message-ID: <10520507828.20050517155314@mail.ru> To: Fans of the OS Plan 9 from Bell Labs <9fans@cse.psu.edu> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------86CB13F8B84A0A" Subject: [9fans] thread, utf Topicbox-Message-UUID: 4cd848e6-ead0-11e9-9d60-3106f5b1d025 ------------86CB13F8B84A0A Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hello Fans, Does I am on a right way of using thread library? How can I convert Rune string to Utf-8 sequence? I can't find standard function... Sergey -- http://rs-rlab.narod.ru mailto:rs_rlab@mail.ru ------------86CB13F8B84A0A Content-Type: APPLICATION/OCTET-STREAM; name="thrd.c" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="thrd.c" I2luY2x1ZGUgPHUuaD4NCiNpbmNsdWRlIDxsaWJjLmg+DQojaW5jbHVkZSA8ZHJhdy5oPg0K I2luY2x1ZGUgPHRocmVhZC5oPg0KI2luY2x1ZGUgPG1vdXNlLmg+DQojaW5jbHVkZSA8a2V5 Ym9hcmQuaD4NCg0KZW51bSB7DQoJRW50cnk9MCwNCglCdXR0b24sDQoJUmFkaW8sDQoNCglN YXhFbnRyeVRleHQ9NTAsDQoJTWF4QnV0VGV4dD01MCwNCg0KCUJ1dHRvbkV4aXQ9MCwNCglF bnRyeUJveDEsDQoJUmFkaW9QbHVzLA0KCVJhZGlvTWludXMsDQoJUmFkaW9NdWwsDQoJUmFk aW9EaXYsDQoJRW50cnlCb3gyLA0KCUJ1dHRvbkV2YWwsDQoJRW50cnlSZXN1bHQsDQoJV2lk Z0VuZCwNCg0KCU9wQWRkPTAsDQoJT3BTdWIsDQoJT3BNdWwsDQoJT3BEaXYsDQoNCglBQnV0 dG9ucz0wLA0KCUFSZXNpemUsDQoJQUVuZA0KfTsNCg0KdHlwZWRlZiBzdHJ1Y3QgQlVUIEJV VDsNCnN0cnVjdCBCVVQgew0KCWludCBpZDsNCglpbnQgZ3JwOw0KCWludCB0eXBlOw0KCVJ1 bmUqIHR4dDsNCglpbnQgYXV4Ow0KCWludCB4Ow0KCWludCB5Ow0KCWludCBjeDsNCglpbnQg Y3k7DQoJdm9pZCAoKnBjbGljaykoQlVUICpiLCBpbnQgYnV0KTsNCgl2b2lkICgqcGRyYXcp KEJVVCAqYik7DQoJdm9pZCAoKnBrYmQpKEJVVCAqYiwgUnVuZSByKTsNCn07DQoNCkJVVCB3 aWRnW107DQpCVVQgKmZvY3VzPW5pbDsNCg0KQ2hhbm5lbCAqYmMsICpyZWRyYXc7DQoNClJ1 bmUgRW50cnkxW01heEVudHJ5VGV4dF09e0wiMSJ9Ow0KUnVuZSBFbnRyeTJbTWF4RW50cnlU ZXh0XT17TCIyIn07DQpSdW5lIEVudHJ5M1tNYXhFbnRyeVRleHRdPXtMIiJ9Ow0KDQovLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vQ29udHJvbHMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Lw0Kdm9pZCBrYmRkdXAoQlVUICpiLCBSdW5lIHIpDQp7DQp9DQoNCnZvaWQgY2xpY2tkdXAo QlVUICpiLCBpbnQgYnV0KQ0Kew0KfQ0KDQp2b2lkIGRyYXdyYWRpbyhCVVQgKmIpDQp7DQoJ UmVjdGFuZ2xlIHI7DQoNCglyLm1pbi54PWItPngrc2NyZWVuLT5yLm1pbi54Ow0KCXIubWlu Lnk9Yi0+eStzY3JlZW4tPnIubWluLnk7DQoJci5tYXgueD1yLm1pbi54K2ItPmN5Ow0KCXIu bWF4Lnk9ci5taW4ueStiLT5jeTsNCglkcmF3KHNjcmVlbixyLGRpc3BsYXktPndoaXRlLGRp c3BsYXktPm9wYXF1ZSxaUCk7DQoNCglpZiAoYi0+YXV4KQ0KCQlkcmF3KHNjcmVlbixyLGRp c3BsYXktPmJsYWNrLGRpc3BsYXktPm9wYXF1ZSxaUCk7DQoJZWxzZQ0KCQlib3JkZXIoc2Ny ZWVuLHIsMSxkaXNwbGF5LT5ibGFjayxaUCk7DQoNCglyLm1heC55PXIubWluLnk7DQoJci5t YXgueCs9MjsNCglydW5lc3RyaW5nbihzY3JlZW4sIHIubWF4LCBkaXNwbGF5LT5ibGFjaywg WlAsIGZvbnQsIGItPnR4dCwgTWF4RW50cnlUZXh0KTsNCn0NCg0Kdm9pZCBjbGlja3JhZGlv KEJVVCAqYiwgaW50IGJ1dCkNCnsNCglpbnQgaTsNCg0KCWlmICghKGJ1dCAmIDEpKQ0KCQly ZXR1cm47DQoNCglpZiAoYi0+YXV4KQ0KCQlyZXR1cm47DQoNCglmb3IgKGk9MDtpPFdpZGdF bmQ7aSsrKQ0KCQlpZiAoKHdpZGdbaV0uZ3JwPT1iLT5ncnApICYmICh3aWRnW2ldLnR5cGU9 UmFkaW8pKQ0KCQkJd2lkZ1tpXS5hdXg9MDsNCgliLT5hdXg9MTsNCglzZW5kdWwocmVkcmF3 LFdpZGdFbmQpOw0KfQ0KDQp2b2lkIGRyYXdlbnRyeShCVVQgKmIpDQp7DQoJUmVjdGFuZ2xl IHI7DQoNCglyLm1pbi54PWItPngrc2NyZWVuLT5yLm1pbi54Ow0KCXIubWluLnk9Yi0+eStz Y3JlZW4tPnIubWluLnk7DQoJci5tYXgueD1yLm1pbi54K2ItPmN4Ow0KCXIubWF4Lnk9ci5t aW4ueStiLT5jeTsNCglkcmF3KHNjcmVlbixyLGRpc3BsYXktPndoaXRlLGRpc3BsYXktPm9w YXF1ZSxaUCk7DQoJYm9yZGVyKHNjcmVlbixyLDEsZGlzcGxheS0+YmxhY2ssWlApOw0KDQoJ ci5taW4ueCs9MjsNCglydW5lc3RyaW5nbihzY3JlZW4sIHIubWluLCBkaXNwbGF5LT5ibGFj aywgWlAsIGZvbnQsIGItPnR4dCwgTWF4RW50cnlUZXh0KTsNCn0NCg0Kdm9pZCBrYmRlbnRy eShCVVQgKmIsIFJ1bmUgcikNCnsNCglzd2l0Y2gocikNCgl7DQoJY2FzZSA4Og0KCQliLT5h dXgtLTsNCgkJaWYgKGItPmF1eDwwKQ0KCQkJYi0+YXV4PTA7DQoJCWItPnR4dFtiLT5hdXhd PTA7DQoJCWJyZWFrOw0KCWRlZmF1bHQ6DQoJCWlmIChyPjMxKQ0KCQl7DQoJCQliLT50eHRb Yi0+YXV4XT1yOw0KCQkJYi0+YXV4Kys7DQoJCQliLT50eHRbYi0+YXV4XT0wOw0KCQl9DQoJ CWJyZWFrOw0KCX0NCg0KCXNlbmR1bChyZWRyYXcsYi0+aWQpOw0KfQ0KDQp2b2lkIGRyYXdi dXR0b24oQlVUICpiKQ0Kew0KCVJlY3RhbmdsZSByOw0KDQoJci5taW4ueD1iLT54K3NjcmVl bi0+ci5taW4ueDsNCglyLm1pbi55PWItPnkrc2NyZWVuLT5yLm1pbi55Ow0KCXIubWF4Lng9 ci5taW4ueCtiLT5jeDsNCglyLm1heC55PXIubWluLnkrYi0+Y3k7DQoJZHJhdyhzY3JlZW4s cixkaXNwbGF5LT53aGl0ZSxkaXNwbGF5LT5vcGFxdWUsWlApOw0KCWJvcmRlcihzY3JlZW4s ciwxLGRpc3BsYXktPmJsYWNrLFpQKTsNCg0KCXIubWluLngrPTI7DQoJcnVuZXN0cmluZ24o c2NyZWVuLCByLm1pbiwgZGlzcGxheS0+YmxhY2ssIFpQLCBmb250LCBiLT50eHQsIE1heEJ1 dFRleHQpOw0KfQ0KDQp2b2lkIGNsaWNrYnV0dG9uKEJVVCAqYiwgaW50IGJ1dCkNCnsNCglp ZiAoYnV0ICYgMSkNCgkJc2VuZHVsKGJjLCBiLT5pZCk7DQp9DQoNCi8vLy8vLy8vLy8vLy8v Ly8vTWFpbiBwcm9ncmFtLy8vLy8vLy8vLy8vLy8NCg0Kdm9pZCBncmFwaHRocmVhZCh2b2lk KikNCnsNCgl1bG9uZyBpZDsNCg0KCWZvcig7OykNCgl7DQoJCWlkPXJlY3Z1bChyZWRyYXcp Ow0KCQkNCgkJaWYgKGlkPFdpZGdFbmQpDQoJCQl3aWRnW2lkXS5wZHJhdygmd2lkZ1tpZF0p Ow0KCQllbHNlDQoJCQlmb3IgKGlkPTA7aWQ8V2lkZ0VuZDtpZCsrKQ0KCQkJew0KCQkJCXdp ZGdbaWRdLnBkcmF3KCZ3aWRnW2lkXSk7DQoJCQl9DQoNCgkJZmx1c2hpbWFnZShkaXNwbGF5 LDEpOw0KCX0NCn0NCg0Kdm9pZCBrZXlib2FyZHRocmVhZCh2b2lkKiB2KQ0Kew0KCVJ1bmUg a2JkYzsNCglDaGFubmVsICpjPShDaGFubmVsKil2Ow0KDQoJZm9yKDs7KQ0KCXsNCgkJcmVj dihjLCZrYmRjKTsNCg0KCQlpZiAoKGtiZGMhPVJ1bmVlcnJvcikgJiYgKGZvY3VzIT1uaWwp KQ0KCQkJZm9jdXMtPnBrYmQoZm9jdXMsa2JkYyk7DQoJfQ0KfQ0KDQp2b2lkIG1vdXNldGhy ZWFkKHZvaWQgKnYpDQp7DQoJaW50IGk7DQoJUmVjdGFuZ2xlIHI7DQoJTW91c2UgbTsNCglD aGFubmVsICpjPShDaGFubmVsKil2Ow0KDQoJZm9yKDs7KQ0KCXsNCgkJcmVjdihjLCZtKTsN Cg0KCQlpZiAobS5idXR0b25zKQ0KCQlmb3IgKGk9MDtpPFdpZGdFbmQ7aSsrKQ0KCQl7DQoJ CQlyLm1pbi54PXNjcmVlbi0+ci5taW4ueCt3aWRnW2ldLng7DQoJCQlyLm1pbi55PXNjcmVl bi0+ci5taW4ueSt3aWRnW2ldLnk7DQoJCQlyLm1heC54PXIubWluLngrd2lkZ1tpXS5jeDsN CgkJCXIubWF4Lnk9ci5taW4ueSt3aWRnW2ldLmN5Ow0KDQoJCQlpZiAocHRpbnJlY3QobS54 eSxyKSkNCgkJCXsNCgkJCQlmb2N1cz0md2lkZ1tpXTsNCgkJCQlmb2N1cy0+cGNsaWNrKGZv Y3VzLCBtLmJ1dHRvbnMpOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQl9DQoJfQ0KfQ0KDQp2b2lk IHJ1bmV0b2NoYXJjcHkoY2hhciAqYywgUnVuZSAqcikNCnsNCglpbnQgbj0wLGk7DQoNCglm b3IgKGk9MDtyW2ldIT0wO2krKykNCgkJbis9cnVuZXRvY2hhcigmY1tuXSwmcltpXSk7DQoJ Y1tuXT0wOw0KfQ0KDQp2b2lkIEV2YWx1YXRlKFJ1bmUqIHJlc3VsdCwgUnVuZSogb3AxLCBS dW5lKiBvcDIsIGludCBvcCkNCnsNCgljaGFyIHVvcDFbTWF4RW50cnlUZXh0KjJdOw0KCWNo YXIgdW9wMltNYXhFbnRyeVRleHQqMl07DQoJZG91YmxlIHJlczsNCg0KCXJ1bmV0b2NoYXJj cHkodW9wMSxvcDEpOw0KCXJ1bmV0b2NoYXJjcHkodW9wMixvcDIpOw0KDQoJc3dpdGNoKG9w KQ0KCXsNCgljYXNlIE9wQWRkOg0KCQlyZXM9YXRvZih1b3AxKSthdG9mKHVvcDIpOw0KCQli cmVhazsNCgljYXNlIE9wU3ViOg0KCQlyZXM9YXRvZih1b3AxKS1hdG9mKHVvcDIpOw0KCQli cmVhazsNCgljYXNlIE9wTXVsOg0KCQlyZXM9YXRvZih1b3AxKSphdG9mKHVvcDIpOw0KCQli cmVhazsNCgljYXNlIE9wRGl2Og0KCQlyZXM9YXRvZih1b3AxKS9hdG9mKHVvcDIpOw0KCQli cmVhazsNCgl9DQoNCglydW5lc3ByaW50KHJlc3VsdCwiJWYiLHJlcyk7DQp9DQoNCnZvaWQg dGhyZWFkbWFpbihpbnQsIGNoYXIqKikNCnsNCglNb3VzZWN0bCAqbWM7DQoJS2V5Ym9hcmRj dGwgKmtjOw0KCXVsb25nIGJ1dCxpOw0KDQoJQWx0IGFsdHNbQUVuZCsxXT17DQoJCVtBQnV0 dG9uc10ge25pbCwmYnV0LENIQU5SQ1Z9LA0KCQlbQVJlc2l6ZV0ge25pbCxuaWwsQ0hBTlJD Vn0sDQoJCVtBRW5kXSB7bmlsLG5pbCxDSEFORU5EfQ0KCX07DQoNCglpbml0ZHJhdygwLDAs IkFsdCBleGFtcGxlIik7DQoNCg0KCW1jPWluaXRtb3VzZShuaWwsc2NyZWVuKTsNCglrYz1p bml0a2V5Ym9hcmQobmlsKTsNCg0KCWJjPWNoYW5jcmVhdGUoc2l6ZW9mKHVsb25nKSwwKTsN CglyZWRyYXc9Y2hhbmNyZWF0ZShzaXplb2YodWxvbmcpLDApOw0KDQoJYWx0c1tBQnV0dG9u c10uYz1iYzsNCglhbHRzW0FSZXNpemVdLmM9bWMtPnJlc2l6ZWM7DQoNCgl0aHJlYWRjcmVh dGUoZ3JhcGh0aHJlYWQsIG5pbCwgODE5Mik7DQoJdGhyZWFkY3JlYXRlKG1vdXNldGhyZWFk LCAodm9pZCopbWMtPmMsIDgxOTIpOw0KCXRocmVhZGNyZWF0ZShrZXlib2FyZHRocmVhZCwg KHZvaWQqKWtjLT5jLCA4MTkyKTsNCg0KCXNlbmQobWMtPnJlc2l6ZWMsbmlsKTsNCg0KCWZv ciAoOzspDQoJc3dpdGNoKGFsdChhbHRzKSkNCgl7DQoJY2FzZSBBQnV0dG9uczoNCgkJc3dp dGNoKGJ1dCkNCgkJew0KCQljYXNlIEJ1dHRvbkV2YWw6DQoJCQlFdmFsdWF0ZSh3aWRnW0Vu dHJ5UmVzdWx0XS50eHQsd2lkZ1tFbnRyeUJveDFdLnR4dCx3aWRnW0VudHJ5Qm94Ml0udHh0 LA0KCQkJCSgod2lkZ1tSYWRpb1BsdXNdLmF1eCkgfHwgKHdpZGdbUmFkaW9NaW51c10uYXV4 KSkgPyANCgkJCQkJKCh3aWRnW1JhZGlvUGx1c10uYXV4KSA/IE9wQWRkIDogT3BTdWIpDQoJ CQkJOg0KCQkJCQkoKHdpZGdbUmFkaW9NdWxdLmF1eCkgPyBPcE11bCA6IE9wRGl2KSk7DQoN CgkJCXNlbmR1bChyZWRyYXcsRW50cnlSZXN1bHQpOw0KCQkJYnJlYWs7DQoJCWNhc2UgQnV0 dG9uRXhpdDoNCgkJCWNoYW5mcmVlKGJjKTsNCgkJCWNoYW5mcmVlKHJlZHJhdyk7DQoJCQl0 aHJlYWRleGl0c2FsbCgwKTsNCgkJCWJyZWFrOw0KCQl9DQoJCWJyZWFrOw0KCWNhc2UgQVJl c2l6ZToNCgkJaWYoZ2V0d2luZG93KGRpc3BsYXksIFJlZm5vbmUpIDwgMCkNCgkJCXN5c2Zh dGFsKCJyZXNpemUgZmFpbGVkOiAlciIpOw0KCQkNCgkJZm9yKGk9MDtpPFdpZGdFbmQ7aSsr KQ0KCQlpZiAoaSE9QnV0dG9uRXhpdCkNCgkJew0KCQkJaWYgKHdpZGdbaV0uZ3JwIT0xKQ0K CQkJCXdpZGdbaV0uY3g9c2NyZWVuLT5yLm1heC54LXNjcmVlbi0+ci5taW4ueC00Ow0KCQl9 DQoJCWVsc2UNCgkJCXdpZGdbaV0ueD1zY3JlZW4tPnIubWF4Lngtc2NyZWVuLT5yLm1pbi54 LTQtd2lkZ1tpXS5jeDsNCg0KCQlzZW5kdWwocmVkcmF3LFdpZGdFbmQpOw0KCQlicmVhazsN Cgl9DQp9DQoNCkJVVCB3aWRnW109ew0KW0J1dHRvbkV4aXRdCXtCdXR0b25FeGl0LAkwLEJ1 dHRvbiwJCUwiWCIsCQkwLAkyLDAsMTYsMTYsCQljbGlja2J1dHRvbiwgZHJhd2J1dHRvbiwg a2JkZHVwfSwNCltFbnRyeUJveDFdCXtFbnRyeUJveDEsCTAsRW50cnksCQlFbnRyeTEsCTEs CTIsMTgsNTAsMTYsCWNsaWNrZHVwLCBkcmF3ZW50cnksIGtiZGVudHJ5fSwNCltSYWRpb1Bs dXNdCXtSYWRpb1BsdXMsCTEsUmFkaW8sCQlMIisiLAkJMSwJMiwzNiw0MCwxNiwJY2xpY2ty YWRpbywgZHJhd3JhZGlvLCBrYmRkdXB9LA0KW1JhZGlvTWludXNdCXtSYWRpb01pbnVzLAkx LFJhZGlvLAkJTCItIiwJCTAsCTIsNTQsNDAsMTYsCWNsaWNrcmFkaW8sIGRyYXdyYWRpbywg a2JkZHVwfSwNCltSYWRpb011bF0Je1JhZGlvTXVsLAkxLFJhZGlvLAkJTCIqIiwJCTAsCTQy LDM2LDQwLDE2LAljbGlja3JhZGlvLCBkcmF3cmFkaW8sIGtiZGR1cH0sDQpbUmFkaW9EaXZd CXtSYWRpb0RpdiwJCTEsUmFkaW8sCQlMIi8iLAkJMCwJNDIsNTQsNDAsMTYsCWNsaWNrcmFk aW8sIGRyYXdyYWRpbywga2JkZHVwfSwNCltFbnRyeUJveDJdCXtFbnRyeUJveDIsCTAsRW50 cnksCQlFbnRyeTIsCTEsCTIsNzIsNTAsMTYsCWNsaWNrZHVwLCBkcmF3ZW50cnksIGtiZGVu dHJ5fSwNCltCdXR0b25FdmFsXQl7QnV0dG9uRXZhbCwJMCxCdXR0b24sCQlMIj0iLAkJMCwJ Miw5MCw1MCwxNiwJY2xpY2tidXR0b24sIGRyYXdidXR0b24sIGtiZGR1cH0sDQpbRW50cnlS ZXN1bHRdCXtFbnRyeVJlc3VsdCwJMCxFbnRyeSwJCUVudHJ5MywJMCwJMiwxMDgsNTAsMTYs CWNsaWNrZHVwLCBkcmF3ZW50cnksIGtiZGVudHJ5fSwNCn07DQo= ------------86CB13F8B84A0A--