Date: Tue, 24 Apr 2001 16:29:36 -0700 From: Dima Dorfman <dima@unixfreak.org> To: Garance A Drosihn <drosih@rpi.edu> Cc: freebsd-current@FreeBSD.ORG Subject: Re: cp -d dir patch for review (or 'xargs'?) Message-ID: <20010424232937.1ACA13E2A@bazooka.unixfreak.org> In-Reply-To: <p05100c04b709061b102a@[128.113.24.47]>; from drosih@rpi.edu on "Sun, 22 Apr 2001 19:01:40 -0400"
next in thread | previous in thread | raw e-mail | index | archive | help
Garance A Drosihn <drosih@rpi.edu> writes:
> At 1:19 PM -0700 4/21/01, Dima Dorfman wrote:
> >Does that mean everyone is blind and missed my arrogant
> >cross-post of the amazingly short patch to do this, or
> >are we just interested in discussing it and not testing
> >the implementation? ;-)
>
> Well, I'm in the middle of a massive reorganization of
> all my machines at home (to fit in a new G4 Cube!), so
> I'm not paying as much attention to this as I would like.
> I think it's really great that Dima has volunteered to do
> the work... :-)
>
> From what I have been following, you had one patch to add
> the '-I' and '-i' options, and a different patch to add
> the newly proposed '-Y' option. Right?
No, not quite. It's the same patch. The second one just has the 'Y'
option renamed to 'I' because I thought they did the same thing: they
don't.
>
> The '-I' option is of interest because it is used in some
> other OS's, and is even defined in some standards, such as
> the SingleUnixSpec. From that:
>
> -I replstr
> Insert mode: utility will be executed for each line from
> standard input, taking the entire line as a single argument,
> inserting it in arguments for each occurrence of replstr.
> A maximum of five arguments in arguments can each contain
> one or more instances of replstr. Any blank characters at
> the beginning of each line are ignored. Constructed arguments
> cannot grow larger than 255 bytes. Option -x is forced on.
>
> I think that if we're going to add a '-I', then we should
> follow that description. Note that '-I', by definition,
> forces '-n 1'. It will always pick up only one file from
> the input to xargs per command that xarg will generate.
> It allows things like:
Adding support for 'I' the way it's described above wouldn't be a
trivial as it was to add 'Y'. The latter adds about 15 lines, while
the former may involve some restructuring of the code.
Xargs compiles the arguments to <utility> as an array of pointers. It
also has assumptions that argv is only touched in the begining. It
wasn't a problem for -Y since it doesn't support the replstr being
embedded in an argument (e.g., for a replstr of "{}", "something{}"
will not work as one arugment, only "{}" will), and it didn't have to
touch argv more than twice (I just added a small loop before all
invocations of run()). With -I, it'd probably be necessary to put a
large chuck of what is now main() inside a loop. It's not exactly
rocket science, but not something I can whip up in an hour, either.
I'll see what I can do probably later this week.
Dima Dorfman
dima@unixfreak.org
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010424232937.1ACA13E2A>
