Subject: Re: bug#19377: bug#19378: [PATCH 3/4] cat, chcon, chgrp, chmod, chown, cp, du, head: support wildcards on OS/2

From: Jim Meyering <[email-masked]>
Date: Mon, 15 Dec 2014 06:59:38 -0800

On Mon, Dec 15, 2014 at 12:57 AM, Pádraig Brady <[email-masked]> wrote:
> On 15/12/14 01:15, KO Myung-Hun wrote:
>>
>>
>> Pádraig Brady wrote:
>>> forcemerge 19378 19377
>>> stop
>>>
>>> On 14/12/14 03:47, KO Myung-Hun wrote:
>>>> And ln,ls,mv,rm,tail.
>>>>
>>>> * src/cat.c (main): Expand wildcards on OS/2.
>>>> * src/chcon.c (main): Likewise.
>>>> * src/chgrp.c (main): Likewise.
>>>> * src/chmod.c (main): Likewise.
>>>> * src/chown.c (main): Likewise.
>>>> * src/cp.c (main): Likewise.
>>>> * src/du.c (main): Likewise.
>>>> * src/head.c (main): Likewise.
>>>> * src/ln.c (main): Likewise.
>>>> * src/ls.c (main): Likewise.
>>>> * src/mv.c (main): Likewise.
>>>> * src/rm.c (main): Likewise.
>>>> * src/tail.c (main): Likewise.
>>>>
>>>> Patches from coreutils 8.8 by Paul Smedley.
>>>
>>>> diff --git a/src/cat.c b/src/cat.c
>>>> index c7bb7e1..0138114 100644
>>>> --- a/src/cat.c
>>>> +++ b/src/cat.c
>>>> @@ -544,6 +544,10 @@ main (int argc, char **argv)
>>>>    bool show_tabs = false;
>>>>    int file_open_mode = O_RDONLY;
>>>>
>>>> +#ifdef __OS2__
>>>> +  _wildcard (&argc, &argv);
>>>> +#endif
>>>> +
>>>
>>> Interesing, the OS/2 shell doesn't doe the globbing.
>>
>> Ported unixy shells(sh) support it, but OS/2 default shell(CMD) does not.
>>
>>> I'm wondering about the scalability of this.
>>> Are there any facilities for dealing with arbitrary numbers
>>> of files, like with xargs for example?
>>
>> No. It always processes all files.
>>
>>> What are the practical limits of the number of files?
>>
>> It's up to a free memory.
>>
>>> Does _wildcard() exit with an error in this case?
>>>
>>
>> Call exit(255) with printing an error message.
>>
>
> While the adjustment is small, it would be better to avoid the ifdef in all programs.
> I think there is a -Zwildcard option to auto enable for all programs?
> Also is there an option to disable this expansion at runtime
> (which should be documented if available).
> For example to allow deleting a file called '*', which seems like a more likely
> occurrence on this platform.

It would be better still not to modify so many programs directly.
Can you instead add one occurrence of that ifdef in system.h,
to change the definition of the initialize_main macro that is
already used from every main program?