commit - 2591f89b08653508cf6553ae7a7595d86133dc6e
commit + 130676c5756bf721a759241c354cbf4518c19a76
blob - 8c84676826c361c2ec3c4f3a1607c78c8756855d
blob + 6ef826b0e9f5c884304b6f5ae2c4a089c654bcc9
--- main.c
+++ main.c
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
+#include <sys/ioctl.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/types.h>
int st, code;
pid_t pid;
struct command *cmd;
+ int avail;
if ((pid = wait(&st)) == -1)
fatal("wait");
break;
}
+ do {
+ if (cmd->outfd == -1)
+ break;
+ if (ioctl(cmd->outfd, FIONREAD, &avail) == -1) {
+ log_warn("%s: ioctl(FIONREAD)", cmd->token);
+ avail = 0;
+ }
+ if (avail > 0)
+ extends_cmd_out(cmd->outfd, EV_READ, cmd);
+ } while (avail > 0);
+ do {
+ if (cmd->errfd == -1)
+ break;
+ if (ioctl(cmd->errfd, FIONREAD, &avail) == -1) {
+ log_warn("%s: ioctl(FIONREAD)", cmd->token);
+ avail = 0;
+ }
+ if (avail > 0)
+ extends_cmd_err(cmd->errfd, EV_READ, cmd);
+ } while (avail > 0);
+
+ if (cmd->errstr[0] != '\0')
+ log_warnx("%s: %s", cmd->token, cmd->errstr);
+
if (cmd->result == 0) {
if (WIFCONTINUED(st))
return;
if (imsg_compose(&pc, IMSG_FAIL, cmd->id, 0, -1, NULL, 0) == -1)
fatal("imsg_compose");
}
- if (cmd->errstr[0] != '\0')
- log_warnx("%s: %s", cmd->token, cmd->errstr);
cmd->errstr[0] = '\0';
event_del(&cmd->inev);
event_del(&cmd->outev);