diff options
author | Pádraig Brady <P@draigBrady.com> | 2015-11-03 11:07:06 +0000 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2015-11-04 23:30:15 +0000 |
commit | 697b8ce26549cceffa8745a1dc0f13654173c575 (patch) | |
tree | 8abc475a2a9ef4c028a45dd5d32c9a6f361be84a /tests | |
parent | 7549be4af7e8ac9a088927c35a011da835968b9f (diff) | |
download | coreutils-697b8ce26549cceffa8745a1dc0f13654173c575.tar.xz |
ls: avoid redundant processing when already escaping
This is mainly noticeable when the multi-byte code
within ls.c is triggered by multi-byte quotes.
$ seq 200000 | xargs touch
$ time ls-old -U --quoting=locale --hide-control-chars >/dev/null
real 0m0.483s
$ time ls-new -U --quoting=locale --hide-control-chars >/dev/null
real 0m0.430s
* src/ls.c (quote_name): Avoid rescanning the output looking for
unprintable chars when we know the quoting mode already escapes them.
* tests/misc/ls-misc.pl: Add tests for all quoting modes, with and
without -q, to verify this assumption.
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/misc/ls-misc.pl | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/tests/misc/ls-misc.pl b/tests/misc/ls-misc.pl index 8b97c50f0..d3897737e 100755 --- a/tests/misc/ls-misc.pl +++ b/tests/misc/ls-misc.pl @@ -132,13 +132,25 @@ my @Tests = ['q-q', '-q', $q_bell, {OUT => "q?\n"}], ['q-Q', '-Q', $q_bell, {OUT => "\"q\\a\"\n"}], - ['q-lit-q', '--quoting=literal -q', $q_bell, {OUT => "q?\n"}], - ['q-qs-lit', '--quoting=literal', $q_bell, {OUT => "q\a\n"}], - ['q-qs-sh', '--quoting=shell', $q_bell, {OUT => "q\a\n"}], - ['q-qs-sh-a', '--quoting=shell-always', $q_bell, {OUT => "'q\a'\n"}], - ['q-qs-sh-e', '--quoting=shell-escape', $q_bell, {OUT => "'q'\$'\\a'\n"}], - ['q-qs-c', '--quoting=c', $q_bell, {OUT => "\"q\\a\"\n"}], - ['q-qs-esc', '--quoting=escape', $q_bell, {OUT => "q\\a\n"}], + ['q-qs-lit', '--quoting=literal', $q_bell, {OUT => "q\a\n"}], + ['q-qs-sh', '--quoting=shell', $q_bell, {OUT => "q\a\n"}], + ['q-qs-sh-a', '--quoting=shell-always',$q_bell, {OUT => "'q\a'\n"}], + ['q-qs-sh-e', '--quoting=shell-escape',$q_bell, {OUT => "'q'\$'\\a'\n"}], + ['q-qs-c', '--quoting=c', $q_bell, {OUT => "\"q\\a\"\n"}], + ['q-qs-esc', '--quoting=escape', $q_bell, {OUT => "q\\a\n"}], + ['q-qs-loc', '--quoting=locale', $q_bell, {OUT => "'q\\a'\n"}], + ['q-qs-cloc', '--quoting=clocale', $q_bell, {OUT => "\"q\\a\"\n"}], + + ['q-qs-lit-q', '--quoting=literal -q', $q_bell, {OUT => "q?\n"}], + ['q-qs-sh-q', '--quoting=shell -q', $q_bell, {OUT => "q?\n"}], + ['q-qs-sh-a-q', '--quoting=shell-al -q', $q_bell, {OUT => "'q?'\n"}], + ['q-qs-sh-e-q', '--quoting=shell-escape -q', + $q_bell, {OUT => "'q'\$'\\a'\n"}], + ['q-qs-c-q', '--quoting=c -q', $q_bell, {OUT => "\"q\\a\"\n"}], + ['q-qs-esc-q', '--quoting=escape -q', $q_bell, {OUT => "q\\a\n"}], + ['q-qs-loc-q', '--quoting=locale -q', $q_bell, {OUT => "'q\\a'\n"}], + ['q-qs-cloc-q', '--quoting=clocale -q', $q_bell, {OUT => "\"q\\a\"\n"}], + ['q-qs-c-1', '--quoting=c', {IN => {"t\004" => ''}}, {OUT => "\"t\\004\"\n"}], |