summaryrefslogtreecommitdiffstats
path: root/stream.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-06-21 19:32:41 -0700
committerKaz Kylheku <kaz@kylheku.com>2019-06-21 19:32:41 -0700
commitf2afb365b4a068e2f0ec8cbe3acb252418bff925 (patch)
tree0d6ff12a9b73ebcb93e3231b946a870fdee1d4d0 /stream.c
parent1b95abb838e3309e814a874996e49c5003bade0d (diff)
downloadtxr-f2afb365b4a068e2f0ec8cbe3acb252418bff925.tar.gz
txr-f2afb365b4a068e2f0ec8cbe3acb252418bff925.tar.bz2
txr-f2afb365b4a068e2f0ec8cbe3acb252418bff925.zip
base64: integrate with buffers.
* filter.c (base64_encode): Handle an object of either string or buffer type by using make_byte_input_stream. (base64_decode_buf): New function. (filter_init): Register base64-decode-buf intrinsic. * filter.h (base64_decode_buf): Declared. * stream.c (make_byte_input_stream): New function. * stream.h (make_byte_input_stream): Declared. * txr.1: Updated.
Diffstat (limited to 'stream.c')
-rw-r--r--stream.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/stream.c b/stream.c
index 666e0c30..027c1c94 100644
--- a/stream.c
+++ b/stream.c
@@ -4588,6 +4588,23 @@ val path_cat(val dir_name, val base_name)
return scat(lit("/"), dir_name, base_name, nao);
}
+val make_byte_input_stream(val obj)
+{
+ val self = lit("make-byte-input-stream");
+
+ switch (type(obj)) {
+ case LIT:
+ case STR:
+ case LSTR:
+ return make_string_byte_input_stream(obj);
+ case BUF:
+ return make_buf_stream(obj);
+ default:
+ uw_throwf(file_error_s, lit("~a: ~s is neither a string nor buffer"),
+ self, obj, nao);
+ }
+}
+
void stream_init(void)
{
prot1(&ap_regex);