summaryrefslogtreecommitdiffhomepage
path: root/coreutils
diff options
context:
space:
mode:
authorMark Edgar <medgar123@gmail.com>2020-05-30 19:05:46 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2020-06-09 15:40:49 +0200
commitb2ab920716f640cbaaf486512ba177f4e0b597c5 (patch)
treeae3c6cb964bedf4f59f917c93172f8c9197af0d2 /coreutils
parent9b4a9d96b89f06355ad9551d782d34506699aac8 (diff)
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')
-rw-r--r--coreutils/expand.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/coreutils/expand.c b/coreutils/expand.c
index 4fa974df8..5f5993921 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);