lyx_mirror/src/support/Systemcall.h
Richard Kimberly Heck 4460df3292 Fix header.
2020-02-29 00:06:35 -05:00

75 lines
2.1 KiB
C++

// -*- 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 "strfwd.h"
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()
WaitLoop, //< wait, but check occasionally for cancellation
DontWait //< don't wait for completion
};
// enum values chosen hopefully not to conflict with ordinary return values
enum ReturnValue {
OK = 0,
NOSTART = 1001,
ERROR = 2001,
TIMEOUT = 4001,
KILLED = 9001
};
// Kill the process which is running at time being
static void killscript();
/** Start child process.
* The string "what" contains a commandline with arguments separated
* by spaces and encoded in the filesystem encoding. "$$s" will be
* replaced accordingly by commandPrep(). The string "path" contains
* the path to be prepended to the TEXINPUTS environment variable
* encoded in utf-8. Similarly for the string "lpath" that, if not
* empty, specifies an additional directory to be added to TEXINPUTS
* but after "path". Unset "process_events" in case UI should be
* blocked while processing the external command.
*/
int startscript(Starttype how, std::string const & what,
std::string const & path = empty_string(),
std::string const & lpath = empty_string(),
bool process_events = false);
};
} // namespace support
} // namespace lyx
#endif // SYSTEMCALL_H