X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fpipecmd%2Fpipecmd.h;h=5bbaefc01234699e23ab719d2495161f9ae1b935;hb=8cc0749a0e067582f1100e6ee1cd975af52e372a;hp=3adfb541370b18e761e56333876783abd51b0a0c;hpb=66de67ea48009a086f940288eacf9928515f3aec;p=ccan diff --git a/ccan/pipecmd/pipecmd.h b/ccan/pipecmd/pipecmd.h index 3adfb541..5bbaefc0 100644 --- a/ccan/pipecmd/pipecmd.h +++ b/ccan/pipecmd/pipecmd.h @@ -10,21 +10,42 @@ * pipecmd - run a command, optionally connect pipes. * @infd: input fd to write to child (if non-NULL) * @outfd: output fd to read from child (if non-NULL) + * @errfd: error-output fd to read from child (if non-NULL) * @cmd...: NULL-terminate list of command and arguments. * * If @infd is NULL, the child's input is (read-only) /dev/null. * If @outfd is NULL, the child's output is (write-only) /dev/null. + * If @errfd is NULL, the child's stderr is (write-only) /dev/null. + * + * If @errfd == @outfd (and non-NULL) they will be shared. + * If @infd, @outfd or @errfd is &pipecmd_preserve, it is unchanged. * * The return value is the pid of the child, or -1. */ -pid_t pipecmd(int *infd, int *outfd, const char *cmd, ...); +pid_t pipecmd(int *infd, int *outfd, int *errfd, const char *cmd, ...); /** * pipecmdv - run a command, optionally connect pipes (stdarg version) * @infd: input fd to write to child (if non-NULL) * @outfd: output fd to read from child (if non-NULL) + * @errfd: error-output fd to read from child (if non-NULL) * @cmd: command to run. * @ap: argument list for arguments. */ -pid_t pipecmdv(int *infd, int *outfd, const char *cmd, va_list ap); +pid_t pipecmdv(int *infd, int *outfd, int *errfd, const char *cmd, va_list ap); + +/** + * pipecmdarr - run a command, optionally connect pipes (char arry version) + * @infd: input fd to write to child (if non-NULL) + * @outfd: output fd to read from child (if non-NULL) + * @errfd: error-output fd to read from child (if non-NULL) + * @arr: NULL-terminated array for arguments (first is program to run). + */ +pid_t pipecmdarr(int *infd, int *outfd, int *errfd, char *const *arr); + +/** + * pipecmd_preserve - special value for fds to indicate it is unchanged + */ +extern int pipecmd_preserve; + #endif /* CCAN_PIPECMD_H */