www.delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2025/02/16/11:18:49

DMARC-Filter: OpenDMARC Filter v1.4.2 delorie.com 51GGImoI2526928
Authentication-Results: delorie.com; dmarc=pass (p=none dis=none) header.from=cygwin.com
Authentication-Results: delorie.com; spf=pass smtp.mailfrom=cygwin.com
DKIM-Filter: OpenDKIM Filter v2.11.0 delorie.com 51GGImoI2526928
Authentication-Results: delorie.com;
dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=FrZZ0jfQ
X-Recipient: archive-cygwin AT delorie DOT com
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A2BAB3858D29
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com;
s=default; t=1739722726;
bh=hCGHZF8sjgwOVOhd3amG+fqvsoLIh9wJ/6NG0Mxfbao=;
h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post:
List-Help:List-Subscribe:From:Reply-To:From;
b=FrZZ0jfQeO5e0F0YPP1hvtsuzWvBJbJfQzWwBALvqYiHxZhVNMPsyBmz3zRwh+wtm
sVvwAy8WjuoynfYtFCfaMpG/RIKnd5dArBmd8tTR6YPWESjZ0VuYUg4ZlujxSPnNW7
DxSG+352aIFvj9DzbpJEMtoLmboB+P/IYQHJz1n0=
X-Original-To: cygwin AT cygwin DOT com
Delivered-To: cygwin AT cygwin DOT com
DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5F5533858D1E
ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 5F5533858D1E
ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1739722690; cv=pass;
b=VAFcX1su5vWW1k192BE/BSnSxUl9QnviijW4nAjNg5u0E6rIo6ibRFiWzr0bMT9OcPzxNnuC75wDMBYlJjeLUvmO/TinmcsK8TZv7kFBcLENOGWwgiunQrG1jIWFGK7TA+mKTZedrsdBixWMWEq90UH2S/xrqVYCc4rlMonqjO8=
ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key;
t=1739722690; c=relaxed/simple;
bh=sS7Vh26BPEGuPJHq+fZh11MkbdIfEpdS+pmP+Wco3po=;
h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:
MIME-Version;
b=IKBzZpy5DE8vURt3LbCrASXz4jKRbXqzxbfgkbEtcDlvEOz+kUdEhLXWaUidJkX63+QhY2NJ9X4g4wMEW8bxFvDlKRJljC4A4JjfSwFdnZTWyRt8cjrqaBtdNab6R5flTwh2k6mk0t2KJ40pblOHkgzzdip8Ucdpx78uJGjLLUA=
ARC-Authentication-Results: i=2; server2.sourceware.org
DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5F5533858D1E
ARC-Seal: i=1; a=rsa-sha256; t=1739722688; cv=none;
d=strato.com; s=strato-dkim-0002;
b=D04/GtjPmERtZZraiWVtgGcbhGhJXOGUTIT06TrGgMNETMSH9KwANpyM6wFHgaLIUZ
j0etCDDTUl5Hew1Iq4afG+XqL/2BCDMK3Z3CFD6apRvxQM0QeImOE7lko6/s2YDCjoOZ
rqt2EpI/27xBGx+4/DWqnwMTrAtetkmF4htumxMa5CoI3ByzPz4O+RpvpEzHi5iduU56
BnhS6O7Igmq613JiBx04azCcoDUw+2k8Ms56ZKQT1MW3umDmZ6SA48HpH2a9zWGt5p5E
dSFLM4hHGuIk6f4vcgWuTUop1LZIhVp0NNTtPorhtJsBjfLpVPqsJfmOsLa261NO54vF
r03w==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1739722688;
s=strato-dkim-0002; d=strato.com;
h=Message-ID:Date:Subject:To:From:Cc:Date:From:Subject:Sender;
bh=dx1RPjOPl4X7RnIeGcxN/3uTHPUoyqvVZrjHUeoepwQ=;
b=R87t46csSJTCHH7QMYwwGYU00TSUVZHmNdDa/kaaemTpvp10T7JHo1dz+pTqk2h6Fn
RwNV3CJDcpg4ewCZpmZltw2o1Z+uzscW5lPPF9cLLt/D8LpCMiUSGtEdqy6zWNWLc56g
RGb01S+e9ArllQEHEZUONu7AfPo5SCz7GoblsBeLOFrFYXO3uDQgSSry1EuWDGg4FytL
F99APt4HUT/SXD9D148rr84cl/nPQnoNWG5/gfvmnK199dGDZ+Xl+N0381xrLC4brzKD
l/bsx5PIOPzux7Sqa9Yh0KHOCbhdQwz69O4h1OQ6a5TbWBltpAUGRsv1zmhx5aEm9TcL
dZDA==
ARC-Authentication-Results: i=1; strato.com;
arc=none;
dkim=none
X-RZG-CLASS-ID: mo00
X-RZG-AUTH: ":Ln4Re0+Ic/6oZXR1YgKryK8brlshOcZlLnY4jECd2hdUURIbZgL8PX2QiTuZ3cdB8X/nqmmeHTyqSHKY0MaVUIjzuYeaGlfV"
To: cygwin AT cygwin DOT com
Subject: bug in strcasecmp and strncasecmp
Date: Sun, 16 Feb 2025 17:18:08 +0100
Message-ID: <2031387.2IRrRt1zHL@nimes>
Organization: GNU
MIME-Version: 1.0
X-BeenThere: cygwin AT cygwin DOT com
X-Mailman-Version: 2.1.30
List-Id: General Cygwin discussions and problem reports <cygwin.cygwin.com>
List-Archive: <https://cygwin.com/pipermail/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-request AT cygwin DOT com?subject=help>
List-Subscribe: <https://cygwin.com/mailman/listinfo/cygwin>,
<mailto:cygwin-request AT cygwin DOT com?subject=subscribe>
From: Bruno Haible via Cygwin <cygwin AT cygwin DOT com>
Reply-To: Bruno Haible <bruno AT clisp DOT org>
Sender: "Cygwin" <cygwin-bounces~archive-cygwin=delorie DOT com AT cygwin DOT com>

