Make the allowed list a defaulted parameter of careful_string_filter().
authorCarl Hetherington <cth@carlh.net>
Mon, 30 Dec 2024 22:24:15 +0000 (23:24 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 1 Jan 2025 01:08:06 +0000 (02:08 +0100)
src/lib/util.cc
src/lib/util.h

index 30a82ee508826e053f8aee15c25f542eca15df85..fde4ce15e5d6991ebdfc518719bd3c496d3d6f44 100644 (file)
@@ -783,7 +783,7 @@ atmos_asset_filename (shared_ptr<dcp::AtmosAsset> asset, int reel_index, int ree
 
 
 string
-careful_string_filter (string s)
+careful_string_filter(string s, wstring allowed)
 {
        /* Filter out `bad' characters which `may' cause problems with some systems (either for DCP name or filename).
         * I don't know of a list of what really is allowed, so this is a guess.
@@ -813,7 +813,6 @@ careful_string_filter (string s)
 
        /* Then remove anything that's not in a very limited character set */
        wstring out;
-       wstring const allowed = L"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.+";
        for (int i = 0; i < transliterated_more.length(); ++i) {
                wchar_t c = transliterated_more[i];
                if (allowed.find(c) != string::npos) {
index d6ed0bccc85f109741ebdd58ab33c44358970439..eaa705f5ee791b63c210a5b9d6c95db2bd953f6a 100644 (file)
@@ -84,7 +84,7 @@ extern std::string video_asset_filename (std::shared_ptr<dcp::PictureAsset> asse
 extern std::string audio_asset_filename (std::shared_ptr<dcp::SoundAsset> asset, int reel_index, int reel_count, boost::optional<std::string> content_summary);
 extern std::string subtitle_asset_filename (std::shared_ptr<dcp::TextAsset> asset, int reel_index, int reel_count, boost::optional<std::string> content_summary, std::string extension);
 extern std::string atmos_asset_filename (std::shared_ptr<dcp::AtmosAsset> asset, int reel_index, int reel_count, boost::optional<std::string> content_summary);
-extern std::string careful_string_filter (std::string);
+extern std::string careful_string_filter(std::string s, std::wstring allowed = L"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.+");
 extern std::pair<int, int> audio_channel_types (std::list<int> mapped, int channels);
 extern std::shared_ptr<AudioBuffers> remap (std::shared_ptr<const AudioBuffers> input, int output_channels, AudioMapping map);
 extern size_t utf8_strlen (std::string s);