mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-02-18 21:32:12 +02:00
truncate: ignore whitespace in --size parameters
Without this, `truncate -s '> -1' F` would truncate F to length 0, and `truncate -s " +1" F` would truncate F to 1 byte. Now, each elicits a diagnostic. * src/truncate.c: Skip leading white space in the --size option argument and any white space after one of the relative modifiers, so that the presence of a +/- modifier can be detected reliably. * tests/misc/truncate-parameters: Add tests for the above.
This commit is contained in:
committed by
Jim Meyering
parent
9396eb9037
commit
760bc6f7e7
@@ -286,6 +286,9 @@ main (int argc, char **argv)
|
||||
break;
|
||||
|
||||
case 's':
|
||||
/* skip any whitespace */
|
||||
while (isspace (*optarg))
|
||||
optarg++;
|
||||
switch (*optarg)
|
||||
{
|
||||
case '<':
|
||||
@@ -305,6 +308,9 @@ main (int argc, char **argv)
|
||||
optarg++;
|
||||
break;
|
||||
}
|
||||
/* skip any whitespace */
|
||||
while (isspace (*optarg))
|
||||
optarg++;
|
||||
if (*optarg == '+' || *optarg == '-')
|
||||
{
|
||||
if (rel_mode)
|
||||
|
||||
@@ -40,4 +40,10 @@ truncate --io-blocks --reference=file file && fail=1
|
||||
# must specify valid numbers
|
||||
truncate --size="invalid" file && fail=1
|
||||
|
||||
# spaces not significant around size
|
||||
truncate --size="> -1" file && fail=1
|
||||
truncate --size=" >1" file || fail=1 #file now 1
|
||||
truncate --size=" +1" file || fail=1 #file now 2
|
||||
test $(stat --format %s file) = 2 || fail=1
|
||||
|
||||
(exit $fail); exit $fail
|
||||
|
||||
Reference in New Issue
Block a user