typedef struct ExecResult ExecResult;
std::string capture_exec(const std::string& command, ExecResult &rescode);
+std::string capture_exec(const char *const *command, ExecResult &rescode);
-inline std::string capture_exec(const std::string& command)
+inline std::string capture_exec (const std::string &command)
+{
+ ExecResult r;
+ return capture_exec(command,r);
+}
+
+inline std::string capture_exec(const char *const *command)
{
ExecResult r;
return capture_exec(command,r);
{
protected:
char buffer;
+
FILE *pipe;
// "callback" variables for destructor to store exit status
public:
inpipebuf(const std::string& command);
+ inpipebuf(const char *const *command);
~inpipebuf();
protected:
virtual int_type underflow();
+
+private:
+ FILE *init_without_shell (const char *const *argv) const;
};
/** @brief stream around inpipebuf -- see comment there */
inpipestream(const std::string& command)
: std::istream(&buf), buf(command)
{}
+ inpipestream(const char *const command[])
+ : std::istream(&buf), buf(command)
+ {}
void store_exit_status(bool *_status_set, int *_exit_status)
{ buf.store_exit_status(_status_set, _exit_status); }