13#ifndef ZYPP_EXTERNALPROGRAM_H
14#define ZYPP_EXTERNALPROGRAM_H
22#include <zypp/APIConfig.h>
93 bool use_pty =
false,
int stderr_fd = -1,
bool default_locale =
false,
122 bool use_pty =
false,
int stderr_fd = -1,
bool default_locale =
false,
127 bool use_pty =
false,
int stderr_fd = -1,
bool default_locale =
false,
132 bool use_pty =
false,
int stderr_fd = -1,
bool default_locale =
false,
137 bool use_pty =
false,
int stderr_fd = -1,
bool default_locale =
false,
161 bool kill(
int sig );
214 std::ostream &
operator>>( std::ostream & out_r );
238 int stderr_fd = -1,
bool default_locale =
false,
239 const char* root = NULL,
bool switch_pgid =
false,
bool die_with_parent =
false );
244 namespace externalprogram
293 bool stderrGetUpTo( std::string & retval_r,
const char delim_r,
bool returnDelim_r =
false );
318 int stderr_fd = -1,
bool default_locale =
false,
321 start_program( argv,
Environment(), stderr_disp, stderr_fd, default_locale, root.c_str(),
true );
ExternalProgram extended to change the progress group ID after forking.
ExternalProgramWithSeperatePgid(const char *const *argv, Stderr_Disposition stderr_disp=Normal_Stderr, int stderr_fd=-1, bool default_locale=false, const Pathname &root="")
ExternalProgram extended to offer reading programs stderr.
bool stderrGetUpTo(std::string &retval_r, const char delim_r, bool returnDelim_r=false)
Read data up to delim_r from stderr (nonblocking).
ExternalProgramWithStderr(const Arguments &argv_r, const Environment &environment_r, const Pathname &root_r)
\overlocad Convenience taking just the root_r.
ExternalProgramWithStderr(const Arguments &argv_r, bool defaultLocale_r=false, const Pathname &root_r="")
void _initStdErr()
Close write end of the pipe (childs end).
bool stderrGetline(std::string &retval_r, bool returnDelim_r=false)
Read next complete line from stderr (nonblocking).
ExternalProgramWithStderr(const Arguments &argv_r, const Pathname &root_r)
\overlocad Convenience taking just the root_r.
ExternalProgramWithStderr(const Arguments &argv_r, const Environment &environment_r, bool defaultLocale_r=false, const Pathname &root_r="")
Execute a program and give access to its io An object of this class encapsulates the execution of an ...
ExternalProgram()
Start an external program by giving the arguments as an arry of char *pointers.
const std::string & command() const
The command we're executing.
std::ostream & operator>>(std::ostream &out_r)
Redirect all command output to an ostream.
std::map< std::string, std::string > Environment
For passing additional environment variables to set.
std::string _execError
Remember execution errors like failed fork/exec.
static void renumber_fd(int origfd, int newfd)
origfd will be accessible as newfd and closed (unless they were equal)
std::vector< std::string > Arguments
void start_program(const char *const *argv, const Environment &environment, Stderr_Disposition stderr_disp=Normal_Stderr, int stderr_fd=-1, bool default_locale=false, const char *root=NULL, bool switch_pgid=false, bool die_with_parent=false)
bool kill()
Kill the program.
std::string _command
Store the command we're executing.
const std::string & execError() const
Some detail telling why the execution failed, if it failed.
bool running()
Return whether program is running.
int close()
Wait for the progamm to complete.
bool use_pty
Set to true, if a pair of ttys is used for communication instead of a pair of pipes.
Stderr_Disposition
Define symbols for different policies on the handling of stderr.
Bidirectional stream to external data.
Easy-to use interface to the ZYPP dependency resolver.
Helper providing pipe FDs for ExternalProgramWithStderr.