// -*- C++ -*-
/**
 * \file systemcall.h
 * This file is part of LyX, the document processor.
 * Licence details can be found in the file COPYING.
 *
 * \author Asger Alstrup
 *
 * Interface cleaned up by
 * \author Angus Leeming
 *
 * Full author contact details are available in file CREDITS.
 */

#ifndef SYSTEMCALL_H
#define SYSTEMCALL_H

#include <string>

namespace lyx {
namespace support {

/**
 * An instance of Class Systemcall represents a single child process.
 *
 * Class Systemcall uses system() to launch the child process.
 * The user can choose to wait or not wait for the process to complete, but no
 * callback is invoked upon completion of the child.
 *
 * The child process is not killed when the Systemcall instance goes out of
 * scope.
 */
class Systemcall {
public:
	/// whether to wait for completion
	enum Starttype {
		Wait, //< wait for completion before returning from startscript()
		DontWait //< don't wait for completion
	};

	/** Start child process.
	 *  The string "what" contains a commandline with arguments separated
	 *  by spaces.
	 */
	int startscript(Starttype how, std::string const & what);
};

} // namespace support
} // namespace lyx

#endif // SYSTEMCALL_H
