From: Brian Inglis <Brian.Inglis@Shaw.ca>
To: cygwin@cygwin.com
Cc: Andrey Repin <anrdaemon@yandex.ru>
Subject: Re: Parameter expansion stopped working in recent ash/dash
Date: Wed, 8 Feb 2023 07:20:13 -0700 [thread overview]
Message-ID: <2d41d3d5-f426-e7cc-eb07-7d3d6011f36d@Shaw.ca> (raw)
In-Reply-To: <7890e200-4a40-5e1e-3a62-21f30d92d5c5@Shaw.ca>
[-- Attachment #1: Type: text/plain, Size: 2498 bytes --]
On 2023-02-07 12:01, Brian Inglis via Cygwin wrote:
> On 2023-02-07 10:19, Brian Inglis via Cygwin wrote:
>> On 2023-02-07 05:07, Andrey Repin via Cygwin wrote:
>>> In the attached script, that I always run using dash, the expansion is
>>> supposed to strip leading/trailing spaces from provided parameter.
>>> The upgrade that took place after which the expansion stopped working is
>>> libsolv: - dash-0.5.11.5-1.any -> dash-0.5.12-1.any
>>> Downgrading to 0.5.11.5 restored the expected behavior.
>>> I failed to find anything relevant in the dash 0.5.12 patch notes, but perhaps
>>> community could help?
>> Looks like something in dash broke space trimming of any sort: see attached
>> script and logs.
>> I will see what upstream has to say for themselves, or about Cygwin.
> Stupid errors in test script, didn't actually run trim3 anyway, redone, and that
> and updated logs attached.
> It appears the locale dependent [[:space:]] regexp no longer works but using
> escapes generated by echo still does, see corrected trim3, so perhaps use those
> for now, if you can, while I follow this upstream.
> You may need to add escape sequences for any locale dependent spacing characters
> to the space string, so please let us know if there are.
Hi Andrey,
A new test release 0.5.12-2 has been uploaded so please install and test that
behaves as expected in past releases.
The issue was caused as glibc fnmatch and glob now support locale dependent
named character classes, equivalents, etc. as in grep, so the build now defaults
to using the local libc fnmatch and glob, without any config test for which libc
or supported features.
Cygwin winsup and newlib libc fnmatch and glob do not support those locale
dependent named character classes, equivalents, etc. as in grep, so those
features are no longer provided in dash by default.
The new test release disables the build from using libc fnmatch and glob and use
those provided by dash (possibly by or from gnulib), so those classes again
appear to work as expected: see attached log.
If there are no further negative reports by this weekend, I will replace the
current stable release with this latest test release.
--
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
[-- Attachment #2: test12-2.log --]
[-- Type: text/plain, Size: 2026 bytes --]
#!/bin/dash -vx
trim() {
# remove leading whitespace characters
__trim="${*#${*%%[![:space:]]*}}"
# remove trailing whitespace characters
printf "%s" "${__trim%${__trim##*[![:space:]]}}"
}
trim " alpha" | od -t x1a
+ trim alpha
+ __trim=alpha
+ printf %s alpha
+ od -t x1a
0000000 61 6c 70 68 61
a l p h a
0000005
trim "beta " | od -t x1a
+ trim beta
+ __trim=beta
+ printf %s beta
+ od -t x1a
0000000 62 65 74 61
b e t a
0000004
trim "\rgamma " | od -t x1a
+ trim \rgamma
+ __trim=gamma
+ printf %s gamma
+ od -t x1a
0000000 67 61 6d 6d 61
g a m m a
0000005
trim2() {
# remove leading whitespace characters
__trim="${*##[[:space:]]}"
# remove trailing whitespace characters
printf "%s" "${__trim%%[[:space:]]}"
}
trim2 " alpha" | od -t x1a
+ trim2 alpha
+ __trim=alpha
+ printf %s alpha
+ od -t x1a
0000000 61 6c 70 68 61
a l p h a
0000005
trim2 "beta " | od -t x1a
+ trim2 beta
+ __trim=beta
+ printf %s beta
+ od -t x1a
0000000 62 65 74 61
b e t a
0000004
trim2 "\rgamma " | od -t x1a
+ trim2 \rgamma
+ __trim=gamma
+ printf %s gamma
+ od -t x1a
0000000 67 61 6d 6d 61
g a m m a
0000005
trim3() {
_space="$(echo -n '[\b\t\n\v\f\r ]')"
# remove leading whitespace characters
__trim="${*##$_space}"
# remove trailing whitespace characters
printf "%s" "${__trim%%$_space}"
}
trim3 " alpha" | od -t x1a
+ trim3 alpha
+ od -t x1a
+ echo -n [\b\t\n\v\f\r ]
+ _space=[\b
\v\f\r ]
+ __trim=alpha
+ printf %s alpha
0000000 61 6c 70 68 61
a l p h a
0000005
trim3 "beta " | od -t x1a
+ trim3 beta
+ od -t x1a
+ echo -n [\b\t\n\v\f\r ]
+ _space=[\b
\v\f\r ]
+ __trim=beta
+ printf %s beta
0000000 62 65 74 61
b e t a
0000004
trim3 "\rgamma " | od -t x1a
+ trim3 \rgamma
+ od -t x1a
+ echo -n [\b\t\n\v\f\r ]
+ _space=[\b
\v\f\r ]
+ __trim=gamma
+ printf %s gamma
0000000 67 61 6d 6d 61
g a m m a
0000005
next prev parent reply other threads:[~2023-02-08 14:20 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-07 12:07 Andrey Repin
2023-02-07 17:19 ` Brian Inglis
2023-02-07 19:01 ` Brian Inglis
2023-02-08 14:20 ` Brian Inglis [this message]
2023-02-09 12:08 ` Andrey Repin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2d41d3d5-f426-e7cc-eb07-7d3d6011f36d@Shaw.ca \
--to=brian.inglis@shaw.ca \
--cc=anrdaemon@yandex.ru \
--cc=cygwin@cygwin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).