From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on20718.outbound.protection.outlook.com [IPv6:2a01:111:f400:7eab::718]) by sourceware.org (Postfix) with ESMTPS id DED553858C50 for ; Fri, 24 Mar 2023 13:57:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DED553858C50 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=cornell.edu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cornell.edu ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OqHMubI+OxZRDKGRDF9v1DFcEplxGnzOYWGO7iWMkt2OmLVNxwnWp+nEZvbUkM47DCP6MbVF4E0RzCZ95NVlwKn8TGf/S0ZPS24ntompgJD+TktSvODuiqIOqJAVyFUmr1TizkK/zMp+15Z/Hu3YFLkOOxnL+ZjhFHdGEBAKVv5LHQHI15/qG+33B0jiOUquF/Em35DGTZENs7vdXTIwUsWD8NBqsadj5Jhs98/r1mDaXFVGS29q3sqkdCm6/AgjZ9rrUnX6+Q8hQU9T7TKax1/xc8AbZYAWpOFPq9ZIh3Ur3waGrd3W5C1+ifmSez259viUjmd+CWf+vNVXWEgdxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=61lx63LzRHpDESmGBE7rGlpwPpEMgVAdJI8bxTgaNlI=; b=ZCln6RrNs0L1jOswWRLe8XoXkJXQR3PNdOa/nRzbsE2/qRhFx05Lyy7EYVDomlNvVYKj4Ym/xRvGFdherKwNM0t7qXUcyc6EaPuIDGAl1hVqxArZTsFbpVkGlEdkPRO0OZ7GEyqqfFcDeXJqgsiErU5UcsffaU6IFjXYecDoSpcacE7oaGK5UzeyzVlaA31bXxs1l5AjU8Fe4YlBOpYuBPy+NR1RPrgE1aEvT1DhH8v426jhMm5rFXfW9B+qPcY358lcZt6mnZVDO4MyIcc0n3GphdGIq4KvYQSwjIZI7noUgJdf+5NEAc7cEKm25C47BL86b1FuUEo1Va/VxsfN6Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cornell.edu; dmarc=pass action=none header.from=cornell.edu; dkim=pass header.d=cornell.edu; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cornell.edu; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=61lx63LzRHpDESmGBE7rGlpwPpEMgVAdJI8bxTgaNlI=; b=TE/IjiU7biIP7IqxLiAPpQgZ7i3oIHONA5UMo4BQwJMnR7+OJmIrOaTD9ZinknzZuvGY/wpkm74sgOr/Ivqh6xYAqJX75lGGd6x7VwubXksXb10u3/iKeMX3ZfC3x8W37FxuYDg5qN3gvCOdkqJIlgMMUbjdfm3HrYP5nCnlwkk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cornell.edu; Received: from SA0PR04MB7322.namprd04.prod.outlook.com (2603:10b6:806:e2::7) by SJ2PR04MB8584.namprd04.prod.outlook.com (2603:10b6:a03:4f2::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.38; Fri, 24 Mar 2023 13:57:35 +0000 Received: from SA0PR04MB7322.namprd04.prod.outlook.com ([fe80::f921:640:6d67:d3fa]) by SA0PR04MB7322.namprd04.prod.outlook.com ([fe80::f921:640:6d67:d3fa%5]) with mapi id 15.20.6178.038; Fri, 24 Mar 2023 13:57:35 +0000 Message-ID: <5b6899da-555a-6574-6e8b-43c2288f636e@cornell.edu> Date: Fri, 24 Mar 2023 09:57:31 -0400 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.9.0 Subject: Re: newlocale: Linux incompatibility Content-Language: en-US To: cygwin@cygwin.com References: From: Ken Brown In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: BLAPR03CA0142.namprd03.prod.outlook.com (2603:10b6:208:32e::27) To SA0PR04MB7322.namprd04.prod.outlook.com (2603:10b6:806:e2::7) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA0PR04MB7322:EE_|SJ2PR04MB8584:EE_ X-MS-Office365-Filtering-Correlation-Id: fc3d47a1-b98e-406d-2e4b-08db2c6fb83b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: aIhM5uxBB6IAdup3vl7eW2yyfaiA537yc1e6AuU+xerenj4rBNmx3sKgkPCnBW9lU3NL/Fv09/X44lMG9JrwWrJKDwZSrzIj066woCSOyrgGSMHhiLp9CkB50oEFUaUipXvzcrIpciWg7WB0dg8mLjDxe7IR5yBXwdIcJbNm83U+PMYJT8m5Ix7MO4Qrc+ecaSMtoWh+ZOZ4x3rUwZJyLiy7w2i7zQIRoQfcQ9YrUwazVYsETqK0p90NPYb9jNyC+Twd1smvZBQj/Vvn81RIQd6BI7Z+kszWEpYyR2IwVylelT2fNGQR7xqPHOKDnXIg+4Ca7kJKD2OwuwBHUDJJlFsetmfcGggn4xqN55uhS1vH0zPs6n2VPqjWkknAB6ugxt2xaHWU+mb2EMLRVy3+RN1xgo+itjTw2O9X2XWXbldyqkqCHyvKX83WDJ1Q1bDDxlhyuaRjhHQKXt3d4MU8Z0lsP7Zsl8kWBFj6P0rWt0xvhuuLZfnh1hb/uzbx5Po0X2/qAo29WuMkS77qOfg7xC3L3pQqifalwXe2LFsx22fxeTV4FiUDoz7TAC9p2xU53DjwJjbMbfvGFTOubRpzneltDj70GJsvnomLKlFtTB2t49WEKXx1mtC9cnuon61BeXcMwDtLmU+BS0+B34fIuMfFAfH2v+yEzSro/q9CH68= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SA0PR04MB7322.namprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(39860400002)(136003)(366004)(376002)(396003)(346002)(451199018)(36756003)(75432002)(38100700002)(8936002)(6916009)(8676002)(86362001)(66946007)(66556008)(41300700001)(66476007)(316002)(6486002)(786003)(478600001)(2906002)(41320700001)(5660300002)(31696002)(26005)(53546011)(6506007)(6512007)(186003)(2616005)(6666004)(83380400001)(31686004)(45980500001)(43740500002)(460985005);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MEw4a2puOGpWczVKV0ZPa3cwZmVCMXJLNXg2Tk5TOTJuRjVpTG1QV0orNDZY?= =?utf-8?B?Wmo1Ny85dFVoUlc5MzRJVm5WcWczZnhaaU5rNjF6bFIwSzlzZDRtSDI0Q1Q5?= =?utf-8?B?NGZsc1BJOWtBQ2hWSldmeUVZZExybDRXUkw2QjlYRVQwb0hGMnZIaXRSUmNN?= =?utf-8?B?bFYxYVoxMldiSTFkaXphOVBxa0dTVDNYa1F0THpaYUF4eXFBK1dlTjBhckRO?= =?utf-8?B?SG9YUExTd1FjMDJONEszOGNlNXVyMlhQbGZCNmNDbkFuQnVOM0dVUjh4R011?= =?utf-8?B?bm1vVkxoRm1uTVZiVU1VdmFVakR4cGJkR1pIc0dnalBZM3dMTjdhbVJOcWVn?= =?utf-8?B?dnh3Q3BMOVE1MkxVaEViZVFZa0dwQ2h5c3dLRlFJQ2RlTWk5OEhrMW4xcUx5?= =?utf-8?B?aWd2aGFMOVludTlZVEdsak45bjJxc2UrQlFwN1Z2cGdNOEsreExSNXh0S1R3?= =?utf-8?B?cy9aVlJlQ3lkbUJ2aXZXUWg5R0VSY0k2YkkwdXdHMDJCYUYvdXE1WTdkaVRP?= =?utf-8?B?WWFDL2d5ZGxnQU9sanI4WVN0RUhQYjhHYlU5NXVKTFZjUkFvc2Q1Q2ZCMDdP?= =?utf-8?B?YU1WVEg2NXlnVmJtZTJVdVNGUjM3bEZpTVlGVyszTE5UTXFwMFVUY2RiRFk2?= =?utf-8?B?VGtTWGZvb05lV3ZXcTlDUkM0OFpvSTZQTGRDaXNuZmM2eFlrbWl1ZWlTZUVv?= =?utf-8?B?ZXlaaGM5RWt2Rnk4R1lvMk1qMzJNd0M3YmtXbENUek85NExGazVDdDlmWDl2?= =?utf-8?B?UHhHcldXRDF6T3BTbUJzWGhhZ2ZDSml0OTRkQjhPZzR3bFF5elN3aTQyV0Vw?= =?utf-8?B?eFhEQjduR05TRkZTa1JFSFlvSkUwaFhlSUdaQVVUMXhkYkJ2N0pWdUJWbVpm?= =?utf-8?B?S3VzUE9JdlJJK1dCaWFDM1g3dldKNVZ2cWsyYS9uVTJlYkVZa2t6cnRCd1U0?= =?utf-8?B?RklZZElGZ1F4MUxJUWFteXVPQ2RGdzRFWjQ2dTVQNy83VnVzeEk5VWd0R0NV?= =?utf-8?B?cy9FVUZUbU9UUnY0L2pEckJSTk0yT0h3TE12TExIRXcyRnJpeXhzWmN1eU5x?= =?utf-8?B?TW1TYzBZVnBHZUkwdll6TzMrS3g2clBiLzVTT29XaDhHbTVTc0J5ZGY5ZGJR?= =?utf-8?B?K3BrWlBLa0ljdGhRdTJFaE5IS29zamhWYXRsWkorcUpiL251dTNjQ2dmamdK?= =?utf-8?B?L0IyOXozNnlhQXBlakVuR2x2aURKUWRodFlMUUlSMmRtbmV5dkc2Wm1mN2pM?= =?utf-8?B?TjlTbUJtd2haMDJWcGttdW9sczVLSmhrWVFmeVFKT3FNK3ZIOU9ldGc1N3R4?= =?utf-8?B?WXZFU3djWit1eU5UbnRhb1E0TjRsdlRzVm5FbWdHZFl0RUJLcHdsc0I2OHZk?= =?utf-8?B?aGluVjBPZVVGRTVHT0owYVRDa3A5SlZwaXZkTDdiWFhJYmx4a0xpRnFJbDFX?= =?utf-8?B?Zm5oQlJrRm5YeHR0NlhyMGl4SzJScTREcEpvQmxISWZ5UzRQd2FrVVVGaTRC?= =?utf-8?B?UVFvajRhVmlRUVVyV2tzTXNLQ0tWTXBIQ2lqOFZ2MWZSZGdMZlI2YW5WcDdZ?= =?utf-8?B?SVUyWmszTXB5NkZLdE54MHZYQ0U1bjBwM0txYmlmN1pGcUN4VFB4M3h2UWJT?= =?utf-8?B?NVA0ZzJHSitKVjhtYjdsc0kvdUNoUDVkdTBscGN4RlovMm1Sck1ZU2t2d0Fp?= =?utf-8?B?L0xOSVFQZzBZaWk2VTQ4QzZNczBJaXc2SjcyaHpXY2RROTFrMTExUHU4ZEFX?= =?utf-8?B?YU1BQVYvTEhDNzZFZ1lnQldGWGpSUGFYQ2Rabml0bXpEa1ZocGhyUVNnbU1W?= =?utf-8?B?aEF4aXFVaU4wUldBcFZQbG02SVBDd05iZ1lzaElkRlQ4RVJoRUVCdTJRRDhW?= =?utf-8?B?L3RHOWJSM0FYQk1RcW94VUp0OWNBRkdHeG5nV05JZFVRWFZVUnNmZU4xc3U4?= =?utf-8?B?NnIzNXUxbG9kTTdCb2RsVCtPV0V5TEVpU1hSclF0MGovMDM4SWh6cDQzVU5u?= =?utf-8?B?N1JPdDBsdWN2aVgyWXZPYmdYenpGT1A1Sk5hQ09iWDk3aWdlQVlEK0gwYmVG?= =?utf-8?B?UEp5Nkt0UTBMdndtSEdxQ3B4ODRWb0xteEp1UTFnVnBkTWZKdEFmdEpJRXFX?= =?utf-8?Q?F1nPJryQTdRDPk8ziOawJAJG3?= X-OriginatorOrg: cornell.edu X-MS-Exchange-CrossTenant-Network-Message-Id: fc3d47a1-b98e-406d-2e4b-08db2c6fb83b X-MS-Exchange-CrossTenant-AuthSource: SA0PR04MB7322.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2023 13:57:34.9122 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 5d7e4366-1b9b-45cf-8e79-b14b27df46e1 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: mbGLoArkOKgkMzxbWg0Uom6aiPydrimDzACeVWkWFlpkkT1xdx1LdyEVPAQAJACRz/uRZGKkjpdbvLMV8OoM1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR04MB8584 X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,JMQ_SPF_NEUTRAL,NICE_REPLY_A,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 3/24/2023 8:18 AM, Corinna Vinschen via Cygwin wrote: > On Mar 23 22:14, Corinna Vinschen via Cygwin wrote: >> On Mar 23 15:48, Ken Brown via Cygwin wrote: >>> Consider the following test case: >>> >>> $ cat locale_test.c >>> #include >>> #include >>> >>> int main () >>> { >>> const char *locale = "en_DE.UTF-8"; >>> locale_t loc = newlocale (LC_COLLATE_MASK | LC_CTYPE_MASK, locale, 0); >>> if (!loc) >>> perror ("newlocale"); >>> else >>> printf ("newlocale succeeded on invalid locale %s\n", locale); >>> } >>> >>> $ gcc -o locale_test locale_test.c >>> >>> $ ./locale_test.exe >>> newlocale succeeded on invalid locale en_DE.UTF-8 >>> >>> On Linux, the newlocale call fails with ENOENT, as is documented on the man >>> page. >> Three bugs in fact. >> >> First, it's a bug in the Emacs testsuite. The test simply assumes that >> there's no en_DE locale on any system, but that's just not true. >> Windows support the RFC 5646 locale "en-DE", which is called "English >> (Germany)" in the "Region" settings. >> >> You can also check with `locale -av | less' and search for en_DE. >> >> For the reminder of this mail, I assume you're talking about Cygwin 3.5. >> I won't fix this for 3.4 anymore, given how much locale handling has >> changed for 3.5. >> >> The second bug is that Cygwin blindly trusts the Windows function >> ResolveLocaleName(). That function blatantly converts even vaguely >> similar locales into something it supports. E.g., it converts "en-XY" >> to "en-US". I. .e., even if you use "en_XY.utf8" as locale, the above >> testcase will wrongly succeed. So I have to rethink how I resolve POSIX >> locales to Windows locales. >> >> And the third bug is that Cygwin fails to set errno if it doesn't >> support a locale, but that's a minor inconvenience in comparison. >> >> Thanks for the report, I totally missed the above problem with >> ResolveLocaleName. > > I pushed a couple of patches which hopefully clean up the code. > > I had to create a replacement function for ResolveLocaleName which > doesn't return totally screwy and unexpected results, and special case > two more locales in /proc/locales output so the output makes sense. > > Oh, and I added error handling to the code so newlocale is now able to > set errno to ENOENT if the locale is not supported. > > If you want to test this, the changes are in test release > 3.5.0-0.260.gb5b67a65f87c, which is just building. That was fast! I can confirm that newlocale now fails with ENOENT on the invalid locale en_XY.utf8. Thanks. Ken