Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Harald van Dijk

On 03/07/2019 15:27, Geoff Clare wrote:

Harald van Dijk  wrote, on 03 Jul 2019:


On 03/07/2019 11:08, Geoff Clare wrote:

Stephane Chazelas  wrote, on 03 Jul 2019:


2019-07-03 09:24:10 +0100, Geoff Clare:
[...]

   [...] If any character (ordinary, shell
special, or pattern special) is quoted or (where shell quoting is not
in effect) escaped with a , that pattern shall match the
character itself. [...]

[...]

And again, that's an incompatible change for dash, ksh88, ksh93,
pdksh, mksh, bosh, yash where:

a='\*'
ls -ld $a

lists the files that start with \


Which is inconsistent with find, pax, fnmatch() and glob().


I thought the new wording you proposed would require this to list the files
that start with \, as this is a context where shell quoting is in effect,


No, it's a context where shell-quoting backslash *doesn't* work. Therefore
the backslash should act as an escape character just like in find, pax,
fnmatch() and glob().


It's not about shell quoting the backslash, it's about whether shell 
quoting can be used on the asterisk. The quoted sentence says that if 
shell quoting cannot be used on the asterisk, then it can be escaped 
with a backslash instead. But shell quoting can be used on the asterisk: 
just try


  a='*'
  ls -ld "$a"

This does work for listing only a file literally named '*'.

Cheers,
Harald van Dijk



[1003.1(2016)/Issue7+TC2 0001267]: sh HOME should not be UP shaded

2019-07-03 Thread Austin Group Bug Tracker


A NOTE has been added to this issue. 
== 
http://austingroupbugs.net/view.php?id=1267 
== 
Reported By:dennisw
Assigned To:
== 
Project:1003.1(2016)/Issue7+TC2
Issue ID:   1267
Category:   Shell and Utilities
Type:   Error
Severity:   Comment
Priority:   normal
Status: New
Name:   Dennis Wölfing 
Organization:
User Reference:  
Section:sh 
Page Number:3228 
Line Number:108396-108397 
Interp Status:  --- 
Final Accepted Text: 
== 
Date Submitted: 2019-07-03 15:24 UTC
Last Modified:  2019-07-03 16:22 UTC
== 
Summary:sh HOME should not be UP shaded
== 

-- 
 (0004470) shware_systems (reporter) - 2019-07-03 16:22
 http://austingroupbugs.net/view.php?id=1267#c4470 
