* [ANNOUNCEMENT] Updated: dash 0.5.12-2 @ 2023-02-13 5:03 Cygwin dash Co-Maintainer via Cygwin-announce 2023-02-13 9:22 ` Corinna Vinschen 0 siblings, 1 reply; 12+ messages in thread From: Cygwin dash Co-Maintainer via Cygwin-announce @ 2023-02-13 5:03 UTC (permalink / raw) To: cygwin; +Cc: Cygwin dash Co-Maintainer The following packages have been upgraded in the Cygwin distribution: * dash 0.5.12-2 This package is being upgraded to current as the previous release breaks existing function that may be relied on by some scripts. This release has been rebuilt disabling libc fnmatch and glob as Cygwin/winsup/newlib do not support locale dependent named character classes like glibc. Thanks to Andrey Repin for testing and bringing this to our attention, and Harald van Dijk on the dash list for pointing out the commit responsible and the solution. DASH is a POSIX-compliant implementation of /bin/sh that aims to be as small as possible. It does this without sacrificing speed where possible. In fact, it is significantly faster than bash (the GNU Bourne-Again SHell) for most tasks. For more information see the project home page: http://gondor.apana.org.au/~herbert/dash/ For changes since the previous release, see below; for complete details see: https://git.kernel.org/pub/scm/utils/dash/dash.git/log/?h=v0.5.12&showmsg=1 2022-12-11 0.5.12 error: Remove USE_NORETURN ifdef eval: Always set exitstatus in evaltree Check eflag after redirection error Check nflag in evaltree instead of cmdloop Do not cache value of eflag in evaltree Prevent recursive PS4 expansion Test evalskip before flipping status for NNOT expand: Add ifsfree to expand to fix a logic error that causes a buffer over-read Always quote caret when using fnmatch Make glob(3) interruptible by SIGINT input: Clear unget on RESET Remove special case for unget EOF jobs: Always reset SIGINT/SIGQUIT handlers Block signals during tcsetpgrp Fix waitcmd busy loop Only block in waitcmd on first run man: fix formatting parser: Add VSBIT to ensure subtype is never zero Fix VSLENGTH parsing with trailing garbage Get rid of PEOA redir: Retry open64 on EINTR shell: Call CHECK_DECL on stat64 Disable glob again as it strips trailing slashes Enable fnmatch/glob by default Fail if building --with-libedit and can't find libedit Group readdir64/dirent64 with open64 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ANNOUNCEMENT] Updated: dash 0.5.12-2 2023-02-13 5:03 [ANNOUNCEMENT] Updated: dash 0.5.12-2 Cygwin dash Co-Maintainer via Cygwin-announce @ 2023-02-13 9:22 ` Corinna Vinschen 2023-02-13 16:38 ` Corinna Vinschen 2023-02-13 17:48 ` Andrey Repin 0 siblings, 2 replies; 12+ messages in thread From: Corinna Vinschen @ 2023-02-13 9:22 UTC (permalink / raw) To: cygwin; +Cc: Cygwin dash Co-Maintainer On Feb 12 22:03, Cygwin dash Co-Maintainer via Cygwin-announce via Cygwin wrote: > The following packages have been upgraded in the Cygwin distribution: > > * dash 0.5.12-2 > > This package is being upgraded to current as the previous release > breaks existing function that may be relied on by some scripts. > This release has been rebuilt disabling libc fnmatch and glob as > Cygwin/winsup/newlib do not support locale dependent named character > classes like glibc. So how do we fix in Cygwin without pulling in GLibc code? Corinna ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ANNOUNCEMENT] Updated: dash 0.5.12-2 2023-02-13 9:22 ` Corinna Vinschen @ 2023-02-13 16:38 ` Corinna Vinschen 2023-02-13 17:43 ` ASSI 2023-02-13 17:48 ` Andrey Repin 1 sibling, 1 reply; 12+ messages in thread From: Corinna Vinschen @ 2023-02-13 16:38 UTC (permalink / raw) To: Brian Inglis; +Cc: cygwin Hi Brian, On Feb 13 10:22, Corinna Vinschen via Cygwin wrote: > On Feb 12 22:03, Cygwin dash Co-Maintainer via Cygwin-announce via Cygwin wrote: > > The following packages have been upgraded in the Cygwin distribution: > > > > * dash 0.5.12-2 > > > > This package is being upgraded to current as the previous release > > breaks existing function that may be relied on by some scripts. > > This release has been rebuilt disabling libc fnmatch and glob as > > Cygwin/winsup/newlib do not support locale dependent named character > > classes like glibc. Can you give me an example? I'm a bit puzzled because fnmatch as well as glob in Cygwin support native characters. Corinna > > So how do we fix in Cygwin without pulling in GLibc code? > > > Corinna ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ANNOUNCEMENT] Updated: dash 0.5.12-2 2023-02-13 16:38 ` Corinna Vinschen @ 2023-02-13 17:43 ` ASSI 0 siblings, 0 replies; 12+ messages in thread From: ASSI @ 2023-02-13 17:43 UTC (permalink / raw) To: cygwin Corinna Vinschen via Cygwin writes: > Can you give me an example? I'm a bit puzzled because fnmatch as well > as glob in Cygwin support native characters. AFAIU, the issue was with locale dependent character classes, not characters. Andrey specifically mentioned [[:space:]] in the original bugreport. Regards, Achim. -- +<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+ Wavetables for the Waldorf Blofeld: http://Synth.Stromeko.net/Downloads.html#BlofeldUserWavetables ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ANNOUNCEMENT] Updated: dash 0.5.12-2 2023-02-13 9:22 ` Corinna Vinschen 2023-02-13 16:38 ` Corinna Vinschen @ 2023-02-13 17:48 ` Andrey Repin 2023-02-13 19:03 ` Brian Inglis 1 sibling, 1 reply; 12+ messages in thread From: Andrey Repin @ 2023-02-13 17:48 UTC (permalink / raw) To: Corinna Vinschen via Cygwin, cygwin Greetings, Corinna Vinschen via Cygwin! > On Feb 12 22:03, Cygwin dash Co-Maintainer via Cygwin-announce via Cygwin wrote: >> The following packages have been upgraded in the Cygwin distribution: >> >> * dash 0.5.12-2 >> >> This package is being upgraded to current as the previous release >> breaks existing function that may be relied on by some scripts. >> This release has been rebuilt disabling libc fnmatch and glob as >> Cygwin/winsup/newlib do not support locale dependent named character >> classes like glibc. > So how do we fix in Cygwin without pulling in GLibc code? Depends what you call a "fix". As for an example, dash -c '_x=" x"; echo "${_x#${_x%%[![:space:]]*}}"' Using this construct with 0.5.12-1 will produce an empty result. -- With best regards, Andrey Repin Monday, February 13, 2023 20:40:36 Sorry for my terrible english... ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ANNOUNCEMENT] Updated: dash 0.5.12-2 2023-02-13 17:48 ` Andrey Repin @ 2023-02-13 19:03 ` Brian Inglis 2023-02-13 19:37 ` Corinna Vinschen 0 siblings, 1 reply; 12+ messages in thread From: Brian Inglis @ 2023-02-13 19:03 UTC (permalink / raw) To: cygwin On 2023-02-13 10:43, ASSI via Cygwin wrote: > Corinna Vinschen via Cygwin writes: >> On Feb 12 22:03, Cygwin dash Co-Maintainer wrote: >>> The following packages have been upgraded in the Cygwin distribution: >>> >>> * dash 0.5.12-2 >>> >>> This package is being upgraded to current as the previous release >>> breaks existing function that may be relied on by some scripts. >>> This release has been rebuilt disabling libc fnmatch and glob as >>> Cygwin/winsup/newlib do not support locale dependent named character >>> classes like glibc. >> Can you give me an example? I'm a bit puzzled because fnmatch as well >> as glob in Cygwin support native characters. But not locale dependent named character classes like regexp in paths. > AFAIU, the issue was with locale dependent character classes, not > characters. Andrey specifically mentioned [[:space:]] in the original > bugreport. Specifically support in fnmatch and glob, now updated in glibc, and their use in dash for parameter expansion in place of (gnulib?) regexp support. >> So how do we fix in Cygwin without pulling in GLibc code? It's fixed in release 2 which disables 0.5.12 changed default (using [Cygwin/winsup/newlib] libc fnmatch and glob, without testing functionality), and goes back to using its own previous default (gnulib?) regexp code for parameter expansion which supports locale dependent named character classes. As glibc "recently" fixed their fnmatch and glob to support locale dependent named character classes like [[:blank:]], dash decided to use those in parameter expansions for consistency, but not exactly clearly documented, although they added config options to enable/disable each of libc fnmatch/glob. Cygwin bash parameter expansion also supports locale dependent named character classes. $ info bash pattern $ info sed classes -- Take care. Thanks, Brian Inglis Calgary, Alberta, Canada La perfection est atteinte Perfection is achieved non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add mais lorsqu'il n'y a plus rien à retirer but when there is no more to cut -- Antoine de Saint-Exupéry ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ANNOUNCEMENT] Updated: dash 0.5.12-2 2023-02-13 19:03 ` Brian Inglis @ 2023-02-13 19:37 ` Corinna Vinschen 2023-02-15 13:52 ` Corinna Vinschen 0 siblings, 1 reply; 12+ messages in thread From: Corinna Vinschen @ 2023-02-13 19:37 UTC (permalink / raw) To: cygwin On Feb 13 12:03, Brian Inglis via Cygwin wrote: > On 2023-02-13 10:43, ASSI via Cygwin wrote: > > Corinna Vinschen via Cygwin writes: > > > On Feb 12 22:03, Cygwin dash Co-Maintainer wrote: > > > > The following packages have been upgraded in the Cygwin distribution: > > > > > > > > * dash 0.5.12-2 > > > > > > > > This package is being upgraded to current as the previous release > > > > breaks existing function that may be relied on by some scripts. > > > > This release has been rebuilt disabling libc fnmatch and glob as > > > > Cygwin/winsup/newlib do not support locale dependent named character > > > > classes like glibc. > > > > Can you give me an example? I'm a bit puzzled because fnmatch as well > > > as glob in Cygwin support native characters. > > But not locale dependent named character classes like regexp in paths. I checked the dash code of curent dash git, and while its internal glob implementation supports character classes, they are no localized, using standard singlebyte functions isalnum, isalpha, etc. under the hood. So, yeah, what you say further down this mail... looks like dash supports locale dependent character classes only with glibc. > > AFAIU, the issue was with locale dependent character classes, not > > characters. Andrey specifically mentioned [[:space:]] in the original > > bugreport. > > Specifically support in fnmatch and glob, now updated in glibc, and their > use in dash for parameter expansion in place of (gnulib?) regexp support. > > > > So how do we fix in Cygwin without pulling in GLibc code? > > It's fixed in release 2 which disables 0.5.12 changed default (using > [Cygwin/winsup/newlib] libc fnmatch and glob, without testing > functionality), and goes back to using its own previous default (gnulib?) > regexp code for parameter expansion which supports locale dependent named > character classes. > > As glibc "recently" fixed their fnmatch and glob to support locale dependent > named character classes like [[:blank:]], dash decided to use those in > parameter expansions for consistency, but not exactly clearly documented, > although they added config options to enable/disable each of libc > fnmatch/glob. > > Cygwin bash parameter expansion also supports locale dependent named > character classes. > > $ info bash pattern > $ info sed classes These info pages are mostly target-system independent. There's no guarantee that this works in a Cygwin bash or sed. Either way, I don't care much for what a certain application provides by itself. I'm talking about our libc, that is Cygwin, and what it provides to processes calling its implementations of regcomp/regexec, glob and fnmatch. All these functions have been taken from FreeBSD and all three suffer shortcomings: - regcomp/regexec supports POSIX named character classes, collating symbols, and equivalence class expressions, but all of them only work for ASCII chars. - fnmatch and glob support neither of named character classes, collating symbols, and equivalence class expressions. I checked the upstream code in FreeBSD, OpenBSD and NetBSD and none of these functions are improved to support locales (regcomp) or any of the character classes stuff (fnmatch/glob). So, if we want to add this support to Cygwin (and thus, to all applications calling the libc implementation of these functions), quite a bit of work is required. Being able to fetch the implementation from some other source would reduce the effort enourmously :} Corinna ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ANNOUNCEMENT] Updated: dash 0.5.12-2 2023-02-13 19:37 ` Corinna Vinschen @ 2023-02-15 13:52 ` Corinna Vinschen 2023-02-15 14:05 ` Corinna Vinschen 0 siblings, 1 reply; 12+ messages in thread From: Corinna Vinschen @ 2023-02-15 13:52 UTC (permalink / raw) To: cygwin; +Cc: Brian Inglis Hi Brian, On Feb 13 20:37, Corinna Vinschen via Cygwin wrote: > On Feb 13 12:03, Brian Inglis via Cygwin wrote: > > On 2023-02-13 10:43, ASSI via Cygwin wrote: > > > Corinna Vinschen via Cygwin writes: > > > > Can you give me an example? I'm a bit puzzled because fnmatch as well > > > > as glob in Cygwin support native characters. > > > > But not locale dependent named character classes like regexp in paths. > > I checked the dash code of curent dash git, and while its internal glob > implementation supports character classes, they are no localized, using > standard singlebyte functions isalnum, isalpha, etc. under the hood. > > So, yeah, what you say further down this mail... looks like dash > supports locale dependent character classes only with glibc. > [...] > Either way, I don't care much for what a certain application provides by > itself. I'm talking about our libc, that is Cygwin, and what it > provides to processes calling its implementations of regcomp/regexec, > glob and fnmatch. > > All these functions have been taken from FreeBSD and all three suffer > shortcomings: > > - regcomp/regexec supports POSIX named character classes, collating > symbols, and equivalence class expressions, but all of them only work > for ASCII chars. > > - fnmatch and glob support neither of named character classes, > collating symbols, and equivalence class expressions. > > I checked the upstream code in FreeBSD, OpenBSD and NetBSD and none of > these functions are improved to support locales (regcomp) or any of > the character classes stuff (fnmatch/glob). > > So, if we want to add this support to Cygwin (and thus, to all > applications calling the libc implementation of these functions), > quite a bit of work is required. > > Being able to fetch the implementation from some other source > would reduce the effort enourmously :} I took the liberty to add [:<class>:] support to Cygwin's fnmatch(3) and glob(3) functions. They also recognize collating symbols [.<coll.] and equivalence class expressions [=<equiv>=]. But the latter two are not implemented yet and fnmatch/glob simply skip them in the pattern. Given that glob and fnmatch use wide characters internally, the support for character classes is internationalized by default, albeit in a slightly differentt way than in glibc. The classes a unicode character belongs to is not locale dependent in Cygwin/newlib. All characters have their classes assigned all the time, so, for instance, the german character 'ä' is lower and alpha even in the en_US.utf8 locale. The currently building cygwin test release 3.5.0-0.174.gd6d4436145b8 contains the new code. Would you mind to build a dash for testing so we can see if and how it works? Thanks, Corinna ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ANNOUNCEMENT] Updated: dash 0.5.12-2 2023-02-15 13:52 ` Corinna Vinschen @ 2023-02-15 14:05 ` Corinna Vinschen 2023-02-15 15:56 ` Andrey Repin 2023-02-15 22:31 ` Brian Inglis 0 siblings, 2 replies; 12+ messages in thread From: Corinna Vinschen @ 2023-02-15 14:05 UTC (permalink / raw) To: cygwin Oh, I'm an idiot. On Feb 15 14:52, Corinna Vinschen via Cygwin wrote: > Hi Brian, > [...] > The currently building cygwin test release 3.5.0-0.174.gd6d4436145b8 > contains the new code. Would you mind to build a dash for testing so we > can see if and how it works? You don't have to build a new dash. Just downgrading to dash-0.5.12-1 will suffice, of course. D'oh. So, as a first test, here's the result of Andrey's expression with dash-0.5.12-1: $ dash -c '_x=" x"; echo "${_x#${_x%%[![:space:]]*}}"' x Corinna ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ANNOUNCEMENT] Updated: dash 0.5.12-2 2023-02-15 14:05 ` Corinna Vinschen @ 2023-02-15 15:56 ` Andrey Repin 2023-02-15 22:31 ` Brian Inglis 1 sibling, 0 replies; 12+ messages in thread From: Andrey Repin @ 2023-02-15 15:56 UTC (permalink / raw) To: Corinna Vinschen via Cygwin, cygwin Greetings, Corinna Vinschen via Cygwin! > On Feb 15 14:52, Corinna Vinschen via Cygwin wrote: >> Hi Brian, >> [...] >> The currently building cygwin test release 3.5.0-0.174.gd6d4436145b8 >> contains the new code. Would you mind to build a dash for testing so we >> can see if and how it works? > You don't have to build a new dash. Just downgrading to > dash-0.5.12-1 will suffice, of course. D'oh. > So, as a first test, here's the result of Andrey's expression > with dash-0.5.12-1: > $ dash -c '_x=" x"; echo "${_x#${_x%%[![:space:]]*}}"' > x :thumbsup: -- With best regards, Andrey Repin Wednesday, February 15, 2023 18:56:29 Sorry for my terrible english... ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ANNOUNCEMENT] Updated: dash 0.5.12-2 2023-02-15 14:05 ` Corinna Vinschen 2023-02-15 15:56 ` Andrey Repin @ 2023-02-15 22:31 ` Brian Inglis 2023-02-16 9:53 ` Corinna Vinschen 1 sibling, 1 reply; 12+ messages in thread From: Brian Inglis @ 2023-02-15 22:31 UTC (permalink / raw) To: cygwin On 2023-02-15 07:05, Corinna Vinschen via Cygwin wrote: > On Feb 15 14:52, Corinna Vinschen via Cygwin wrote: >> The currently building cygwin test release 3.5.0-0.174.gd6d4436145b8 >> contains the new code. Would you mind to build a dash for testing so we >> can see if and how it works? > You don't have to build a new dash. Just downgrading to > dash-0.5.12-1 will suffice, of course. D'oh. > So, as a first test, here's the result of Andrey's expression > with dash-0.5.12-1: > $ dash -c '_x=" x"; echo "${_x#${_x%%[![:space:]]*}}"' > x Good and quick work! I was still looking thru my last Cygwin build for the Unicode tables, that I remember being rebuilt some time ago, and to find what used them, and whether they were updated to Unicode 15. I'll install the test Cygwin and old dash, then prep and check a new/old dash release 3 in test, for release with untest when the Cygwin changes are released, rather than play with replacing versions and going back and forth. -- Take care. Thanks, Brian Inglis Calgary, Alberta, Canada La perfection est atteinte Perfection is achieved non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to add mais lorsqu'il n'y a plus rien à retirer but when there is no more to cut -- Antoine de Saint-Exupéry ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [ANNOUNCEMENT] Updated: dash 0.5.12-2 2023-02-15 22:31 ` Brian Inglis @ 2023-02-16 9:53 ` Corinna Vinschen 0 siblings, 0 replies; 12+ messages in thread From: Corinna Vinschen @ 2023-02-16 9:53 UTC (permalink / raw) To: cygwin; +Cc: Brian Inglis Hi Brian, On Feb 15 15:31, Brian Inglis via Cygwin wrote: > On 2023-02-15 07:05, Corinna Vinschen via Cygwin wrote: > > On Feb 15 14:52, Corinna Vinschen via Cygwin wrote: > > > The currently building cygwin test release 3.5.0-0.174.gd6d4436145b8 > > > contains the new code. Would you mind to build a dash for testing so we > > > can see if and how it works? > > > You don't have to build a new dash. Just downgrading to > > dash-0.5.12-1 will suffice, of course. D'oh. > > So, as a first test, here's the result of Andrey's expression > > with dash-0.5.12-1: > > $ dash -c '_x=" x"; echo "${_x#${_x%%[![:space:]]*}}"' > > x > > Good and quick work! > I was still looking thru my last Cygwin build for the Unicode tables, that I > remember being rebuilt some time ago, and to find what used them, and > whether they were updated to Unicode 15. > > I'll install the test Cygwin and old dash, then prep and check a new/old > dash release 3 in test, for release with untest when the Cygwin changes are > released, rather than play with replacing versions and going back and forth. That *may* be a bit early... The patches are not bugfixes, but implementing new features. As such, you won't find them in a 3.4 bugfix release. They will hit the light with the first 3.5.0 release only, probably end of 2023. Corinna ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2023-02-16 9:53 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-02-13 5:03 [ANNOUNCEMENT] Updated: dash 0.5.12-2 Cygwin dash Co-Maintainer via Cygwin-announce 2023-02-13 9:22 ` Corinna Vinschen 2023-02-13 16:38 ` Corinna Vinschen 2023-02-13 17:43 ` ASSI 2023-02-13 17:48 ` Andrey Repin 2023-02-13 19:03 ` Brian Inglis 2023-02-13 19:37 ` Corinna Vinschen 2023-02-15 13:52 ` Corinna Vinschen 2023-02-15 14:05 ` Corinna Vinschen 2023-02-15 15:56 ` Andrey Repin 2023-02-15 22:31 ` Brian Inglis 2023-02-16 9:53 ` Corinna Vinschen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).