summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2017-06-01 20:07:51 -0700
committerKaz Kylheku <kaz@kylheku.com>2017-06-01 20:07:51 -0700
commitae05a8f6e9dbaa6f18a0d22475ab8fafc2b56506 (patch)
treeae68309aa0ac818f18aaa0cc3b0b82bdb25b7fef
parentfe4ee294894e05042b806fa2202b47ae635dc2a7 (diff)
downloadtxr-ae05a8f6e9dbaa6f18a0d22475ab8fafc2b56506.tar.gz
txr-ae05a8f6e9dbaa6f18a0d22475ab8fafc2b56506.tar.bz2
txr-ae05a8f6e9dbaa6f18a0d22475ab8fafc2b56506.zip
mkstring char argument is optional.
* eval.c (eval_init): Update registration of mkstring intrinsic to make second argument optional. * lib.c (mkstring): Default second argument to space. * txr.1: Documentation of mkstring updated.
-rw-r--r--eval.c2
-rw-r--r--lib.c3
-rw-r--r--txr.16
3 files changed, 8 insertions, 3 deletions
diff --git a/eval.c b/eval.c
index 187273c5..d1c3cc8c 100644
--- a/eval.c
+++ b/eval.c
@@ -5927,7 +5927,7 @@ void eval_init(void)
reg_fun(intern(lit("packagep"), user_package), func_n1(packagep));
reg_fun(intern(lit("keywordp"), user_package), func_n1(keywordp));
reg_fun(intern(lit("bindable"), user_package), func_n1(bindable));
- reg_fun(intern(lit("mkstring"), user_package), func_n2(mkstring));
+ reg_fun(intern(lit("mkstring"), user_package), func_n2o(mkstring, 1));
reg_fun(intern(lit("copy-str"), user_package), func_n1(copy_str));
reg_fun(intern(lit("upcase-str"), user_package), func_n1(upcase_str));
reg_fun(intern(lit("downcase-str"), user_package), func_n1(downcase_str));
diff --git a/lib.c b/lib.c
index f1309a72..3dd2c536 100644
--- a/lib.c
+++ b/lib.c
@@ -3313,7 +3313,7 @@ val string_8bit_size(const unsigned char *str, size_t sz)
return string_own(wstr);
}
-val mkstring(val len, val ch)
+val mkstring(val len, val ch_in)
{
size_t l = if3(minusp(len),
(uw_throwf(error_s, lit("mkstring: negative size ~s specified"),
@@ -3321,6 +3321,7 @@ val mkstring(val len, val ch)
c_num(len));
wchar_t *str = chk_wmalloc(l + 1);
val s = string_own(str);
+ val ch = default_arg_strict(ch_in, chr(' '));
wmemset(str, c_chr(ch), l);
str[l] = 0;
s->st.len = len;
diff --git a/txr.1 b/txr.1
index 8a5d815e..d758e28e 100644
--- a/txr.1
+++ b/txr.1
@@ -20427,7 +20427,7 @@ ranges are immutable.
.SS* Characters and Strings
.coNP Function @ mkstring
.synb
-.mets (mkstring < length << char )
+.mets (mkstring < length <> [ char ])
.syne
.desc
The
@@ -20440,6 +20440,10 @@ with
.metn char ,
which must be a character value.
+If the optional argument
+.meta char
+is not specified, it defaults to the space character.
+
.coNP Function @ copy-str
.synb
.mets (copy-str << string )