mirror of
git://git.gnu.org.ua/wordsplit.git
synced 2025-04-25 16:19:54 +03:00
Return single empty string on empty input in WRDSF_NOSPLIT mode
* src/wordsplit.c (wordsplit_finish): Make sure at one non-null argument is always returned in WRDSF_NOSPLIT mode. * tests/wordsplit.at: Add new test.
This commit is contained in:
parent
cfb04c02a5
commit
65d0759a8b
2 changed files with 36 additions and 16 deletions
|
@ -805,25 +805,35 @@ wordsplit_finish (struct wordsplit *wsp)
|
|||
n++;
|
||||
}
|
||||
|
||||
if (n == 0 && (wsp->ws_flags & WRDSF_INCREMENTAL))
|
||||
if (n == 0)
|
||||
{
|
||||
/* The loop above have eliminated all nodes. Restart the
|
||||
processing, if there's any input left. */
|
||||
if (wsp->ws_endp < wsp->ws_len)
|
||||
/* The loop above have eliminated all nodes. */
|
||||
if (wsp->ws_flags & WRDSF_INCREMENTAL)
|
||||
{
|
||||
int rc;
|
||||
if (wsp->ws_flags & WRDSF_SHOWDBG)
|
||||
wsp->ws_debug (_("Restarting"));
|
||||
rc = wordsplit_process_list (wsp, skip_delim (wsp));
|
||||
if (rc)
|
||||
return rc;
|
||||
/* Restart the processing, if there's any input left. */
|
||||
if (wsp->ws_endp < wsp->ws_len)
|
||||
{
|
||||
int rc;
|
||||
if (wsp->ws_flags & WRDSF_SHOWDBG)
|
||||
wsp->ws_debug (_("Restarting"));
|
||||
rc = wordsplit_process_list (wsp, skip_delim (wsp));
|
||||
if (rc)
|
||||
return rc;
|
||||
}
|
||||
else
|
||||
{
|
||||
wsp->ws_error = WRDSE_EOF;
|
||||
return WRDSE_EOF;
|
||||
}
|
||||
goto again;
|
||||
}
|
||||
else
|
||||
|
||||
if (wsp->ws_flags & WRDSF_NOSPLIT)
|
||||
{
|
||||
wsp->ws_error = WRDSE_EOF;
|
||||
return WRDSE_EOF;
|
||||
if (wordsplit_add_segm (wsp, 0, 0, _WSNF_EMPTYOK))
|
||||
return wsp->ws_errno;
|
||||
n = 1;
|
||||
}
|
||||
goto again;
|
||||
}
|
||||
|
||||
if (alloc_space (wsp, n + 1))
|
||||
|
@ -2412,6 +2422,7 @@ wordsplit_process_list (struct wordsplit *wsp, size_t start)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
return wsp->ws_errno;
|
||||
}
|
||||
|
||||
|
|
|
@ -262,7 +262,7 @@ TOTAL: 2
|
|||
[],
|
||||
[FOO=bar BAZ=qux])
|
||||
|
||||
TESTWSP([nosplit with expansion],[wsp-var-nosplit],[nosplit],
|
||||
TESTWSP([nosplit with variable expansion],[wsp-var-nosplit],[nosplit],
|
||||
[a $FOO test],
|
||||
[NF: 1
|
||||
0: "a variable expansion test\n"
|
||||
|
@ -271,7 +271,7 @@ TOTAL: 1
|
|||
[],
|
||||
[FOO="variable expansion"])
|
||||
|
||||
TESTWSP([nosplit without expansion],[],[nosplit novar],
|
||||
TESTWSP([nosplit without variable expansion],[],[nosplit novar],
|
||||
[a $FOO test],
|
||||
[NF: 1
|
||||
0: "a $FOO test\n"
|
||||
|
@ -280,6 +280,15 @@ TOTAL: 1
|
|||
[],
|
||||
[FOO="variable expansion"])
|
||||
|
||||
TESTWSP([nosplit: empty expansion],[],[nosplit trimnl],
|
||||
[$FOO],
|
||||
[NF: 1
|
||||
0: ""
|
||||
TOTAL: 1
|
||||
],
|
||||
[],
|
||||
[FOO=""])
|
||||
|
||||
TESTWSP([default value (defined)],[],[],
|
||||
[${FOO:-bar}],
|
||||
[NF: 1
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue