diff options
author | Daniel Shahaf <danielsh@apache.org> | 2019-12-24 18:25:09 +0000 |
---|---|---|
committer | Daniel Shahaf <danielsh@apache.org> | 2019-12-26 04:21:47 +0000 |
commit | 525faae5498adb4b4f1c0f4657b9ef71fc31c4d6 (patch) | |
tree | 296ad1d6ff074c755bce6feff6582dcae5143505 | |
parent | 8e0253af022abe9f9225352aae1088d6621a81ab (diff) | |
download | zsh-525faae5498adb4b4f1c0f4657b9ef71fc31c4d6.tar.gz zsh-525faae5498adb4b4f1c0f4657b9ef71fc31c4d6.tar.xz zsh-525faae5498adb4b4f1c0f4657b9ef71fc31c4d6.zip |
45137: zformat: Allow the specifying minimum width and a dot with an empty maximum width.
Before this commit, format specs such as '%5.s' would be printed literally. Now, they are treated as equivalent to '%5s'. The '.' character is not allowed to be used in specs, so there is no incompatibility.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | Src/Modules/zutil.c | 3 | ||||
-rw-r--r-- | Test/V13zformat.ztst | 2 |
3 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index fe3b6951c..321216c7a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2019-12-26 Daniel Shahaf <danielsh@apache.org> + * 45137: Src/Modules/zutil.c, Test/V13zformat.ztst: zformat: + Allow the specifying minimum width and a dot with an empty + maximum width. + * 45138: Src/Modules/zutil.c, Test/V13zformat.ztst: Add zformat unit tests. diff --git a/Src/Modules/zutil.c b/Src/Modules/zutil.c index de5fe8034..7d9bf05d6 100644 --- a/Src/Modules/zutil.c +++ b/Src/Modules/zutil.c @@ -797,8 +797,7 @@ static char *zformat_substring(char* instr, char **specs, char **outp, if ((*s == '.' || testit) && idigit(s[1])) { for (max = 0, s++; idigit(*s); s++) max = (max * 10) + (int) STOUC(*s) - '0'; - } - else if (testit) + } else if (*s == '.' || testit) s++; if (testit && STOUC(*s)) { diff --git a/Test/V13zformat.ztst b/Test/V13zformat.ztst index d8de2bb04..982866e13 100644 --- a/Test/V13zformat.ztst +++ b/Test/V13zformat.ztst @@ -17,12 +17,14 @@ zformat_and_print_s '%s' foo zformat_and_print_s '%5s' min zformat_and_print_s '%-5s' neg + zformat_and_print_s '%5.s' empty zformat_and_print_s '%.5s' max zformat_and_print_s '%.5s' truncated 0:basic zformat test >'foo' >'min ' >' neg' +>'empty' >'max' >'trunc' |