diff options
author | Pádraig Brady <P@draigBrady.com> | 2015-11-01 18:53:26 +0000 |
---|---|---|
committer | Pádraig Brady <P@draigBrady.com> | 2015-11-04 23:30:14 +0000 |
commit | 08e8fd7e38f2dae7c69c54eb22d508b6517e66e5 (patch) | |
tree | 63d021e305cd93bea445f9484fe8b3446dda2c3d /cfg.mk | |
parent | 1e8f9afac53a628dbc64e62bea53eb2da29c47fa (diff) | |
download | coreutils-08e8fd7e38f2dae7c69c54eb22d508b6517e66e5.tar.xz |
all: avoid quoting file names when possible
Quote file names using the "shell-escape" or "shell-escape-always"
methods, which quote as appropriate for most shells,
and better support copy and paste of presented names.
The "always" variant is used when the file name is
embedded in an error message with surrounding spaces.
* cfg.mk (sc_error_shell_quotes): A new syntax check rule
to suggest quotef() where appropriate.
(sc_error_shell_always_quotes): Likewise for quoteaf().
* src/system.h (quotef): A new define to apply shell quoting
when needed. I.E. when shell character or ':' is present.
(quoteaf): Likewise, but always quote.
* src/*.c: Use quotef() and quoteaf() rather than quote()
where appropriate.
* tests/: Adjust accordingly.
Diffstat (limited to 'cfg.mk')
-rw-r--r-- | cfg.mk | 31 |
1 files changed, 31 insertions, 0 deletions
@@ -187,6 +187,37 @@ sc_error_quotes: exit 1; } \ || : +# Files in src/ should quote all file names in error() output +# using quotef(), to provide quoting only when necessary, +# but also provide better support for copy and paste when used. +sc_error_shell_quotes: + @cd $(srcdir)/src && \ + { GIT_PAGER= git grep -E \ + 'error \(.*%s[:"], .*(name|file)[^"]*\);$$' *.c; \ + GIT_PAGER= git grep -E \ + ' quote[ _].*file' *.c; } \ + | grep -Ev '(quotef|q[^ ]*name)' \ + && { echo '$(ME): '"Use quotef() for colon delimited names" 1>&2; \ + exit 1; } \ + || : + +# Files in src/ should quote all file names in error() output +# using quoteaf() when the name is separated with spaces, +# to distinguish the file name at issue and +# to provide better support for copy and paste. +sc_error_shell_always_quotes: + @cd $(srcdir)/src && GIT_PAGER= git grep -E \ + 'error \(.*[^:] %s[ "].*, .*(name|file)[^"]*\);$$' \ + *.c | grep -Ev '(quoteaf|q[^ ]*name)' \ + && { echo '$(ME): '"Use quoteaf() for space delimited names" 1>&2; \ + exit 1; } \ + || : + @cd $(srcdir)/src && GIT_PAGER= git grep -E -A1 \ + 'error \([^%]*[^:] %s[ "]' *.c | grep 'quotef' \ + && { echo '$(ME): '"Use quoteaf() for space delimited names" 1>&2; \ + exit 1; } \ + || : + sc_sun_os_names: @grep -nEi \ 'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \ |