diff options
author | Jim Meyering <jim@meyering.net> | 2007-07-13 18:37:16 +0200 |
---|---|---|
committer | Jim Meyering <jim@meyering.net> | 2007-07-13 18:37:16 +0200 |
commit | 916fcda554f5859ee51c4fb13031728a54d92a52 (patch) | |
tree | 43d24a71bfd2fe657ee49cf88e6228ffb55ef3ac | |
parent | d26ba897eb944b84e4af7e1744e12b98803ccc4c (diff) | |
download | coreutils-916fcda554f5859ee51c4fb13031728a54d92a52.tar.xz |
Warn about non-portable use of unescaped backslash at end of string,
and treat it as if it were escaped.
* src/tr.c (unquote): Considering that such usage would make GNU tr
from coreutils-5.2.1 and earlier *fail*, the least we can do now is
to warn about it. Solaris' tr ignores it.
* NEWS: Mention this.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | src/tr.c | 5 |
3 files changed, 14 insertions, 2 deletions
@@ -1,5 +1,12 @@ 2007-07-13 Jim Meyering <jim@meyering.net> + Warn about non-portable use of unescaped backslash at end of string, + and treat it as if it were escaped. + * src/tr.c (unquote): Considering that such usage would make GNU tr + from coreutils-5.2.1 and earlier *fail*, the least we can do now is + to warn about it. Solaris' tr ignores it. + * NEWS: Mention this. + Use proper backslash-quoting inside backticks. * configure.ac: Otherwise we run afoul of strict GNU tr: a string ending in a lone backslash would provoke a failure. @@ -12,6 +12,10 @@ GNU coreutils NEWS -*- outline -*- pr -F no longer suppresses the footer or the first two blank lines in the header. This is for compatibility with BSD and POSIX. + tr now warns about an unescaped backslash at end of string. + The tr from coreutils-5.2.1 and earlier would fail for such usage, + and Solaris' tr ignores that final byte. + ** New features Add SELinux support (FIXME: add details here) @@ -525,8 +525,9 @@ unquote (char const *s, struct E_string *es) } break; case '\0': - /* POSIX seems to require that a trailing backslash must - stand for itself. Weird. */ + error (0, 0, _("warning: an unescaped backslash " + "at end of string is not portable")); + /* POSIX is not clear about this. */ es->escaped[j] = false; i--; c = '\\'; |