summaryrefslogtreecommitdiffstats
path: root/regex.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2022-07-27 06:35:41 -0700
committerKaz Kylheku <kaz@kylheku.com>2022-07-27 06:35:41 -0700
commit02bbca53efa5c2da8d671bd46e7e410ce533c846 (patch)
tree668459874a2428914f0dcaf4fd0bc87e00daf057 /regex.c
parentc04217e25e9b5aeb04ba765a66c9b1e2cc011533 (diff)
downloadtxr-02bbca53efa5c2da8d671bd46e7e410ce533c846.tar.gz
txr-02bbca53efa5c2da8d671bd46e7e410ce533c846.tar.bz2
txr-02bbca53efa5c2da8d671bd46e7e410ce533c846.zip
regsub: allow string in place of regex.
* regex.c (regsub): Use search_str if regex is a string. * txr.1: Documented.
Diffstat (limited to 'regex.c')
-rw-r--r--regex.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/regex.c b/regex.c
index 0c2d7940..b2e24b56 100644
--- a/regex.c
+++ b/regex.c
@@ -2898,9 +2898,20 @@ val regsub(val regex, val repl, val str)
} else {
val pos = zero;
val out = mkustring(zero);
+ val slen = if2(stringp(regex), length(regex));
do {
- cons_bind (find, len, search_regex(str, regex, pos, nil));
+ val find, len;
+
+ if (slen) {
+ len = slen;
+ find = search_str(str, regex, pos, nil);
+ } else {
+ cons_bind (a, d, search_regex(str, regex, pos, nil));
+ find = a;
+ len = d;
+ }
+
if (!find) {
if (pos == zero)
return str;