summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2016-09-11 21:02:32 -0700
committerKaz Kylheku <kaz@kylheku.com>2016-09-11 21:02:32 -0700
commit716e5255221344aaafc2c1d273832390c5ebb970 (patch)
treee4f6bd8a4033e6ece2db6a25ec6d175fcde4e35b
parentd1e0e1f15227bd01dbbfcb0a77f261d01764e408 (diff)
downloadtxr-716e5255221344aaafc2c1d273832390c5ebb970.tar.gz
txr-716e5255221344aaafc2c1d273832390c5ebb970.tar.bz2
txr-716e5255221344aaafc2c1d273832390c5ebb970.zip
Semantics change in trim-str function.
* lib.c (trim_str): Trim only newlines and blanks, not carriage returns, vertical tabs and form feeds. This is subject to the compatibility option * txr.1: Doc updated and compatibility note added.
-rw-r--r--lib.c16
-rw-r--r--txr.19
2 files changed, 18 insertions, 7 deletions
diff --git a/lib.c b/lib.c
index 61a43c01..5ca640c5 100644
--- a/lib.c
+++ b/lib.c
@@ -3916,11 +3916,19 @@ val trim_str(val str)
const wchar_t *start = c_str(str);
const wchar_t *end = start + c_num(length_str(str));
- while (start[0] && iswspace(start[0]))
- start++;
+ if (opt_compat && opt_compat <= 148) {
+ while (start[0] && iswspace(start[0]))
+ start++;
- while (end > start && iswspace(end[-1]))
- end--;
+ while (end > start && iswspace(end[-1]))
+ end--;
+ } else {
+ while (start[0] && wcschr(L" \t\n", start[0]))
+ start++;
+
+ while (end > start && wcschr(L" \t\n", end[-1]))
+ end--;
+ }
if (end == start) {
return null_string;
diff --git a/txr.1 b/txr.1
index f2e2539e..23c7bc1f 100644
--- a/txr.1
+++ b/txr.1
@@ -18632,8 +18632,7 @@ The
function produces a copy of
.meta string
from which leading and
-trailing whitespace is removed. Whitespace consists of spaces, tabs,
-carriage returns, linefeeds, vertical tabs and form feeds.
+trailing tabs, spaces and newlines are removed.
.coNP Function @ chrp
.synb
@@ -44798,7 +44797,11 @@ were executed in derived-to-base order, opposite to the
order of execution of
.code :init
handlers. Specifying 148 or earlier compatibility provides this
-old behavior.
+old behavior. Also, until version 148, the
+.code trim-str
+function stripped leading and trailing whitespace from a string
+consisting of not only spaces, tabs and newlines, but also carriage
+returns, vertical tabs and form feeds.
.IP 145
In versions 144 and 145, \*(TX opened files in text mode on Cygwin,
enabling conversion between CR-LF line endings and abstract newline