diff libinterp/corefcn/oct-prcstrm.cc @ 26703:29ea2369971d

Add basic backend for encodings in file streams (bug #55452). * oct-stream.h (base_stream): Store encoding in class. * oct-stream.cc (do_scanf_conv): Convert strings from encoding. (do_printf_string): Convert strings to encoding. (base_stream::printf): Convert format string to encoding. * oct-stdstrm.h (octave_stdiostream, octave_tstdiostream, octave_zstdiostream, create): Pass encoding through to base_stream. * oct-prcstrm.[cc,h] (octave_iprocstream, octave_oprocstream, create): Pass encoding through to octave_stdiostream. * oct-strstrm.[cc,h] (octave_istrstream, octave_ostrstream, create): Pass encoding through to base_stream.
author Markus Mützel <markus.muetzel@gmx.de>
date Sat, 09 Feb 2019 16:43:11 +0100
parents 00f796120a6d
children b442ec6dda5c
line wrap: on
line diff
--- a/libinterp/corefcn/oct-prcstrm.cc	Sat Feb 02 20:07:45 2019 +0100
+++ b/libinterp/corefcn/oct-prcstrm.cc	Sat Feb 09 16:43:11 2019 +0100
@@ -31,16 +31,18 @@
 
 octave::stream
 octave_iprocstream::create (const std::string& n, std::ios::openmode arg_md,
-                            octave::mach_info::float_format ff)
+                            octave::mach_info::float_format ff,
+                            const std::string& encoding)
 {
-  return octave::stream (new octave_iprocstream (n, arg_md, ff));
+  return octave::stream (new octave_iprocstream (n, arg_md, ff, encoding));
 }
 
 octave_iprocstream::octave_iprocstream (const std::string& n,
                                         std::ios::openmode arg_md,
-                                        octave::mach_info::float_format ff)
+                                        octave::mach_info::float_format ff,
+                                        const std::string& encoding)
   : octave_stdiostream (n, octave::popen (n.c_str (), "r"),
-                        arg_md, ff, octave::pclose)
+                        arg_md, ff, encoding, octave::pclose)
 { }
 
 octave_iprocstream::~octave_iprocstream (void)
@@ -50,16 +52,18 @@
 
 octave::stream
 octave_oprocstream::create (const std::string& n, std::ios::openmode arg_md,
-                            octave::mach_info::float_format ff)
+                            octave::mach_info::float_format ff,
+                            const std::string& encoding)
 {
-  return octave::stream (new octave_oprocstream (n, arg_md, ff));
+  return octave::stream (new octave_oprocstream (n, arg_md, ff, encoding));
 }
 
 octave_oprocstream::octave_oprocstream (const std::string& n,
                                         std::ios::openmode arg_md,
-                                        octave::mach_info::float_format ff)
+                                        octave::mach_info::float_format ff,
+                                        const std::string& encoding)
   : octave_stdiostream (n, octave::popen (n.c_str (), "w"),
-                        arg_md, ff, octave::pclose)
+                        arg_md, ff, encoding, octave::pclose)
 { }
 
 octave_oprocstream::~octave_oprocstream (void)