Mercurial > octave
diff liboctave/util/oct-base64.cc @ 28769:903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
* liboctave/util/oct-base64.cc, oct-base64.h (base64_decode_bytes): New function
to decode base64 encoded strings into bytes.
* libinterp/corefcn/data.cc (F__base64_decode_bytes__): New internal function
to decode base64 encoded strings into bytes.
* scripts/+matlab/+net/base64decode.m, scripts/+matlab/+net/base64encode.m: Add
Matlab compatible wrappers for base64_encode and __base64_decode_bytes__.
* scripts/+matlab/+net/module.mk: Add new file.
* scripts/module.mk: Include new module.mk file.
* doc/interpreter/system.txi: Add documentation for new functions to manual.
* NEWS: Announce new functions.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Tue, 22 Sep 2020 15:59:00 +0200 |
parents | bd51beb6205e |
children | 7854d5752dd2 |
line wrap: on
line diff
--- a/liboctave/util/oct-base64.cc Tue Sep 22 17:19:46 2020 +0200 +++ b/liboctave/util/oct-base64.cc Tue Sep 22 15:59:00 2020 +0200 @@ -94,4 +94,31 @@ return retval; } + + intNDArray<octave_uint8> + base64_decode_bytes (const std::string& str) + { + intNDArray<octave_uint8> retval; + + char *out; + size_t outlen; + + bool ok + = octave_base64_decode_alloc_wrapper (str.data (), str.length (), + &out, &outlen); + + if (! ok) + (*current_liboctave_error_handler) + ("base64_decode: input was not valid base64"); + + if (! out) + (*current_liboctave_error_handler) + ("base64_decode: memory allocation error"); + + retval.resize (dim_vector (1, outlen)); + std::copy (out, out + outlen, retval.fortran_vec ()); + ::free (out); + + return retval; + } }