summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/ardour/export_handler.h2
-rw-r--r--libs/ardour/export_handler.cc29
-rw-r--r--libs/ardour/export_profile_manager.cc17
3 files changed, 38 insertions, 10 deletions
diff --git a/libs/ardour/ardour/export_handler.h b/libs/ardour/ardour/export_handler.h
index 79a90ebb6f..6fb67bc414 100644
--- a/libs/ardour/ardour/export_handler.h
+++ b/libs/ardour/ardour/export_handler.h
@@ -115,6 +115,8 @@ class ExportHandler : public ExportElementFactory
BroadcastInfoPtr broadcast_info);
void do_export (bool rt = false);
+ std::string get_cd_marker_filename(std::string filename, CDMarkerFormat format);
+
private:
int process (framecnt_t frames);
diff --git a/libs/ardour/export_handler.cc b/libs/ardour/export_handler.cc
index b789304bdc..c864cf4bf7 100644
--- a/libs/ardour/export_handler.cc
+++ b/libs/ardour/export_handler.cc
@@ -266,12 +266,7 @@ void
ExportHandler::export_cd_marker_file (ExportTimespanPtr timespan, ExportFormatSpecPtr file_format,
std::string filename, CDMarkerFormat format)
{
- string filepath;
-
- /* do not strip file suffix because there may be more than one format,
- and we do not want the CD marker file from one format to overwrite
- another (e.g. foo.wav.cue > foo.aiff.cue)
- */
+ string filepath = get_cd_marker_filename(filename, format);
void (ExportHandler::*header_func) (CDMarkerStatus &);
void (ExportHandler::*track_func) (CDMarkerStatus &);
@@ -279,15 +274,11 @@ ExportHandler::export_cd_marker_file (ExportTimespanPtr timespan, ExportFormatSp
switch (format) {
case CDMarkerTOC:
- filepath = filename;
- filepath += ".toc";
header_func = &ExportHandler::write_toc_header;
track_func = &ExportHandler::write_track_info_toc;
index_func = &ExportHandler::write_index_info_toc;
break;
case CDMarkerCUE:
- filepath = filename;
- filepath += ".cue";
header_func = &ExportHandler::write_cue_header;
track_func = &ExportHandler::write_track_info_cue;
index_func = &ExportHandler::write_index_info_cue;
@@ -381,6 +372,24 @@ ExportHandler::export_cd_marker_file (ExportTimespanPtr timespan, ExportFormatSp
}
}
+string
+ExportHandler::get_cd_marker_filename(std::string filename, CDMarkerFormat format)
+{
+ /* do not strip file suffix because there may be more than one format,
+ and we do not want the CD marker file from one format to overwrite
+ another (e.g. foo.wav.cue > foo.aiff.cue)
+ */
+
+ switch (format) {
+ case CDMarkerTOC:
+ return filename + ".toc";
+ case CDMarkerCUE:
+ return filename + ".cue";
+ default:
+ return filename + ".marker"; // Should not be reached when actually creating a file
+ }
+}
+
void
ExportHandler::write_cue_header (CDMarkerStatus & status)
{
diff --git a/libs/ardour/export_profile_manager.cc b/libs/ardour/export_profile_manager.cc
index 7eaa7c0632..459f878596 100644
--- a/libs/ardour/export_profile_manager.cc
+++ b/libs/ardour/export_profile_manager.cc
@@ -840,6 +840,23 @@ ExportProfileManager::check_config (boost::shared_ptr<Warnings> warnings,
warnings->conflicting_filenames.push_back (path);
}
}
+
+ // TODO check what happens with split channel configs...
+ string path = filename->get_path (format);
+
+ if (format->with_toc()) {
+ string marker_file = handler->get_cd_marker_filename(path, CDMarkerTOC);
+ if (sys::exists (sys::path (marker_file))) {
+ warnings->conflicting_filenames.push_back (marker_file);
+ }
+ }
+
+ if (format->with_cue()) {
+ string marker_file = handler->get_cd_marker_filename(path, CDMarkerCUE);
+ if (sys::exists (sys::path (marker_file))) {
+ warnings->conflicting_filenames.push_back (marker_file);
+ }
+ }
}
}