/** Round a number up to the nearest multiple of another number.
* @param c Index.
- * @param s Array of numbers to round, indexed by c.
+ * @param stride Array of numbers to round, indexed by c.
* @param t Multiple to round to.
* @return Rounded number.
*/
_("BsR"),
_("DBP"),
_("DBS"),
- _(""),
- _("")
+ "",
+ ""
};
return channels[c];
);
}
+bool
+valid_sound_file (boost::filesystem::path f)
+{
+ if (boost::starts_with (f.leaf().string(), "._")) {
+ return false;
+ }
+
+ string ext = f.extension().string();
+ transform (ext.begin(), ext.end(), ext.begin(), ::tolower);
+ return (ext == ".wav" || ext == ".mp3" || ext == ".aif" || ext == ".aiff");
+}
+
bool
valid_j2k_file (boost::filesystem::path f)
{
values['r'] = raw_convert<string> (reel_index + 1);
values['n'] = raw_convert<string> (reel_count);
if (summary) {
- values['c'] = summary.get();
+ values['c'] = careful_string_filter (summary.get());
}
return Config::instance()->dcp_asset_filename_format().get(values, "_" + asset->id() + ".mxf");
}
values['r'] = raw_convert<string> (reel_index + 1);
values['n'] = raw_convert<string> (reel_count);
if (summary) {
- values['c'] = summary.get();
+ values['c'] = careful_string_filter (summary.get());
}
return Config::instance()->dcp_asset_filename_format().get(values, "_" + asset->id() + ".mxf");
}
return lexical_cast<float> (s);
}
}
+
+string
+careful_string_filter (string s)
+{
+ /* Filter out `bad' characters which `may' cause problems with some systems (either for DCP name or filename).
+ There's no apparent list of what really is allowed, so this is a guess.
+ Safety first and all that.
+ */
+
+ string out;
+ string const allowed = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_%.";
+ for (size_t i = 0; i < s.size(); ++i) {
+ if (allowed.find (s[i]) != string::npos) {
+ out += s[i];
+ }
+ }
+
+ return out;
+}