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

From: KO Myung-Hun <[email-masked]>
Date: Tue, 16 Dec 2014 11:34:28 +0900

Jim Meyering wrote:
> 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?

Good suggestion. I merged patch3 and patch4.

-- 
KO Myung-Hun

Using Mozilla SeaMonkey 2.7.2
Under OS/2 Warp 4 for Korean with FixPak #15
In VirtualBox v4.1.32 on Intel Core i7-3615QM 2.30GHz with 8GB RAM

Korean OS/2 User Community : http://www.ecomstation.co.kr

>From 585596682bcee144eb05941ba4bfd01f2f107165 Mon Sep 17 00:00:00 2001
From: KO Myung-Hun <[email-masked]>
Date: Tue, 16 Dec 2014 11:27:28 +0900
Subject: [PATCH] build: expand a response file and a wildcard on OS/2

OS/2 traditional shells(cmd) does not expand a response file(@file)
and a wildcard. Expand them in an utility itself.

* src/system.h (initialize_main): Define on OS/2. Expand a response
file and a wildcard.
---
 src/system.h | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/system.h b/src/system.h
index 8b3f768..62d5815 100644
--- a/src/system.h
+++ b/src/system.h
@@ -137,7 +137,12 @@ enum
 /* Redirection and wildcarding when done by the utility itself.
    Generally a noop, but used in particular for native VMS. */
 #ifndef initialize_main
-# define initialize_main(ac, av)
+# ifndef __OS2__
+#  define initialize_main(ac, av)
+# else
+#  define initialize_main(ac, av) \
+     do { _wildcard(ac, av); _response(ac, av); } while (0)
+# endif
 #endif
 
 #include "stat-macros.h"
-- 
1.8.5.2