]> git.lyx.org Git - lyx.git/blobdiff - src/graphics/GraphicsConverter.C
Purely mechanical: move fragile into LatexRunParams.
[lyx.git] / src / graphics / GraphicsConverter.C
index 2ca7e1cacf519c16dac99acf52685737cba8a541..41d8620a14c06796d880c6a04e2897b366a741e3 100644 (file)
@@ -3,24 +3,23 @@
  * This file is part of LyX, the document processor.
  * Licence details can be found in the file COPYING.
  *
- *  \author Angus Leeming 
+ *  \author Angus Leeming
  *
  * Full author contact details are available in file CREDITS
  */
 
 #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>
@@ -160,9 +159,9 @@ Converter::Impl::Impl(string const & from_file,   string const & to_file_base,
        } else {
 
                lyxerr[Debug::GRAPHICS] << "\tConversion script:"
-                               << "\n--------------------------------------\n"
-                               << script.str().c_str()
-                               << "\n--------------------------------------\n";
+                       << "\n--------------------------------------\n"
+                       << STRCONV(script.str())
+                       << "\n--------------------------------------\n";
 
                // Output the script to file.
                static int counter = 0;
@@ -173,15 +172,15 @@ Converter::Impl::Impl(string const & from_file,   string const & to_file_base,
                if (!fs.good())
                        return;
 
-               fs << script.str().c_str();
+               fs << STRCONV(script.str());
                fs.close();
 
                // 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;
@@ -195,22 +194,13 @@ void Converter::Impl::startConversion()
                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_)
@@ -242,16 +232,16 @@ string const move_file(string const & from_file, string const & to_file)
        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 command.str().c_str();
+       return STRCONV(command.str());
 }
 
 
@@ -320,14 +310,14 @@ bool build_script(string const & from_file,
                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,