#ifndef ZYPP_EXTERNALPROGRAM_H
#define ZYPP_EXTERNALPROGRAM_H
+#include <unistd.h>
+
#include <map>
#include <string>
#include <vector>
* @param commandline a shell commandline that is appended to
* <tt>/bin/sh -c</tt>.
* @param default_locale whether to set LC_ALL=C before starting
- * @param root directory to chroot into, / or empty to not chroot
+ * @param root directory to chroot into; or just 'cd' if '/'l; nothing if empty
*/
ExternalProgram (std::string commandline,
Stderr_Disposition stderr_disp = Normal_Stderr,
* If environment is provided, varaiables will be added to the childs environment,
* overwriting existing ones.
*
+ * Initial args starting with \c # are discarded but some are treated specially:
+ * #/[path] - chdir to /[path] before executing
+ *
* Stdin redirection: If the \b 1st argument starts with a \b '<', the remaining
* part is treated as file opened for reading on standard input (or \c /dev/null
* if empty).
* const char* argv[] = { "</tmp/x", "cat", NULL };
* ExternalProgram prog( argv );
* \endcode
+ *
+ * Stdout redirection: If the \b 1st argument starts with a \b '>', the remaining
+ * part is treated as file opened for writing on standard output (or \c /dev/null
+ * if empty).
*/
ExternalProgram();
};
- namespace _ExternalProgram
+ namespace externalprogram
{
/** Helper providing pipe FDs for \ref ExternalProgramWithStderr.
* Moved to a basse class because the pipe needs to be initialized
FILE * _stderr;
int _fds[2];
};
- }
+ } // namespace externalprogram
/** ExternalProgram extended to offer reading programs stderr.
* \see \ref ExternalProgram
*/
- class ExternalProgramWithStderr : private _ExternalProgram::EarlyPipe, public ExternalProgram
+ class ExternalProgramWithStderr : private externalprogram::EarlyPipe, public ExternalProgram
{
public:
ExternalProgramWithStderr( const Arguments & argv_r )
public:
/** Return \c FILE* to read programms stderr (O_NONBLOCK set). */
- _ExternalProgram::EarlyPipe::stderr;
+ using externalprogram::EarlyPipe::stderr;
/** Read data up to \c delim_r from stderr (nonblocking).
* \note If \c delim_r is '\0', we read as much data as possible.