-// Copyright 2005-6 Ben Hutchings <ben@decadent.org.uk>.
+// Copyright 2005-8 Ben Hutchings <ben@decadent.org.uk>.
// See the file "COPYING" for licence details.
#include <cerrno>
#include <sstream>
#include <stdexcept>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
#include <gdkmm/pixbuf.h>
#include <glibmm/miscutils.h>
#include <glibmm/spawn.h>
if (!spumux_file)
throw std::runtime_error("Failed to write control file for spumux");
+ std::string output_name(
+ temp_file_name(temp_dir_, "menu-%3d.mpeg", 1 + index));
+
std::ostringstream command_stream;
unsigned frame_count(menu_duration_frames(frame_params_));
if (encoder_ == mpeg_encoder_ffmpeg)
" | mplex -v0 -f8 -o/dev/stdout /dev/stdin";
}
command_stream
- << " | spumux -v0 -mdvd " << spumux_name
- << " > " << temp_file_name(temp_dir_, "menu-%3d.mpeg", 1 + index);
+ << " | spumux -v0 -mdvd " << spumux_name << " > " << output_name;
std::string command(command_stream.str());
const char * argv[] = {
"/bin/sh", "-c", command.c_str(), 0
sigc::slot<void>(),
0, 0,
&command_result);
- if (command_result != 0)
+ struct stat stat_buf;
+ if (command_result != 0 || stat(output_name.c_str(), &stat_buf) != 0
+ || stat_buf.st_size == 0)
throw std::runtime_error("spumux pipeline failed");
}