Mercurial > hg > svcore
changeset 626:686fc1703a33
* Avoid failing on second and subsequent input files in single-output-file
mode (because first input file caused output file to be open, so second
input file failed because output "already existed")
author | Chris Cannam |
---|---|
date | Mon, 24 May 2010 16:04:10 +0000 |
parents | 608b4dc5ff34 |
children | 080d8bdd8762 |
files | transform/FileFeatureWriter.cpp |
diffstat | 1 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/transform/FileFeatureWriter.cpp Fri May 21 10:21:18 2010 +0000 +++ b/transform/FileFeatureWriter.cpp Mon May 24 16:04:10 2010 +0000 @@ -218,7 +218,14 @@ FileFeatureWriter::testOutputFile(QString trackId, TransformId transformId) { - if (m_stdout) return; + // Obviously, if we're writing to stdout we can't test for an + // openable output file. But when writing a single file we don't + // want to either, because this test would fail on the second and + // subsequent input files (because the file would already exist). + // getOutputFile does the right thing in this case, so we just + // leave it to it + if (m_stdout || m_singleFileName != "") return; + QString filename = getOutputFilename(trackId, transformId); if (filename == "") { throw FailedToOpenOutputStream(trackId, transformId); @@ -266,7 +273,7 @@ m_files[key] = 0; throw FailedToOpenFile(filename); } - + m_files[key] = file; } @@ -281,7 +288,7 @@ if (!file && !m_stdout) { return 0; } - + if (m_streams.find(file) == m_streams.end()) { if (m_stdout) { m_streams[file] = new QTextStream(stdout);