From 64e3d5fb617dc9bf4538aecba8242fa38a3052b3 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 27 Jul 2022 06:46:04 -0700 Subject: Take advantage of substring support in regsub. * txr.c (sysroot_init): Use regsub to look for "\\" substring instead of regex. * stdlib/getopts.tl (opt-parsed convert-type): regsub for "0x" substring rather than #/0x/ regex. * stdlib/pic.tl (pic-join-oipt): regsub for "~" substring rather than #/\~/ regex. * stdlib/socket.tl (in6addr-str): regsub for "::" substring instead of #/::/ regex in two places. The double regsub there looks like a mistake; will address in another commit. --- stdlib/getopts.tl | 2 +- stdlib/pic.tl | 2 +- stdlib/socket.tl | 4 ++-- txr.c | 5 +---- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/stdlib/getopts.tl b/stdlib/getopts.tl index fb1ee007..dcfd5e21 100644 --- a/stdlib/getopts.tl +++ b/stdlib/getopts.tl @@ -130,7 +130,7 @@ (:cint (set me.arg (cond ((r^$ #/[+\-]?0x[\da-fA-F]+/ me.arg) - (int-str (regsub #/0x/ "" me.arg) 16)) + (int-str (regsub "0x" "" me.arg) 16)) ((r^$ #/[+\-]?0[0-7]+/ me.arg) (int-str me.arg 8)) ((r^$ #/[+\-]?0[\da-fA-F]+/ me.arg) diff --git a/stdlib/pic.tl b/stdlib/pic.tl index 2d05b319..c6c95bdc 100644 --- a/stdlib/pic.tl +++ b/stdlib/pic.tl @@ -114,7 +114,7 @@ ^(fmt ,`~@(if chr chr)@(len fmt)a` ,val)) (defun pic-join-opt (join-form) - (labels ((et (str) (regsub #/\~/ "~~" str))) + (labels ((et (str) (regsub "~" "~~" str))) (match-case join-form ((join @(stringp @s) (fmt `@fmt` . @args) . @rest) (pic-join-opt ^(join (fmt ,`@(et s)@fmt` ,*args) ,*rest))) diff --git a/stdlib/socket.tl b/stdlib/socket.tl index 01c328b5..7aecfc88 100644 --- a/stdlib/socket.tl +++ b/stdlib/socket.tl @@ -252,8 +252,8 @@ (set addr.prefix prefix) addr))) ((r^$ #/[\da-fA-F]*(:[\da-fA-F]*)*/ str) - (upd str (regsub #/::/ "@")) - (let* ((str-splat (regsub #/::/ "@" str)) + (upd str (regsub "::" "@")) + (let* ((str-splat (regsub "::" "@" str)) (maj-pieces (spl #\@ str-splat))) (caseql (len maj-pieces) (1 (mkaddr-full (str-to-pieces (car maj-pieces)))) diff --git a/txr.c b/txr.c index 8fab8eae..35f34212 100644 --- a/txr.c +++ b/txr.c @@ -321,13 +321,10 @@ static void sysroot_init(void) const wchar_t *psc = coerce(const wchar_t *, path_sep_chars); int share_txr_stdlib = 1; -#if HAVE_WINDOWS_H - val slash = regex_compile(lit("\\\\"), nil); -#endif protect(&prog_path, &sysroot_path, &stdlib_path, convert(val *, 0)); prog_path = get_self_path(); #if HAVE_WINDOWS_H - prog_path = regsub(slash, lit("/"), prog_path); + prog_path = regsub(lit("\\"), lit("/"), prog_path); #endif prog_dir = dir_name(prog_path); -- cgit v1.2.3