automake-ng
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Automake-NG] [PATCH 3/3] [ng] dist: do not exceed command line leng


From: Eric Blake
Subject: Re: [Automake-NG] [PATCH 3/3] [ng] dist: do not exceed command line length limits, even with many files
Date: Sat, 14 Jul 2012 14:56:38 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120615 Thunderbird/13.0.1

On 07/14/2012 12:25 PM, Stefano Lattarini wrote:

>>
>> <file command
>>
>> is portable, but
>>
>> <file { compound command; }
>>
>> is not.  That is, only simple commands allow you to position a
>> redirection before the rest of the command.  'while' is a compound
>> command, so the redirection must come last.
>>
> Quick and helpful as usual :-)  Thanks Eric.
> 
> One question though: is "<file { compound command; }" also non-portable
> if we limit ourselves to POSIX shells?

From the POSIX grammar,
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_10_02

command          : simple_command
                 | compound_command
                 | compound_command redirect_list
                 | function_definition


simple_command   : cmd_prefix cmd_word cmd_suffix
                 | cmd_prefix cmd_word
                 | cmd_prefix
                 | cmd_name cmd_suffix
                 | cmd_name

cmd_prefix       :            io_redirect
                 | cmd_prefix io_redirect
                 |            ASSIGNMENT_WORD
                 | cmd_prefix ASSIGNMENT_WORD

That is, it's hard-coded into the POSIX shell grammar that a
simple_command can start with redirections in the cmd_prefix, but a
compound_command can ONLY have redirections after the end of the
compound command, if you are being portable to POSIX.

-- 
Eric Blake   address@hidden    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]