From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 45483 invoked by alias); 27 Jun 2018 11:01:42 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 45358 invoked by uid 89); 27 Jun 2018 11:01:41 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=2.1 required=5.0 tests=BAYES_00,BODY_8BITS,GARBLED_BODY,RCVD_IN_DNSWL_NONE,TIME_LIMIT_EXCEEDED autolearn=unavailable version=3.3.2 spammy=L, HDKIM-Filter:OpenDKIM, HDKIM-Filter:Filter, HDKIM-Filter:v2.10.3 X-HELO: conssluserg-02.nifty.com Received: from conssluserg-02.nifty.com (HELO conssluserg-02.nifty.com) (210.131.2.81) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 27 Jun 2018 11:01:30 +0000 Received: from Express5800-S70 (ntsitm315127.sitm.nt.ngn.ppp.infoweb.ne.jp [125.3.30.127]) (authenticated) by conssluserg-02.nifty.com with ESMTP id w5RB1FGs013666 for ; Wed, 27 Jun 2018 20:01:15 +0900 DKIM-Filter: OpenDKIM Filter v2.10.3 conssluserg-02.nifty.com w5RB1FGs013666 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nifty.ne.jp; s=dec2015msa; t=1530097275; bh=jV0OG2clBmIjt1IMa9CY93NPZn1QFXHYXvFcV09/6nI=; h=Date:From:To:Subject:From; b=VPvc2c4zOkqZgvi7jFFh0k7MIX6lXBoIyxpEBEJHlZaCzht92lDrBeScNicyMzBp2 Y6oLBzN+CF9gPFa9mZ0rnyMDxNAO3+d74Q5TmUOEBmHx8AKjo1tjOhY+98D3YvKwM+ EQS18D7u4DkWuQiarS78a47wA+fwkMSNcJE9uwHGRCGCMmrBNzHj6LO5w0ilIV0nV7 9gHcS1+4PvltQMgn6LiHreXGzL8e/7CoqMhcXi8I687ometsUaj+ynYmiHMEJ+lv7m Lont1RlgfCkk8ZYDAeg+BYtzJ8teBmSwFLl8IAqsz9zuywqd6crLaXIDiF27EQqu2f 0u6uNvcBjO9dA== Date: Wed, 27 Jun 2018 16:45:00 -0000 From: Takashi Yano To: cygwin@cygwin.com Subject: perror() changes the orientation of stderr to byte-oriented mode if stderr is not oriented yet. Message-Id: <20180627200116.ddd80f78597f8fd3f09d5d4b@nifty.ne.jp> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Wed__27_Jun_2018_20_01_16_+0900_vk0gE2/gPfTfn3vO" X-IsSubscribed: yes X-SW-Source: 2018-06/txt/msg00300.txt.bz2 --Multipart=_Wed__27_Jun_2018_20_01_16_+0900_vk0gE2/gPfTfn3vO Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Content-length: 709 POSIX states: The perror() function shall not change the orientation of the standard error stream. However, cygwin perror() function changes the orientation of stderr to byte-oriented mode if stderr is not oriented yet. Simple test case (chkperror.c) attached checks this behavior. Expected result: 0 äöü: Invalid argument 0 äöü 1 äöü: Invalid argument However, cygwin result: 0 äöü: Invalid argument -1 ▒▒▒ -1 äöü: Invalid argument I have made a patch to solve this problem, attached. However, I am not sure that calling _write_r() here is correct manner. I will appreciate if anyone familiar with libc code comment or make suggestions. -- Takashi Yano --Multipart=_Wed__27_Jun_2018_20_01_16_+0900_vk0gE2/gPfTfn3vO Content-Type: application/octet-stream; name="0001-Fix-a-bug-of-perror-which-changes-the-orientation-of.patch" Content-Disposition: attachment; filename="0001-Fix-a-bug-of-perror-which-changes-the-orientation-of.patch" Content-Transfer-Encoding: base64 Content-length: 2294 RnJvbSBjZjU2Y2YwZWVmOGQ0OGNhNTQzYWFjOTZkNTdmZGZlYmUzZTg3Njdh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUYWthc2hpIFlhbm8g PHRha2FzaGkueWFub0BuaWZ0eS5uZS5qcD4KRGF0ZTogV2VkLCAyNyBKdW4g MjAxOCAxOToyNjoxNSArMDkwMApTdWJqZWN0OiBbUEFUQ0hdIEZpeCBhIGJ1 ZyBvZiBwZXJyb3IoKSB3aGljaCBjaGFuZ2VzIHRoZSBvcmllbnRhdGlvbiBv Zgogc3RkZXJyLgoKKiBwZXJyb3IuYzogRml4IHRoZSBwcm9ibGVtIHRoYXQg cGVycm9yKCkgY2hhbmdlcyB0aGUgb3JpZW50YXRpb24KICBvZiBzdGRlcnIg dG8gYnl0ZS1vcmllbnRlZCBtb2RlIGlmIHN0ZGVyciBpcyBub3Qgb3JpZW50 ZWQgeWV0LgotLS0KIG5ld2xpYi9saWJjL3N0ZGlvL3BlcnJvci5jIHwgMjUg KysrKysrKysrKysrKysrKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDIx IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv bmV3bGliL2xpYmMvc3RkaW8vcGVycm9yLmMgYi9uZXdsaWIvbGliYy9zdGRp by9wZXJyb3IuYwppbmRleCBkOThlMTdlMTkuLjMzMjg0MjVkYSAxMDA2NDQK LS0tIGEvbmV3bGliL2xpYmMvc3RkaW8vcGVycm9yLmMKKysrIGIvbmV3bGli L2xpYmMvc3RkaW8vcGVycm9yLmMKQEAgLTU4LDYgKzU4LDIzIEBAIFN1cHBv cnRpbmcgT1Mgc3Vicm91dGluZXMgcmVxdWlyZWQ6IDw8Y2xvc2U+PiwgPDxm c3RhdD4+LCA8PGlzYXR0eT4+LAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2lu Y2x1ZGUgImxvY2FsLmgiCiAKK3N0YXRpYyBpbnQKK3dyaXRlX2VyciAoc3Ry dWN0IF9yZWVudCAqcHRyLCBjb25zdCBjaGFyICpzKQoreworICBzaXplX3Qg bGVuID0gc3RybGVuIChzKTsKKyAgc2l6ZV90IGxlbl9vdXQgPSAwOworICBp bnQgZmRfZXJyID0gZmlsZW5vIChfc3RkZXJyX3IgKHB0cikpOworICB3aGls ZSAobGVuX291dCAhPSBsZW4pCisgICAgeworICAgICAgX3NzaXplX3QgbGVu MSA9IF93cml0ZV9yIChwdHIsIGZkX2VyciwgcytsZW5fb3V0LCBsZW4tbGVu X291dCk7CisgICAgICBpZiAobGVuMSA+IDApCisJbGVuX291dCArPSBsZW4x OworICAgICAgZWxzZQorCXJldHVybiAtMTsKKyAgICB9CisgIHJldHVybiAw OworfQorCiB2b2lkCiBfcGVycm9yX3IgKHN0cnVjdCBfcmVlbnQgKnB0ciwK ICAgICAgICBjb25zdCBjaGFyICpzKQpAQCAtNjgsMTQgKzg1LDE0IEBAIF9w ZXJyb3JfciAoc3RydWN0IF9yZWVudCAqcHRyLAogICBfUkVFTlRfU01BTExf Q0hFQ0tfSU5JVCAocHRyKTsKICAgaWYgKHMgIT0gTlVMTCAmJiAqcyAhPSAn XDAnKQogICAgIHsKLSAgICAgIGZwdXRzIChzLCBfc3RkZXJyX3IgKHB0cikp OwotICAgICAgZnB1dHMgKCI6ICIsIF9zdGRlcnJfciAocHRyKSk7CisgICAg ICB3cml0ZV9lcnIgKHB0ciwgcyk7CisgICAgICB3cml0ZV9lcnIgKHB0ciwg IjogIik7CiAgICAgfQogCiAgIGlmICgoZXJyb3IgPSBfc3RyZXJyb3JfciAo cHRyLCBwdHItPl9lcnJubywgMSwgJmR1bW15KSkgIT0gTlVMTCkKLSAgICBm cHV0cyAoZXJyb3IsIF9zdGRlcnJfciAocHRyKSk7CisgICAgd3JpdGVfZXJy IChwdHIsIGVycm9yKTsKIAotICBmcHV0YyAoJ1xuJywgX3N0ZGVycl9yIChw dHIpKTsKKyAgd3JpdGVfZXJyIChwdHIsICJcbiIpOwogfQogCiAjaWZuZGVm IF9SRUVOVF9PTkxZCi0tIAoyLjE3LjAKCg== --Multipart=_Wed__27_Jun_2018_20_01_16_+0900_vk0gE2/gPfTfn3vO Content-Type: text/x-csrc; name="chkperror.c" Content-Disposition: attachment; filename="chkperror.c" Content-Transfer-Encoding: quoted-printable Content-length: 372 #include #include #include #include int main() { setlocale(LC_CTYPE, "de_DE.UTF-8"); errno =3D EINVAL; printf("%d\n", fwide(stderr, 0)); perror("=C3=A4=C3=B6=C3=BC"); printf("%d\n", fwide(stderr, 0)); fwprintf(stderr, L"=C3=A4=C3=B6=C3=BC\n"); printf("%d\n", fwide(stderr, 0)); perror("=C3=A4=C3=B6=C3=BC"); return 0; } --Multipart=_Wed__27_Jun_2018_20_01_16_+0900_vk0gE2/gPfTfn3vO Content-Type: text/plain; charset=us-ascii Content-length: 219 -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple --Multipart=_Wed__27_Jun_2018_20_01_16_+0900_vk0gE2/gPfTfn3vO--