Per POSIX [1], the functions strcasecmp and strncasecmp should
"use the current locale to determine the case of the characters.".

[1] https://pubs.opengroup.org/onlinepubs/9799919799/functions/strcasecmp.html

This is not what Cygwin does: In the fr_FR.ISO8859-1 locale, the
characters 0xE9 and 0xC9 are the same modulo case, but strcasecmp
and strncasecmp consider these characters to be different.

How to reproduce (in Cygwin 2.9.0 or 3.5.6):
============================= foo.c ==========================
#include <stdio.h>
#include <ctype.h>
#include <locale.h>
#include <strings.h>

int main ()
{
  if (setlocale (LC_ALL, "fr_FR.ISO8859-1") == NULL)
    return 1;
  int c1 = (unsigned char) '\311';
  int c2 = (unsigned char) '\351';

  printf ("0x%02X -> 0x%02X, 0x%02X\n", c1, tolower (c1), toupper (c1));
  printf ("0x%02X -> 0x%02X, 0x%02X\n", c2, tolower (c2), toupper (c2));
  printf ("strcasecmp  -> %d\n", strcasecmp ("Fej\311r", "Fej\351r"));
  printf ("strncasecmp -> %d\n", strncasecmp ("Fej\311r", "Fej\351r", 5));
}
=======================================================================
$ gcc -Wall foo.c
$ ./a

Expected output:
0xC9 -> 0xE9, 0xC9
0xE9 -> 0xE9, 0xC9
strcasecmp  -> 0
strncasecmp -> 0

Actual output:
0xC9 -> 0xE9, 0xC9
0xE9 -> 0xE9, 0xC9
strcasecmp  -> 256
strncasecmp -> 256

Bruno




-- 
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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019