-- 
I believe it is UP shaded because embedded systems may not maintain a
getpwnam() file, and take advantage of the unspecified behavior allowance
of HOME being unset to replace the tilde with an arbitrary absolute path
constant. Systems conforming to the UP option are required to maintain that
file, I believe, so a valid value for HOME is always plausible and
shouldn't be unset, or even a null string. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2019-07-03 15:24 denniswNew Issue
2019-07-03 15:24 denniswName  => Dennis Wölfing 
2019-07-03 15:24 denniswSection   => sh  
2019-07-03 15:24 denniswPage Number   => 3228
2019-07-03 15:24 denniswLine Number   => 108396-108397   
2019-07-03 16:22 shware_systems Note Added: 0004470  
==




Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Geoff Clare
Stephane Chazelas  wrote, on 03 Jul 2019:
>
> Before (Bourne/ksh88...) it was:
> 
> *, ? and [...] are wildcard operators and quoting can be used to
> remove their special meaning.
> 
> Which applies to both shell and fnmatch() (where quoting is done
> with \).
> 
> With your proposed change, the sh documentation has to be
> changed to:
> 
> *, ? and [...] are wildcard operators and quoting can be used to
> remove their special meaning, but an unquoted backslash (as can
> be produced by leaving a word expansion unquoted) can also be
> used to escape the following character if any (unspecified if
> there's no following character), but bearing in mind that in the
> pathname expansion case, it only happens for words that contain
> an unquoted and unescaped (with that unquoted \ character)
> wildcard operator (unspecified if [ is not matched by an
> unquoted unescaped ] in the same path component)...

I think you have deliberately come up with as bad a modification
as you could.  Obviously it could be made much clearer and easier
to read.

A lot of the added complexity applies equally to direct patterns,
and is already needed.  If that stuff is added (or already exists
in some form) somewhere that applies to both direct and indirect
patterns, then all that would be needed to this part is:

*, ? and [...] are wildcard operators and quoting can be used to
remove their special meaning.  In contexts where the pattern is not
affected by shell quoting, only a preceding backslash can be used.

although it might be helpful to the reader to include the "(such as ...)"
by way of illustration.

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Shware Systems

Just being picky, re:
"Arguments to find, pax, fnmatch() and glob() are others."

at the bottom, which to me should be:
"Arguments to exec('find',...), exec('pax',...), fnmatch() and glob() are 
others."

as parameters of find and pax in scripts are shell words covered by the 
statement preceding that. It is after parameter expansions and quote removal 
that the resulting token value may be an argument string to be treated as a 
pattern for those utilities.

On Wednesday, July 3, 2019 Geoff Clare  wrote:

Stephane Chazelas  wrote, on 03 Jul 2019:
>
> 2019-07-03 11:08:57 +0100, Geoff Clare:
> [...]
> > > And again, that's an incompatible change for dash, ksh88, ksh93,
> > > pdksh, mksh, bosh, yash where:
> > >
> > > a='\*'
> > > ls -ld $a
> > >
> > > lists the files that start with \
> >
> > Which is inconsistent with find, pax, fnmatch() and glob().
>
> And again, that argument doesn't hold.
>
> There's no find implementation that I know where
>
> find . -name '"*"*'
> find . -name '"$var"*'
>
> works the same as
>
> printf '%s\n' "*"*
> printf '%s\n' "$var"*

The goal is consistency of backslash handling.  There was never any
intention in 1992 to require find, pax, fnmatch() and glob() to mimic
shell single quotes or double quotes, nor is there now, nor does there
need to be.

> fnamtch() didn't add \ support for consistency with the shell,
> It did add the *, ? and [ glob operators of the shell and the \
> quoting operator of the shell. \ is not a glob operator there
> but a quoting operator in its very limited syntax (compared to
> that of the shell which has other forms of quoting, and many
> forms of expansions).
>
> Adding it back to the shell *as an extra layer* hardly helps
> with consistency and adds confusion.

The proposed resolution makes clear that it is not an extra layer, it's
an alternative for situations where the shell quoting backslash is not
available.  Thus providing consistency and reducing confusion.

> [...]
> > > a='\d*'
> > > ls -ld $a
> > >
> > > lists the filenames that start with \d
> >
> > Which is inconsistent with find, pax, fnmatch() and glob().
>
> Irrelevant, pax, fnmatch() and glob() don't do variable
> expansion. find -name '$a' is unspecified but in all
> implementations, that returns the files called $a literally.

The goal is consistency of how backslash behaves in patterns.
A direct pattern in a shell word and an indirect pattern in a shell
variable (that is then used unquoted) are two places a pattern can
occur.  Arguments to find, pax, fnmatch() and glob() are others.


--
Geoff Clare <
g.cl...@opengroup.org>
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England





[1003.1(2016)/Issue7+TC2 0001267]: sh HOME should not be UP shaded

2019-07-03 Thread Austin Group Bug Tracker


The following issue has been SUBMITTED. 
== 
http://austingroupbugs.net/view.php?id=1267 
== 
Reported By:dennisw
Assigned To:
== 
Project:1003.1(2016)/Issue7+TC2
Issue ID:   1267
Category:   Shell and Utilities
Type:   Error
Severity:   Comment
Priority:   normal
Status: New
Name:   Dennis Wölfing 
Organization:
User Reference:  
Section:sh 
Page Number:3228 
Line Number:108396-108397 
Interp Status:  --- 
Final Accepted Text: 
== 
Date Submitted: 2019-07-03 15:24 UTC
Last Modified:  2019-07-03 15:24 UTC
== 
Summary:sh HOME should not be UP shaded
Description: 
HOME is UP shaded in the ENVIRONMENT VARIABLES section of the sh utility.
However XCU 2.6.1 clearly states that HOME is always used by the shell for
tilde expansion without a login name, not just on systems that implement
the UP option.
Desired Action: 
On page 3228 lines 108396-108397 section sh, remove UP shading
from:HOMEDetermine the pathname of the
user’s home directory. The contents of HOME are
used in tilde expansion as described in [xref to XCU
2.6.1].
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2019-07-03 15:24 denniswNew Issue
2019-07-03 15:24 denniswName  => Dennis Wölfing 
2019-07-03 15:24 denniswSection   => sh  
2019-07-03 15:24 denniswPage Number   => 3228
2019-07-03 15:24 denniswLine Number   => 108396-108397   
==




[1003.1(2016)/Issue7+TC2 0001266]: sh -s with operands

2019-07-03 Thread Austin Group Bug Tracker


The following issue has been SUBMITTED. 
== 
http://austingroupbugs.net/view.php?id=1266 
== 
Reported By:dennisw
Assigned To:
== 
Project:1003.1(2016)/Issue7+TC2
Issue ID:   1266
Category:   Shell and Utilities
Type:   Error
Severity:   Objection
Priority:   normal
Status: New
Name:   Dennis Wölfing 
Organization:
User Reference:  
Section:sh 
Page Number:3226 
Line Number:108308-108309 
Interp Status:  --- 
Final Accepted Text: 
== 
Date Submitted: 2019-07-03 15:18 UTC
Last Modified:  2019-07-03 15:18 UTC
== 
Summary:sh -s with operands
Description: 
When the -i option is not present, the standard currently says that the
shell is only interactive when there are no operands and stdin and stderr
are a terminal.
However when the -s option is given commands are read from stdin even when
operands are present and existing shells do treat -s with operands as
interactive when stdin and stderr refer to a terminal.
Desired Action: 
On page 3226 lines 108308-108309 section sh, change: If the
−i option is present, or if there are no operands and the
shell’s standard input and
standard error are attached to a terminal, the shell is considered to be
interactive. to If the −i option
is present, or if the shell reads commands from the standard input and the
shell’s standard input and
standard error are attached to a terminal, the shell is considered to be
interactive.
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2019-07-03 15:18 denniswNew Issue
2019-07-03 15:18 denniswName  => Dennis Wölfing 
2019-07-03 15:18 denniswSection   => sh  
2019-07-03 15:18 denniswPage Number   => 3226
2019-07-03 15:18 denniswLine Number   => 108308-108309   
==




Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Stephane Chazelas
2019-07-03 15:19:18 +0100, Geoff Clare:
[...]
> > Irrelevant, pax, fnmatch() and glob() don't do variable
> > expansion. find -name '$a' is unspecified but in all
> > implementations, that returns the files called $a literally.
> 
> The goal is consistency of how backslash behaves in patterns.
> A direct pattern in a shell word and an indirect pattern in a shell
> variable (that is then used unquoted) are two places a pattern can
> occur.  Arguments to find, pax, fnmatch() and glob() are others.
[...]

And now, you have to balance it against breaking backward
compatibility and making the syntax of the shell more
complicated, for no benefit other than that preceived
consistency.

Before (Bourne/ksh88...) it was:

*, ? and [...] are wildcard operators and quoting can be used to
remove their special meaning.

Which applies to both shell and fnmatch() (where quoting is done
with \).

With your proposed change, the sh documentation has to be
changed to:

*, ? and [...] are wildcard operators and quoting can be used to
remove their special meaning, but an unquoted backslash (as can
be produced by leaving a word expansion unquoted) can also be
used to escape the following character if any (unspecified if
there's no following character), but bearing in mind that in the
pathname expansion case, it only happens for words that contain
an unquoted and unescaped (with that unquoted \ character)
wildcard operator (unspecified if [ is not matched by an
unquoted unescaped ] in the same path component)...

-- 
Stephane



Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Geoff Clare
Harald van Dijk  wrote, on 03 Jul 2019:
>
> On 03/07/2019 11:08, Geoff Clare wrote:
> >Stephane Chazelas  wrote, on 03 Jul 2019:
> >>
> >>2019-07-03 09:24:10 +0100, Geoff Clare:
> >>[...]
> >>>   [...] If any character (ordinary, shell
> >>>special, or pattern special) is quoted or (where shell quoting is not
> >>>in effect) escaped with a , that pattern shall match the
> >>>character itself. [...]
> >>[...]
> >>
> >>And again, that's an incompatible change for dash, ksh88, ksh93,
> >>pdksh, mksh, bosh, yash where:
> >>
> >>a='\*'
> >>ls -ld $a
> >>
> >>lists the files that start with \
> >
> >Which is inconsistent with find, pax, fnmatch() and glob().
> 
> I thought the new wording you proposed would require this to list the files
> that start with \, as this is a context where shell quoting is in effect,

No, it's a context where shell-quoting backslash *doesn't* work. Therefore
the backslash should act as an escape character just like in find, pax,
fnmatch() and glob().

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Geoff Clare
Stephane Chazelas  wrote, on 03 Jul 2019:
>
> 2019-07-03 11:08:57 +0100, Geoff Clare:
> [...]
> > > And again, that's an incompatible change for dash, ksh88, ksh93,
> > > pdksh, mksh, bosh, yash where:
> > > 
> > > a='\*'
> > > ls -ld $a
> > > 
> > > lists the files that start with \ 
> > 
> > Which is inconsistent with find, pax, fnmatch() and glob().
> 
> And again, that argument doesn't hold.
> 
> There's no find implementation that I know where
> 
> find . -name '"*"*'
> find . -name '"$var"*'
> 
> works the same as
> 
> printf '%s\n' "*"*
> printf '%s\n' "$var"*

The goal is consistency of backslash handling.  There was never any
intention in 1992 to require find, pax, fnmatch() and glob() to mimic
shell single quotes or double quotes, nor is there now, nor does there
need to be.

> fnamtch() didn't add \ support for consistency with the shell,
> It did add the *, ? and [ glob operators of the shell and the \
> quoting operator of the shell. \ is not a glob operator there
> but a quoting operator in its very limited syntax (compared to
> that of the shell which has other forms of quoting, and many
> forms of expansions).
> 
> Adding it back to the shell *as an extra layer* hardly helps
> with consistency and adds confusion.

The proposed resolution makes clear that it is not an extra layer, it's
an alternative for situations where the shell quoting backslash is not
available.  Thus providing consistency and reducing confusion.

> [...]
> > > a='\d*'
> > > ls -ld $a
> > > 
> > > lists the filenames that start with \d
> > 
> > Which is inconsistent with find, pax, fnmatch() and glob().
> 
> Irrelevant, pax, fnmatch() and glob() don't do variable
> expansion. find -name '$a' is unspecified but in all
> implementations, that returns the files called $a literally.

The goal is consistency of how backslash behaves in patterns.
A direct pattern in a shell word and an indirect pattern in a shell
variable (that is then used unquoted) are two places a pattern can
occur.  Arguments to find, pax, fnmatch() and glob() are others.

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Harald van Dijk

On 03/07/2019 11:08, Geoff Clare wrote:

Stephane Chazelas  wrote, on 03 Jul 2019:


2019-07-03 09:24:10 +0100, Geoff Clare:
[...]

   [...] If any character (ordinary, shell
special, or pattern special) is quoted or (where shell quoting is not
in effect) escaped with a , that pattern shall match the
character itself. [...]

[...]

And again, that's an incompatible change for dash, ksh88, ksh93,
pdksh, mksh, bosh, yash where:

a='\*'
ls -ld $a

lists the files that start with \


Which is inconsistent with find, pax, fnmatch() and glob().


I thought the new wording you proposed would require this to list the 
files that start with \, as this is a context where shell quoting is in 
effect, so the use of backslash as an escape character is not supported 
and it just matches itself. If that is not what you were trying to say 
with the new wording, it is not clear to me what the intent is.


Cheers,
Harald van Dijk



Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Stephane Chazelas
2019-07-03 11:08:57 +0100, Geoff Clare:
[...]
> > And again, that's an incompatible change for dash, ksh88, ksh93,
> > pdksh, mksh, bosh, yash where:
> > 
> > a='\*'
> > ls -ld $a
> > 
> > lists the files that start with \ 
> 
> Which is inconsistent with find, pax, fnmatch() and glob().

And again, that argument doesn't hold.

There's no find implementation that I know where

find . -name '"*"*'
find . -name '"$var"*'

works the same as

printf '%s\n' "*"*
printf '%s\n' "$var"*

even though that's currently allowed by the spec. And I don't
expect we want to go there. And if we go there, I don't expect we
would want to also add back those to the shell as a second level
of evaluation (like in pattern='"$var"*'; ls -- $pattern).

fnamtch() didn't add \ support for consistency with the shell,
It did add the *, ? and [ glob operators of the shell and the \
quoting operator of the shell. \ is not a glob operator there
but a quoting operator in its very limited syntax (compared to
that of the shell which has other forms of quoting, and many
forms of expansions).

Adding it back to the shell *as an extra layer* hardly helps
with consistency and adds confusion. But more importantly would
break backward compatibility in most shells. 

[...]
> > a='\d*'
> > ls -ld $a
> > 
> > lists the filenames that start with \d
> 
> Which is inconsistent with find, pax, fnmatch() and glob().

Irrelevant, pax, fnmatch() and glob() don't do variable
expansion. find -name '$a' is unspecified but in all
implementations, that returns the files called $a literally.

> > And in ksh93
> > 
> > a='\d*'
> > case string in $a)
> > 
> > matches on strings that start with digits.
> 
> Which has never been allowed by any possible interpretation of the standard.

But would be once bug 1234 is fixed properly by allowing both
the most common behaviour and that of bash.


> > I still don't understand why you want to specify a behaviour
> > that is not present in any shell (but one), that would break
> > backward compatibility, that is not needed, that would make the
> > syntax of the shell and the text of the spec more confusing.
> 
> We know you don't get it; you've told us several times already.
> Repeating it more times is not going to achieve anything and will just
> waste everybody's time.
[...]

We have diverging views. Bug 1234 is about saying that your view
is wrong. If you don't agree, you can close that bug as "won't
fix" and be done with it.

But AFAICT, Eric's and Joerg's views at least are currently
closer to mine than to yours.

-- 
Stephane



Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Harald van Dijk

On 03/07/2019 09:24, Geoff Clare wrote:

Harald van Dijk  wrote, on 02 Jul 2019:



That's not because the word "unquoted" is used, which only applies to shell
quoting, that's because 2.13.1 contains "All of the requirements and effects
of quoting on ordinary, shell special, and special pattern characters shall
apply to escaping in this context", which specifies that quoting and other
escaping have the same effect.


So what's the problem?  The text that you complained about in my
proposed resolution is in 2.13.1, so is covered by this.


Let's get back to the wording you proposed.


   [...] If any character (ordinary, shell
special, or pattern special) is quoted, using either shell quoting
or (where shell quoting is not in effect) a  escape, that
pattern shall match the character itself. [...]


This wording wrongly claims that where shell quoting is not in effect, a
 escape quotes the next character. It does not just say that
character is treated as if it were quoted like the current text says, it
says it *is* quoted.


That's extremely picky, but I take your point. Here's an alternative that
I think fixes the problem:

   [...] If any character (ordinary, shell
special, or pattern special) is quoted or (where shell quoting is not
in effect) escaped with a , that pattern shall match the
character itself. [...]


Thanks, that looks like a proper fix for that issue.

Cheers,
Harald van Dijk



Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Geoff Clare
Joerg Schilling  wrote, on 03 Jul 2019:
>
> Geoff Clare  wrote:
> 
> > Joerg Schilling  wrote, on 03 Jul 2019:
> 
> > > Do you like to say that pax behaves inconsistent to ls?
> >
> > The inconsistentcy has nothing to do with ls.  It's with how those
> > shells interpret the (indirect) pattern \* compared to how find, pax,
> > fnmatch() and glob() (and the shell itself when it's a direct pattern)
> > interpret it.
> 
> It seems that you missinterpret that effect.
> 
> pax is not a shell and ls does not include own pattern matching.
> 
> You thus cannot compare the behavior of these programs with each other or 
> with 
> a shell.

Huh?

find, pax, fnmatch() and glob() all do pattern matching as described in
XCU 2.13.  The shell is supposed to as well.

I already said it has nothing to do with ls.

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Joerg Schilling
Geoff Clare  wrote:

> Joerg Schilling  wrote, on 03 Jul 2019:

> > Do you like to say that pax behaves inconsistent to ls?
>
> The inconsistentcy has nothing to do with ls.  It's with how those
> shells interpret the (indirect) pattern \* compared to how find, pax,
> fnmatch() and glob() (and the shell itself when it's a direct pattern)
> interpret it.

It seems that you missinterpret that effect.

pax is not a shell and ls does not include own pattern matching.

You thus cannot compare the behavior of these programs with each other or with 
a shell.

Jörg

-- 
 EMail:jo...@schily.net(home) Jörg Schilling D-13353 Berlin
joerg.schill...@fokus.fraunhofer.de (work) Blog: http://schily.blogspot.com/
 URL: http://cdrecord.org/private/ http://sf.net/projects/schilytools/files/'



Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Geoff Clare
Joerg Schilling  wrote, on 03 Jul 2019:
>
> Geoff Clare  wrote:
> 
> > Stephane Chazelas  wrote, on 03 Jul 2019:
> > > And again, that's an incompatible change for dash, ksh88, ksh93,
> > > pdksh, mksh, bosh, yash where:
> > > 
> > > a='\*'
> > > ls -ld $a
> > > 
> > > lists the files that start with \ 
> >
> > Which is inconsistent with find, pax, fnmatch() and glob().
> 
> Do you like to say that pax behaves inconsistent to ls?

The inconsistentcy has nothing to do with ls.  It's with how those
shells interpret the (indirect) pattern \* compared to how find, pax,
fnmatch() and glob() (and the shell itself when it's a direct pattern)
interpret it.

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Joerg Schilling
Geoff Clare  wrote:

> Stephane Chazelas  wrote, on 03 Jul 2019:
> > And again, that's an incompatible change for dash, ksh88, ksh93,
> > pdksh, mksh, bosh, yash where:
> > 
> > a='\*'
> > ls -ld $a
> > 
> > lists the files that start with \ 
>
> Which is inconsistent with find, pax, fnmatch() and glob().

Do you like to say that pax behaves inconsistent to ls?

Jörg

-- 
 EMail:jo...@schily.net(home) Jörg Schilling D-13353 Berlin
joerg.schill...@fokus.fraunhofer.de (work) Blog: http://schily.blogspot.com/
 URL: http://cdrecord.org/private/ http://sf.net/projects/schilytools/files/'



Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Geoff Clare
Stephane Chazelas  wrote, on 03 Jul 2019:
>
> 2019-07-03 09:24:10 +0100, Geoff Clare:
> [...]
> >   [...] If any character (ordinary, shell
> >special, or pattern special) is quoted or (where shell quoting is not
> >in effect) escaped with a , that pattern shall match the
> >character itself. [...]
> [...]
> 
> And again, that's an incompatible change for dash, ksh88, ksh93,
> pdksh, mksh, bosh, yash where:
> 
> a='\*'
> ls -ld $a
> 
> lists the files that start with \ 

Which is inconsistent with find, pax, fnmatch() and glob().

> Or zshsh where
> 
> a='\d*'
> ls -ld $a
> 
> lists the filenames that start with \d

Which is inconsistent with find, pax, fnmatch() and glob().

> And in ksh93
> 
> a='\d*'
> case string in $a)
> 
> matches on strings that start with digits.

Which has never been allowed by any possible interpretation of the standard.

> I still don't understand why you want to specify a behaviour
> that is not present in any shell (but one), that would break
> backward compatibility, that is not needed, that would make the
> syntax of the shell and the text of the spec more confusing.

We know you don't get it; you've told us several times already.
Repeating it more times is not going to achieve anything and will just
waste everybody's time.

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



Re: [1003.1(2016)/Issue7+TC2 0001234]: in most shells, backslash doesn't have two meaning wrt pattern matching

2019-07-03 Thread Geoff Clare
Harald van Dijk  wrote, on 02 Jul 2019:
>
> >>That's not because the word "unquoted" is used, which only applies to shell
> >>quoting, that's because 2.13.1 contains "All of the requirements and effects
> >>of quoting on ordinary, shell special, and special pattern characters shall
> >>apply to escaping in this context", which specifies that quoting and other
> >>escaping have the same effect.
> >
> >So what's the problem?  The text that you complained about in my
> >proposed resolution is in 2.13.1, so is covered by this.
> 
> Let's get back to the wording you proposed.
> 
> >   [...] If any character (ordinary, shell
> >special, or pattern special) is quoted, using either shell quoting
> >or (where shell quoting is not in effect) a  escape, that
> >pattern shall match the character itself. [...]
> 
> This wording wrongly claims that where shell quoting is not in effect, a
>  escape quotes the next character. It does not just say that
> character is treated as if it were quoted like the current text says, it
> says it *is* quoted.

That's extremely picky, but I take your point. Here's an alternative that
I think fixes the problem:

  [...] If any character (ordinary, shell
   special, or pattern special) is quoted or (where shell quoting is not
   in effect) escaped with a , that pattern shall match the
   character itself. [...]

-- 
Geoff Clare 
The Open Group, Apex Plaza, Forbury Road, Reading, RG1 1AX, England



[1003.1(2016)/Issue7+TC2 0001265]: Knock-on effects of Issue 7 change to XCU 2.8.1

2019-07-03 Thread Austin Group Bug Tracker


A NOTE has been added to this issue. 
== 
http://austingroupbugs.net/view.php?id=1265 
== 
Reported By:geoffclare
Assigned To:
== 
Project:1003.1(2016)/Issue7+TC2
Issue ID:   1265
Category:   Shell and Utilities
Type:   Error
Severity:   Objection
Priority:   normal
Status: New
Name:   Geoff Clare 
Organization:   The Open Group 
User Reference:  
Section:2.14 (dot, shift, trap) 
Page Number:2393,2416,2421 
Line Number:76558,77394,77559 
Interp Status:  --- 
Final Accepted Text: 
== 
Date Submitted: 2019-07-02 11:08 UTC
Last Modified:  2019-07-03 06:24 UTC
== 
Summary:Knock-on effects of Issue 7 change to XCU 2.8.1
== 

-- 
 (0004469) shware_systems (reporter) - 2019-07-03 06:24
 http://austingroupbugs.net/view.php?id=1265#c4469 
-- 
No, I will not consider those... They are regular utilities, not special
built-ins, that allow the application to interpret non-success
appropriately, as fatal, warning, or informative, as part of failure
recovery, because the shell shall not exit. They are still considered
failures, for the boolean question "Did the utility succeed or not?", that
applies for "shall exit" now with special built-ins. 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2019-07-02 11:08 geoffclare New Issue
2019-07-02 11:08 geoffclare Name  => Geoff Clare 
2019-07-02 11:08 geoffclare Organization  => The Open Group  
2019-07-02 11:08 geoffclare Section   => 2.14 (dot, shift,
trap)
2019-07-02 11:08 geoffclare Page Number   => 2393,2416,2421  
2019-07-02 11:08 geoffclare Line Number   => 76558,77394,77559
2019-07-02 11:08 geoffclare Interp Status => --- 
2019-07-02 14:50 chet_ramey Note Added: 0004462  
2019-07-02 15:50 shware_systems Note Added: 0004463  
2019-07-02 15:57 shware_systems Note Edited: 0004463 
2019-07-02 16:19 geoffclare Note Added: 0004464  
2019-07-02 17:37 shware_systems Note Added: 0004465  
2019-07-02 17:53 shware_systems Note Edited: 0004465 
2019-07-02 18:17 chet_ramey Note Added: 0004466  
2019-07-02 20:00 shware_systems Note Added: 0004467  
2019-07-03 00:06 kreNote Added: 0004468  
2019-07-03 06:24 shware_systems Note Added: 0004469  
==