[Summary] a) On MAC OS, .DS_Store files are ignored when saving a session by “Save As”.

b) plugins folder is not created for Templates.

[Required review] Paul Davis, YPozdnyakov

Conflicts:
	libs/ardour/session_state.cc
This commit is contained in:
Valeriy Kamyshniy 2015-04-06 21:25:42 +03:00 committed by Paul Davis
parent 7c5d849247
commit 1acee68037
1 changed files with 24 additions and 13 deletions

View File

@ -2052,14 +2052,17 @@ Session::save_template (string template_name)
return -1;
}
/* copy plugin state directory */
if (!ARDOUR::Profile->get_trx()) {
/* copy plugin state directory */
std::string template_plugin_state_path (Glib::build_filename (template_dir_path, X_("plugins")));
std::string template_plugin_state_path (Glib::build_filename (template_dir_path, X_("plugins")));
if (g_mkdir_with_parents (template_plugin_state_path.c_str(), 0755) != 0) {
error << string_compose(_("Could not create directory for Session template plugin state\"%1\" (%2)"),
template_plugin_state_path, g_strerror (errno)) << endmsg;
return -1;
if (g_mkdir_with_parents (template_plugin_state_path.c_str(), 0755) != 0) {
error << string_compose(_("Could not create directory for Session template plugin state\"%1\" (%2)"),
template_plugin_state_path, g_strerror (errno)) << endmsg;
return -1;
}
copy_files (plugins_dir(), template_plugin_state_path);
}
copy_recurse (plugins_dir(), template_plugin_state_path);
@ -4176,7 +4179,15 @@ Session::save_as (SaveAs& saveas)
std::string from = *i;
if ((*i).find (audiofile_dir_string) != string::npos) {
#ifdef __APPLE__
string filename = Glib::path_get_basename (from);
std::transform (filename.begin(), filename.end(), filename.begin(), ::toupper);
if (filename == ".DS_STORE") {
continue;
}
#endif
if (from.find (audiofile_dir_string) != string::npos) {
/* audio file: only copy if asked */
@ -4195,7 +4206,7 @@ Session::save_as (SaveAs& saveas)
internal_file_cnt++;
} else if ((*i).find (midifile_dir_string) != string::npos) {
} else if (from.find (midifile_dir_string) != string::npos) {
/* midi file: always copy unless
* creating an empty new session
@ -4216,7 +4227,7 @@ Session::save_as (SaveAs& saveas)
internal_file_cnt++;
} else if ((*i).find (analysis_dir_string) != string::npos) {
} else if (from.find (analysis_dir_string) != string::npos) {
/* make sure analysis dir exists in
* new session folder, but we're not
@ -4235,14 +4246,14 @@ Session::save_as (SaveAs& saveas)
bool do_copy = true;
for (vector<string>::iterator v = do_not_copy_extensions.begin(); v != do_not_copy_extensions.end(); ++v) {
if (((*i).length() > (*v).length()) && ((*i).find (*v) == (*i).length() - (*v).length())) {
if ((from.length() > (*v).length()) && (from.find (*v) == from.length() - (*v).length())) {
/* end of filename matches extension, do not copy file */
do_copy = false;
break;
}
}
if (!saveas.copy_media && (*i).find (peakfile_suffix) != string::npos) {
if (!saveas.copy_media && from.find (peakfile_suffix) != string::npos) {
/* don't copy peakfiles if
* we're not copying media
*/
@ -4250,7 +4261,7 @@ Session::save_as (SaveAs& saveas)
}
if (do_copy) {
string to = Glib::build_filename (to_dir, (*i).substr (prefix_len));
string to = Glib::build_filename (to_dir, from.substr (prefix_len));
info << "attempting to make directory/folder " << to << endmsg;
@ -4272,7 +4283,7 @@ Session::save_as (SaveAs& saveas)
*/
GStatBuf gsb;
g_stat ((*i).c_str(), &gsb);
g_stat (from.c_str(), &gsb);
copied += gsb.st_size;
cnt++;