Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-developers-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin-developers AT sources DOT redhat DOT com Date: Wed, 30 May 2001 18:24:05 +0400 From: egor duda X-Mailer: The Bat! (v1.45) Personal Reply-To: egor duda Organization: deo X-Priority: 3 (Normal) Message-ID: <3066562491.20010530182405@logos-m.ru> To: Christopher Faylor Subject: Re: isspace() & i18n In-reply-To: <20010530101516.E17603@redhat.com> References: <13254193676 DOT 20010530145756 AT logos-m DOT ru> <20010530095254 DOT B17603 AT redhat DOT com> <9265832872 DOT 20010530181156 AT logos-m DOT ru> <20010530101516 DOT E17603 AT redhat DOT com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi! Wednesday, 30 May, 2001 Christopher Faylor cgf AT redhat DOT com wrote: CF> On Wed, May 30, 2001 at 06:11:56PM +0400, egor duda wrote: >>Wednesday, 30 May, 2001 Christopher Faylor cgf AT redhat DOT com wrote: >>CF> On Wed, May 30, 2001 at 02:57:56PM +0400, egor duda wrote: >>>> cygwin calls newlib's isspace() passing it a signed char. this works >>>>ok for ascii symbols 0x00-0x7f, but fails with, say, cyrillic symbols >>>> with codes > 0x80. As a result `cd dir-with-last-cyrillic-letter' >>>>fails as chdir strips last symbols, thinking they're spaces -- >>>>isspace() is called with negative parameter. >>>> >>>>Any thoughts as of how we should handle this? >> >>CF> Maybe we just need a cygwin_isspace which checks for just tabs and spaces? >> >>it's possible, of course, but the problem with referencing negative >>array indices in is*() remains. >> >>i think we should either conform to standard and explicitly convert >>types or define appropriate strings as unsigned char*, (typedef PATH_STR, >>perhaps), or define cygwin_is*() as macros that do the conversion, or, >>as glibc does, expand _ctype to allow indices in range [-128,256]. CF> IMO, "we" should convert the arguments to the is* functions to unsigned CF> char. This is a decision for the newlib folks though, isn't it? in actual calls, not in prototypes. newlib's currently takes int as is*() argument, and is absolutely right because standard says so. it's a caller's responsibility to provide correct parameters. so conversion should take place in cygwin code, not in newlib's. mimicking glibc behavior -- accepting negative arguments to support broken callers, is newlib folks decision. Egor. mailto:deo AT logos-m DOT ru ICQ 5165414 FidoNet 2:5020/496.19