Subject: bug#13120: Not quite a bug, but ...

From: Pádraig Brady <[email-masked]>
Date: Sun, 09 Dec 2012 12:34:44 +0000

On 12/07/2012 08:23 PM, Todd Shandelman wrote:
> Hi,  [email-masked]  -
>
> Not quite a bug, but why does the same option, essentially, have two very
> different names in the 'expand' and 'unexpand'  utilities?
>
> This is confusing and hampers convenient usage.
>
> I am referring to* --initial* in the one case and* --first-only* in the
> other.
>
> See below.
>
> Or what am I missing?

Yes that is inconsistent.
Interestingly the POSIX defined expand and unexpand are inconsistent
in relation to this to start with.

unexpand only processes leading blanks by default, but
expand processes all blanks by default.

So unexpand needs the -a option to process all blanks,
and expand needs the -i, --initial option to process only leading blanks.

Given the above you might think that the --first-only option to unexpand
is redundant.  However -a is implied by -t (as per POSIX), therefore
to really limit to initial blanks, you need this option.

So as for naming.  I agree that --first-only is inconsistent.
It's also a bit ambiguous. Does it mean only the first tab is written,
or all leading blanks are processed.  Now deprecating --first-only
for the more consistent --initial has some cost.  For example
it would break part of my FSlint program:
http://code.google.com/p/fslint/source/browse/trunk/fslint/supprt/rmlint/fix_ws.sh
Also, I see busybox copied --first-only into its unexpand implementation.
But I guess to be forward looking --first-only should be deprecated
in favor of --initial?

thanks,
Pádraig.