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>
This commit is contained in:
parent
9b4a9d96b8
commit
b2ab920716
@ -160,7 +160,7 @@ static void unexpand(FILE *file, unsigned tab_size, unsigned opt)
|
|||||||
putchar('\t');
|
putchar('\t');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((opt & OPT_INITIAL) && ptr != line) {
|
if (!(opt & OPT_ALL) && ptr != line) {
|
||||||
printf("%*s%s", len, "", ptr);
|
printf("%*s%s", len, "", ptr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -207,13 +207,13 @@ int expand_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
"ft:a"
|
"ft:a"
|
||||||
"\0"
|
"\0"
|
||||||
"ta" /* -t NUM sets -a */,
|
"ta" /* -t NUM sets -a */,
|
||||||
"first-only\0" No_argument "i"
|
"first-only\0" No_argument "f"
|
||||||
"tabs\0" Required_argument "t"
|
"tabs\0" Required_argument "t"
|
||||||
"all\0" No_argument "a"
|
"all\0" No_argument "a"
|
||||||
, &opt_t
|
, &opt_t
|
||||||
);
|
);
|
||||||
/* -f --first-only is the default */
|
/* -t implies -a, but an explicit -f overrides */
|
||||||
if (!(opt & OPT_ALL)) opt |= OPT_INITIAL;
|
if (opt & OPT_INITIAL) opt &= ~OPT_ALL;
|
||||||
}
|
}
|
||||||
tab_size = xatou_range(opt_t, 1, UINT_MAX);
|
tab_size = xatou_range(opt_t, 1, UINT_MAX);
|
||||||
|
|
||||||
|
@ -31,6 +31,39 @@ testing "unexpand case 7" "unexpand" \
|
|||||||
testing "unexpand case 8" "unexpand" \
|
testing "unexpand case 8" "unexpand" \
|
||||||
"a b\n" "" "a b\n" \
|
"a b\n" "" "a b\n" \
|
||||||
|
|
||||||
|
testcase()
|
||||||
|
{
|
||||||
|
testing "unexpand flags $*" "unexpand $*" \
|
||||||
|
"$want" "" ' a b c'
|
||||||
|
}
|
||||||
|
|
||||||
|
# tabs=8, Convert only leading sequences of blanks
|
||||||
|
want='\ta b c'
|
||||||
|
testcase
|
||||||
|
testcase -f
|
||||||
|
testcase -f -t8
|
||||||
|
testcase -t8 -f
|
||||||
|
testcase -t8 --first-only
|
||||||
|
|
||||||
|
# tabs=8, Convert all blanks
|
||||||
|
want='\ta\tb c'
|
||||||
|
testcase -a
|
||||||
|
testcase -t8
|
||||||
|
testcase -a -t8
|
||||||
|
|
||||||
|
# tabs=4, Convert all blanks
|
||||||
|
want='\t\ta\t\tb\t c'
|
||||||
|
testcase -t4
|
||||||
|
testcase -a -t4
|
||||||
|
testcase -t4 -a
|
||||||
|
|
||||||
|
# tabs=4, Convert only leading sequences of blanks
|
||||||
|
want='\t\ta b c'
|
||||||
|
testcase -t4 -f
|
||||||
|
testcase -f -t4
|
||||||
|
testcase -t4 --first-only
|
||||||
|
testcase --first-only -t4
|
||||||
|
|
||||||
test x"$CONFIG_UNICODE_SUPPORT" = x"y" \
|
test x"$CONFIG_UNICODE_SUPPORT" = x"y" \
|
||||||
&& test x"$CONFIG_UNICODE_USING_LOCALE" != x"y" \
|
&& test x"$CONFIG_UNICODE_USING_LOCALE" != x"y" \
|
||||||
&& testing "unexpand with unicode characher 0x394" "unexpand" \
|
&& testing "unexpand with unicode characher 0x394" "unexpand" \
|
||||||
|
Loading…
Reference in New Issue
Block a user