diff options
author | Mark Edgar | 2020-05-30 19:05:46 +0200 |
---|---|---|
committer | Denys Vlasenko | 2020-06-09 15:40:49 +0200 |
commit | b2ab920716f640cbaaf486512ba177f4e0b597c5 (patch) | |
tree | ae3c6cb964bedf4f59f917c93172f8c9197af0d2 /coreutils/expand.c | |
parent | 9b4a9d96b89f06355ad9551d782d34506699aac8 (diff) | |
download | busybox-b2ab920716f640cbaaf486512ba177f4e0b597c5.zip busybox-b2ab920716f640cbaaf486512ba177f4e0b597c5.tar.gz |
unexpand: correct behavior for --first-only --tabs=4
Prior to the patch, both -f and --first-only are in all cases either
no-op or ignored.
Without --tabs, --first-only is the default so specifying it is a no-op.
With --tabs, --all is implied, and --first-only is intended to reset this.
function old new delta
expand_main 690 694 +4
Signed-off-by: Mark Edgar <medgar123@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'coreutils/expand.c')
-rw-r--r-- | coreutils/expand.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/coreutils/expand.c b/coreutils/expand.c index 4fa974d..5f59939 100644 --- a/coreutils/expand.c +++ b/coreutils/expand.c @@ -160,7 +160,7 @@ static void unexpand(FILE *file, unsigned tab_size, unsigned opt) putchar('\t'); } - if ((opt & OPT_INITIAL) && ptr != line) { + if (!(opt & OPT_ALL) && ptr != line) { printf("%*s%s", len, "", ptr); break; } @@ -207,13 +207,13 @@ int expand_main(int argc UNUSED_PARAM, char **argv) "ft:a" "\0" "ta" /* -t NUM sets -a */, - "first-only\0" No_argument "i" + "first-only\0" No_argument "f" "tabs\0" Required_argument "t" "all\0" No_argument "a" , &opt_t ); - /* -f --first-only is the default */ - if (!(opt & OPT_ALL)) opt |= OPT_INITIAL; + /* -t implies -a, but an explicit -f overrides */ + if (opt & OPT_INITIAL) opt &= ~OPT_ALL; } tab_size = xatou_range(opt_t, 1, UINT_MAX); |