#include <config.h>
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
#include "GraphicsConverter.h"
#include "converter.h"
+#include "format.h"
#include "debug.h"
#include "support/filetools.h"
#include "support/forkedcall.h"
+#include "support/forkedcallqueue.h"
+#include "support/tostr.h"
#include "support/lyxlib.h"
#include <boost/bind.hpp>
} else {
lyxerr[Debug::GRAPHICS] << "\tConversion script:"
- << "\n--------------------------------------\n"
- << STRCONV(script.str())
- << "\n--------------------------------------\n";
+ << "\n--------------------------------------\n"
+ << STRCONV(script.str())
+ << "\n--------------------------------------\n";
// Output the script to file.
static int counter = 0;
// The command needed to run the conversion process
// We create a dummy command for ease of understanding of the
// list of forked processes.
- // Note that 'sh ' is absolutely essential, or execvp will fail.
- script_command_ = "sh " + script_file_ + " " +
- OnlyFilename(from_file) + " " + to_format;
+ // Note: 'sh ' is absolutely essential, or execvp will fail.
+ script_command_ = "sh " + script_file_ + ' ' +
+ OnlyFilename(from_file) + ' ' + to_format;
}
// All is ready to go
valid_process_ = true;
return;
}
- // Initiate the conversion
- Forkedcall::SignalTypePtr convert_ptr;
- convert_ptr.reset(new Forkedcall::SignalType);
+ Forkedcall::SignalTypePtr
+ ptr = ForkedCallQueue::get().add(script_command_);
- convert_ptr->connect(
- boost::bind(&Impl::converted, this, _1, _2));
+ ptr->connect(boost::bind(&Impl::converted, this, _1, _2));
- Forkedcall call;
- int retval = call.startscript(script_command_, convert_ptr);
- if (retval > 0) {
- // Unable to even start the script, so clean-up the mess!
- converted(0, 1);
- }
}
-
void Converter::Impl::converted(pid_t /* pid */, int retval)
{
if (finished_)
ostringstream command;
command << "fromfile=" << from_file << "\n"
<< "tofile=" << to_file << "\n\n"
- << "'mv' -f ${fromfile} ${tofile}\n"
- << "if [ $? -ne 0 ]; then\n"
- << "\t'cp' -f ${fromfile} ${tofile}\n"
- << "\tif [ $? -ne 0 ]; then\n"
+ << "'mv' -f ${fromfile} ${tofile} ||\n"
+ << "{\n"
+ << "\t'cp' -f ${fromfile} ${tofile} ||\n"
+ << "\t{\n"
<< "\t\texit 1\n"
- << "\tfi\n"
+ << "\t}\n"
<< "\t'rm' -f ${fromfile}\n"
- << "fi\n";
+ << "}\n";
return STRCONV(command.str());
}
command = LibScriptSearch(command);
// Store in the shell script
- script << "\n" << command << "\n\n";
+ script << "\n" << command << " ||\n";
// Test that this was successful. If not, remove
// ${outfile} and exit the shell script
- script << "if [ $? -ne 0 ]; then\n"
+ script << "{\n"
<< "\t'rm' -f ${outfile}\n"
<< "\texit 1\n"
- << "fi\n\n";
+ << "}\n\n";
// Test that the outfile exists.
// ImageMagick's convert will often create ${outfile}.0,