Mercurial > jwe > octave
diff libinterp/corefcn/input.cc @ 31149:f125ddb46055
dir_encoding: Use encoding from .oct-config file in current directory (bug #62761).
* libinterp/corefcn/load-path.cc (load_path::read_dir_config),
libinterp/corefcn/input.cc (input_system::dir_encoding): Use canonicalized path
as key for the dir_encoding map.
* test/file-encoding: Add tests for this feature.
* test/Makefile.am: Add new folder to test suite.
author | Markus Mützel <markus.muetzel@gmx.de> |
---|---|
date | Wed, 13 Jul 2022 13:20:48 +0200 |
parents | 670a0d878af1 |
children |
line wrap: on
line diff
--- a/libinterp/corefcn/input.cc Tue Jul 12 17:52:20 2022 +0200 +++ b/libinterp/corefcn/input.cc Wed Jul 13 13:20:48 2022 +0200 @@ -44,6 +44,7 @@ #include "file-ops.h" #include "iconv-wrappers.h" #include "localcharset-wrapper.h" +#include "oct-env.h" #include "oct-string.h" #include "quit.h" #include "str-vec.h" @@ -573,8 +574,10 @@ std::string input_system::dir_encoding (const std::string& dir) { std::string enc = m_mfile_encoding; + // use canonicalized path as key + const std::string key = sys::canonicalize_file_name (dir); - auto enc_it = m_dir_encoding.find (load_path_dir (dir)); + auto enc_it = m_dir_encoding.find (key); if (enc_it != m_dir_encoding.end ()) enc = enc_it->second;