mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-30 04:22:44 +00:00
sed: fix commandline-given expression when -e is not used
Make explicit sed commands (first on commandline) behave the same
as those given with -e.
Without this patch the following two commands behave differently,
the second one being wrong:
echo ab | sed -e $'1 i\\\n--'
echo ab | sed $'1 i\\\n--'
Reviewed by: 0mp, des, kevans
Sponsored by: Klara, Inc.
(cherry picked from commit 0552fdc62c
)
This commit is contained in:
parent
9431091ee0
commit
3f309e9531
@ -148,10 +148,8 @@ main(int argc, char *argv[])
|
||||
break;
|
||||
case 'e':
|
||||
eflag = 1;
|
||||
if ((temp_arg = malloc(strlen(optarg) + 2)) == NULL)
|
||||
err(1, "malloc");
|
||||
strcpy(temp_arg, optarg);
|
||||
strcat(temp_arg, "\n");
|
||||
if (asprintf(&temp_arg, "%s\n", optarg) == -1)
|
||||
err(1, "asprintf");
|
||||
add_compunit(CU_STRING, temp_arg);
|
||||
break;
|
||||
case 'f':
|
||||
@ -184,7 +182,9 @@ main(int argc, char *argv[])
|
||||
|
||||
/* First usage case; script is the first arg */
|
||||
if (!eflag && !fflag && *argv) {
|
||||
add_compunit(CU_STRING, *argv);
|
||||
if (asprintf(&temp_arg, "%s\n", *argv) == -1)
|
||||
err(1, "asprintf");
|
||||
add_compunit(CU_STRING, temp_arg);
|
||||
argv++;
|
||||
}
|
||||
|
||||
|
@ -147,6 +147,18 @@ bracket_y_body()
|
||||
echo 'bra[ke]' | sed 'y[\[][ct['
|
||||
}
|
||||
|
||||
atf_test_case minus_e
|
||||
minus_e_head()
|
||||
{
|
||||
atf_set "descr" "Verify that -e and implicit arg do the same thing"
|
||||
}
|
||||
minus_e_body()
|
||||
{
|
||||
printf "ab\n" > a
|
||||
atf_check -o 'inline:--\nab\n' sed -e $'1 i\\\n--' a
|
||||
atf_check -o 'inline:--\nab\n' sed $'1 i\\\n--' a
|
||||
}
|
||||
|
||||
atf_init_test_cases()
|
||||
{
|
||||
atf_add_test_case inplace_command_q
|
||||
@ -156,4 +168,5 @@ atf_init_test_cases()
|
||||
atf_add_test_case commands_on_stdin
|
||||
atf_add_test_case hex_subst
|
||||
atf_add_test_case bracket_y
|
||||
atf_add_test_case minus_e
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user