X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E2799385B52D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1679666295; bh=+mYB5g/Z1hGY6a9KXZAX8moH6Cmm3IzGFQXmOg8vkV8=; h=Date:Subject:To:References:In-Reply-To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=e0hZfQmzO8ARaqCMxo/a67AAqM4hZ2qpz09NDu5UkNXjjtwL0JGL02gdPhz/oUevq cyR2humo+SZpr4/LFOavQNcWYjd0bzbCj5FYIKgO3jAo+ja5/z/Nte4N3/3ceHSOsi N5j1Sgkvscjls/aDQFfUualee/4ylvI49Ia/VtoE= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org DED553858C50 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 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 AT cygwin DOT com References: In-Reply-To: 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 X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.29 List-Id: General Cygwin discussions and problem reports List-Archive: List-Post: List-Help: List-Subscribe: , From: Ken Brown via Cygwin Reply-To: Ken Brown Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Sender: "Cygwin" 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 -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple