Lines Matching refs:cmd

167 virCommandHasError(virCommand *cmd)  in virCommandHasError()  argument
169 return !cmd || cmd->has_error != 0; in virCommandHasError()
174 virCommandRaiseError(virCommand *cmd) in virCommandRaiseError() argument
176 if (!cmd || cmd->has_error != 0) { in virCommandRaiseError()
197 virCommandFDIsSet(virCommand *cmd, in virCommandFDIsSet() argument
201 if (!cmd) in virCommandFDIsSet()
204 while (i < cmd->npassfd) in virCommandFDIsSet()
205 if (cmd->passfd[i++].fd == fd) in virCommandFDIsSet()
222 virCommandFDSet(virCommand *cmd, in virCommandFDSet() argument
226 if (virCommandFDIsSet(cmd, fd)) in virCommandFDSet()
229 VIR_EXPAND_N(cmd->passfd, cmd->npassfd, 1); in virCommandFDSet()
231 cmd->passfd[cmd->npassfd - 1].fd = fd; in virCommandFDSet()
232 cmd->passfd[cmd->npassfd - 1].flags = flags; in virCommandFDSet()
393 virCommandHandshakeChild(virCommand *cmd) in virCommandHandshakeChild() argument
398 if (!cmd->handshake) in virCommandHandshakeChild()
402 cmd->handshakeWait[1]); in virCommandHandshakeChild()
403 if (safewrite(cmd->handshakeWait[1], &c, sizeof(c)) != sizeof(c)) { in virCommandHandshakeChild()
410 cmd->handshakeNotify[0]); in virCommandHandshakeChild()
411 if ((rv = saferead(cmd->handshakeNotify[0], &c, in virCommandHandshakeChild()
427 VIR_FORCE_CLOSE(cmd->handshakeWait[1]); in virCommandHandshakeChild()
428 VIR_FORCE_CLOSE(cmd->handshakeNotify[0]); in virCommandHandshakeChild()
435 virExecCommon(virCommand *cmd, gid_t *groups, int ngroups) in virExecCommon() argument
437 if (cmd->uid != (uid_t)-1 || cmd->gid != (gid_t)-1 || in virExecCommon()
438 cmd->capabilities || (cmd->flags & VIR_EXEC_CLEAR_CAPS)) { in virExecCommon()
440 (int)cmd->uid, (int)cmd->gid, cmd->capabilities); in virExecCommon()
441 if (virSetUIDGIDWithCaps(cmd->uid, cmd->gid, groups, ngroups, in virExecCommon()
442 cmd->capabilities, in virExecCommon()
443 !!(cmd->flags & VIR_EXEC_CLEAR_CAPS)) < 0) in virExecCommon()
447 if (cmd->pwd) { in virExecCommon()
448 VIR_DEBUG("Running child in %s", cmd->pwd); in virExecCommon()
449 if (chdir(cmd->pwd) < 0) { in virExecCommon()
451 _("Unable to change to %s"), cmd->pwd); in virExecCommon()
464 virCommandMassCloseGetFDsLinux(virCommand *cmd G_GNUC_UNUSED, in virCommandMassCloseGetFDsLinux()
497 virCommandMassCloseGetFDsGeneric(virCommand *cmd G_GNUC_UNUSED, in virCommandMassCloseGetFDsGeneric()
508 virCommandMassClose(virCommand *cmd, in virCommandMassClose() argument
537 for (i = 0; i < cmd->npassfd; i++) in virCommandMassClose()
538 lastfd = MAX(lastfd, cmd->passfd[i].fd); in virCommandMassClose()
543 if (!virCommandFDIsSet(cmd, fd)) { in virCommandMassClose()
560 virCommandMassClose(virCommand *cmd, in virCommandMassClose() argument
585 if (virCommandMassCloseGetFDsLinux(cmd, fds) < 0) in virCommandMassClose()
588 if (virCommandMassCloseGetFDsGeneric(cmd, fds) < 0) in virCommandMassClose()
596 if (!virCommandFDIsSet(cmd, fd)) { in virCommandMassClose()
616 virExec(virCommand *cmd) in virExec() argument
623 int childin = cmd->infd; in virExec()
632 if (!g_path_is_absolute(cmd->args[0])) { in virExec()
633 if (!(binary = binarystr = virFindFileInPath(cmd->args[0]))) { in virExec()
636 cmd->args[0]); in virExec()
640 binary = cmd->args[0]; in virExec()
649 if (cmd->outfdptr != NULL) { in virExec()
650 if (*cmd->outfdptr == -1) { in virExec()
654 if ((cmd->flags & VIR_EXEC_NONBLOCK) && in virExec()
663 childout = *cmd->outfdptr; in virExec()
671 if (cmd->errfdptr != NULL) { in virExec()
672 if (cmd->errfdptr == cmd->outfdptr) { in virExec()
674 } else if (*cmd->errfdptr == -1) { in virExec()
678 if ((cmd->flags & VIR_EXEC_NONBLOCK) && in virExec()
687 childerr = *cmd->errfdptr; in virExec()
695 if ((ngroups = virGetGroupList(cmd->uid, cmd->gid, &groups)) < 0) in virExec()
705 if (cmd->outfdptr && *cmd->outfdptr == -1) { in virExec()
707 *cmd->outfdptr = pipeout[0]; in virExec()
709 if (cmd->errfdptr && *cmd->errfdptr == -1) { in virExec()
711 *cmd->errfdptr = pipeerr[0]; in virExec()
714 cmd->pid = pid; in virExec()
721 if (cmd->mask) in virExec()
722 umask(cmd->mask); in virExec()
725 if (virCommandMassClose(cmd, childin, childout, childerr) < 0) in virExec()
756 if (cmd->pidfile && in virExec()
762 if (cmd->flags & VIR_EXEC_DAEMON) { in virExec()
791 if (cmd->pidfile && in virExec()
803 if (cmd->pidfile) { in virExec()
807 pidfilefd = virPidFileAcquirePath(cmd->pidfile, false, pid); in virExec()
827 if (cmd->setMaxMemLock && in virExec()
828 virProcessSetMaxMemLock(pid, cmd->maxMemLock) < 0) in virExec()
830 if (cmd->setMaxProcesses && in virExec()
831 virProcessSetMaxProcesses(pid, cmd->maxProcesses) < 0) in virExec()
833 if (cmd->setMaxFiles && in virExec()
834 virProcessSetMaxFiles(pid, cmd->maxFiles) < 0) in virExec()
836 if (cmd->setMaxCore && in virExec()
837 virProcessSetMaxCoreSize(pid, cmd->maxCore) < 0) in virExec()
840 if (cmd->hook) { in virExec()
841 VIR_DEBUG("Run hook %p %p", cmd->hook, cmd->opaque); in virExec()
842 ret = cmd->hook(cmd->opaque); in virExec()
849 if (cmd->seLinuxLabel) { in virExec()
850 VIR_DEBUG("Setting child security label to %s", cmd->seLinuxLabel); in virExec()
851 if (setexeccon_raw(cmd->seLinuxLabel) == -1) { in virExec()
855 cmd->seLinuxLabel, cmd->args[0]); in virExec()
862 if (cmd->appArmorProfile) { in virExec()
863 VIR_DEBUG("Setting child AppArmor profile to %s", cmd->appArmorProfile); in virExec()
864 if (aa_change_profile(cmd->appArmorProfile) < 0) { in virExec()
868 cmd->appArmorProfile, cmd->args[0]); in virExec()
874 if (virExecCommon(cmd, groups, ngroups) < 0) in virExec()
877 if (virCommandHandshakeChild(cmd) < 0) in virExec()
883 if (cmd->env) in virExec()
884 execve(binary, cmd->args, cmd->env); in virExec()
886 execv(binary, cmd->args); in virExec()
891 cmd->args[0]); in virExec()
953 virCommand *cmd; in virCommandNewArgs() local
955 cmd = g_new0(virCommand, 1); in virCommandNewArgs()
957 cmd->handshakeWait[0] = -1; in virCommandNewArgs()
958 cmd->handshakeWait[1] = -1; in virCommandNewArgs()
959 cmd->handshakeNotify[0] = -1; in virCommandNewArgs()
960 cmd->handshakeNotify[1] = -1; in virCommandNewArgs()
962 cmd->infd = cmd->inpipe = cmd->outfd = cmd->errfd = -1; in virCommandNewArgs()
963 cmd->pid = -1; in virCommandNewArgs()
964 cmd->uid = -1; in virCommandNewArgs()
965 cmd->gid = -1; in virCommandNewArgs()
967 virCommandAddArgSet(cmd, args); in virCommandNewArgs()
969 return cmd; in virCommandNewArgs()
984 virCommand *cmd; in virCommandNewArgList() local
988 cmd = virCommandNewVAList(binary, list); in virCommandNewArgList()
991 return cmd; in virCommandNewArgList()
1005 virCommand *cmd = virCommandNew(binary); in virCommandNewVAList() local
1008 if (virCommandHasError(cmd)) in virCommandNewVAList()
1009 return cmd; in virCommandNewVAList()
1012 virCommandAddArg(cmd, arg); in virCommandNewVAList()
1013 return cmd; in virCommandNewVAList()
1038 virCommandPassFDIndex(virCommand *cmd, int fd, unsigned int flags, size_t *idx) in virCommandPassFDIndex() argument
1040 if (!cmd) { in virCommandPassFDIndex()
1048 if (!cmd->has_error) in virCommandPassFDIndex()
1049 cmd->has_error = -1; in virCommandPassFDIndex()
1053 virCommandFDSet(cmd, fd, flags); in virCommandPassFDIndex()
1056 *idx = cmd->npassfd - 1; in virCommandPassFDIndex()
1074 virCommandPassFD(virCommand *cmd, int fd, unsigned int flags) in virCommandPassFD() argument
1076 virCommandPassFDIndex(cmd, fd, flags, NULL); in virCommandPassFD()
1090 virCommandPassFDGetFDIndex(virCommand *cmd, int fd) in virCommandPassFDGetFDIndex() argument
1094 if (virCommandHasError(cmd)) in virCommandPassFDGetFDIndex()
1097 while (i < cmd->npassfd) { in virCommandPassFDGetFDIndex()
1098 if (cmd->passfd[i].fd == fd) in virCommandPassFDGetFDIndex()
1116 virCommandSetPidFile(virCommand *cmd, const char *pidfile) in virCommandSetPidFile() argument
1118 if (virCommandHasError(cmd)) in virCommandSetPidFile()
1121 VIR_FREE(cmd->pidfile); in virCommandSetPidFile()
1122 cmd->pidfile = g_strdup(pidfile); in virCommandSetPidFile()
1127 virCommandGetGID(virCommand *cmd) in virCommandGetGID() argument
1129 return cmd->gid; in virCommandGetGID()
1134 virCommandGetUID(virCommand *cmd) in virCommandGetUID() argument
1136 return cmd->uid; in virCommandGetUID()
1141 virCommandSetGID(virCommand *cmd, gid_t gid) in virCommandSetGID() argument
1143 if (virCommandHasError(cmd)) in virCommandSetGID()
1146 cmd->gid = gid; in virCommandSetGID()
1150 virCommandSetUID(virCommand *cmd, uid_t uid) in virCommandSetUID() argument
1152 if (virCommandHasError(cmd)) in virCommandSetUID()
1155 cmd->uid = uid; in virCommandSetUID()
1159 virCommandSetMaxMemLock(virCommand *cmd, unsigned long long bytes) in virCommandSetMaxMemLock() argument
1161 if (virCommandHasError(cmd)) in virCommandSetMaxMemLock()
1164 cmd->maxMemLock = bytes; in virCommandSetMaxMemLock()
1165 cmd->setMaxMemLock = true; in virCommandSetMaxMemLock()
1169 virCommandSetMaxProcesses(virCommand *cmd, unsigned int procs) in virCommandSetMaxProcesses() argument
1171 if (virCommandHasError(cmd)) in virCommandSetMaxProcesses()
1174 cmd->maxProcesses = procs; in virCommandSetMaxProcesses()
1175 cmd->setMaxProcesses = true; in virCommandSetMaxProcesses()
1179 virCommandSetMaxFiles(virCommand *cmd, unsigned int files) in virCommandSetMaxFiles() argument
1181 if (virCommandHasError(cmd)) in virCommandSetMaxFiles()
1184 cmd->maxFiles = files; in virCommandSetMaxFiles()
1185 cmd->setMaxFiles = true; in virCommandSetMaxFiles()
1188 void virCommandSetMaxCoreSize(virCommand *cmd, unsigned long long bytes) in virCommandSetMaxCoreSize() argument
1190 if (virCommandHasError(cmd)) in virCommandSetMaxCoreSize()
1193 cmd->maxCore = bytes; in virCommandSetMaxCoreSize()
1194 cmd->setMaxCore = true; in virCommandSetMaxCoreSize()
1197 void virCommandSetUmask(virCommand *cmd, int mask) in virCommandSetUmask() argument
1199 if (virCommandHasError(cmd)) in virCommandSetUmask()
1202 cmd->mask = mask; in virCommandSetUmask()
1212 virCommandClearCaps(virCommand *cmd) in virCommandClearCaps() argument
1214 if (virCommandHasError(cmd)) in virCommandClearCaps()
1217 cmd->flags |= VIR_EXEC_CLEAR_CAPS; in virCommandClearCaps()
1228 virCommandAllowCap(virCommand *cmd, in virCommandAllowCap() argument
1231 if (virCommandHasError(cmd)) in virCommandAllowCap()
1234 cmd->capabilities |= (1ULL << capability); in virCommandAllowCap()
1249 virCommandSetSELinuxLabel(virCommand *cmd, in virCommandSetSELinuxLabel() argument
1252 if (virCommandHasError(cmd)) in virCommandSetSELinuxLabel()
1256 VIR_FREE(cmd->seLinuxLabel); in virCommandSetSELinuxLabel()
1257 cmd->seLinuxLabel = g_strdup(label); in virCommandSetSELinuxLabel()
1273 virCommandSetAppArmorProfile(virCommand *cmd, in virCommandSetAppArmorProfile() argument
1276 if (virCommandHasError(cmd)) in virCommandSetAppArmorProfile()
1280 VIR_FREE(cmd->appArmorProfile); in virCommandSetAppArmorProfile()
1281 cmd->appArmorProfile = g_strdup(profile); in virCommandSetAppArmorProfile()
1296 virCommandDaemonize(virCommand *cmd) in virCommandDaemonize() argument
1298 if (virCommandHasError(cmd)) in virCommandDaemonize()
1301 cmd->flags |= VIR_EXEC_DAEMON; in virCommandDaemonize()
1312 virCommandNonblockingFDs(virCommand *cmd) in virCommandNonblockingFDs() argument
1314 if (virCommandHasError(cmd)) in virCommandNonblockingFDs()
1317 cmd->flags |= VIR_EXEC_NONBLOCK; in virCommandNonblockingFDs()
1331 virCommandRawStatus(virCommand *cmd) in virCommandRawStatus() argument
1333 if (virCommandHasError(cmd)) in virCommandRawStatus()
1336 cmd->rawStatus = true; in virCommandRawStatus()
1344 virCommandAddEnv(virCommand *cmd, in virCommandAddEnv() argument
1353 for (i = 0; i < cmd->nenv; ++i) { in virCommandAddEnv()
1355 if (STREQLEN(cmd->env[i], env, namelen + 1)) { in virCommandAddEnv()
1356 VIR_FREE(cmd->env[i]); in virCommandAddEnv()
1357 cmd->env[i] = g_steal_pointer(&env); in virCommandAddEnv()
1363 VIR_RESIZE_N(cmd->env, cmd->maxenv, cmd->nenv, 1 + 1); in virCommandAddEnv()
1365 cmd->env[cmd->nenv++] = g_steal_pointer(&env); in virCommandAddEnv()
1377 virCommandAddEnvFormat(virCommand *cmd, const char *format, ...) in virCommandAddEnvFormat() argument
1382 if (virCommandHasError(cmd)) in virCommandAddEnvFormat()
1389 virCommandAddEnv(cmd, env); in virCommandAddEnvFormat()
1402 virCommandAddEnvPair(virCommand *cmd, const char *name, const char *value) in virCommandAddEnvPair() argument
1404 virCommandAddEnvFormat(cmd, "%s=%s", name, value); in virCommandAddEnvPair()
1417 virCommandAddEnvString(virCommand *cmd, const char *str) in virCommandAddEnvString() argument
1421 if (virCommandHasError(cmd)) in virCommandAddEnvString()
1426 virCommandAddEnv(cmd, env); in virCommandAddEnvString()
1439 virCommandAddEnvPass(virCommand *cmd, const char *name) in virCommandAddEnvPass() argument
1442 if (virCommandHasError(cmd)) in virCommandAddEnvPass()
1447 virCommandAddEnvPair(cmd, name, value); in virCommandAddEnvPass()
1459 virCommandAddEnvPassCommon(virCommand *cmd) in virCommandAddEnvPassCommon() argument
1461 if (virCommandHasError(cmd)) in virCommandAddEnvPassCommon()
1464 VIR_RESIZE_N(cmd->env, cmd->maxenv, cmd->nenv, 9); in virCommandAddEnvPassCommon()
1466 virCommandAddEnvPair(cmd, "LC_ALL", "C"); in virCommandAddEnvPassCommon()
1468 virCommandAddEnvPass(cmd, "LD_PRELOAD"); in virCommandAddEnvPassCommon()
1469 virCommandAddEnvPass(cmd, "LD_LIBRARY_PATH"); in virCommandAddEnvPassCommon()
1470 virCommandAddEnvPass(cmd, "PATH"); in virCommandAddEnvPassCommon()
1471 virCommandAddEnvPass(cmd, "HOME"); in virCommandAddEnvPassCommon()
1472 virCommandAddEnvPass(cmd, "USER"); in virCommandAddEnvPassCommon()
1473 virCommandAddEnvPass(cmd, "LOGNAME"); in virCommandAddEnvPassCommon()
1474 virCommandAddEnvPass(cmd, "TMPDIR"); in virCommandAddEnvPassCommon()
1479 virCommandAddEnvXDG(virCommand *cmd, const char *baseDir) in virCommandAddEnvXDG() argument
1481 if (virCommandHasError(cmd)) in virCommandAddEnvXDG()
1484 VIR_RESIZE_N(cmd->env, cmd->maxenv, cmd->nenv, 3); in virCommandAddEnvXDG()
1486 virCommandAddEnvFormat(cmd, "XDG_DATA_HOME=%s/%s", in virCommandAddEnvXDG()
1488 virCommandAddEnvFormat(cmd, "XDG_CACHE_HOME=%s/%s", in virCommandAddEnvXDG()
1490 virCommandAddEnvFormat(cmd, "XDG_CONFIG_HOME=%s/%s", in virCommandAddEnvXDG()
1503 virCommandAddArg(virCommand *cmd, const char *val) in virCommandAddArg() argument
1505 if (virCommandHasError(cmd)) in virCommandAddArg()
1509 cmd->has_error = EINVAL; in virCommandAddArg()
1514 VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, 1 + 1); in virCommandAddArg()
1516 cmd->args[cmd->nargs++] = g_strdup(val); in virCommandAddArg()
1529 virCommandAddArgBuffer(virCommand *cmd, virBuffer *buf) in virCommandAddArgBuffer() argument
1533 if (virCommandHasError(cmd)) in virCommandAddArgBuffer()
1540 VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, 1 + 1); in virCommandAddArgBuffer()
1542 cmd->args[cmd->nargs] = g_steal_pointer(&str); in virCommandAddArgBuffer()
1543 cmd->nargs++; in virCommandAddArgBuffer()
1556 virCommandAddArgFormat(virCommand *cmd, const char *format, ...) in virCommandAddArgFormat() argument
1561 if (virCommandHasError(cmd)) in virCommandAddArgFormat()
1569 VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, 1 + 1); in virCommandAddArgFormat()
1571 cmd->args[cmd->nargs++] = arg; in virCommandAddArgFormat()
1583 virCommandAddArgPair(virCommand *cmd, const char *name, const char *val) in virCommandAddArgPair() argument
1586 cmd->has_error = EINVAL; in virCommandAddArgPair()
1589 virCommandAddArgFormat(cmd, "%s=%s", name, val); in virCommandAddArgPair()
1600 virCommandAddArgSet(virCommand *cmd, const char *const*vals) in virCommandAddArgSet() argument
1604 if (virCommandHasError(cmd)) in virCommandAddArgSet()
1608 cmd->has_error = EINVAL; in virCommandAddArgSet()
1616 VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, narg + 1); in virCommandAddArgSet()
1623 cmd->args[cmd->nargs++] = arg; in virCommandAddArgSet()
1635 virCommandAddArgList(virCommand *cmd, ...) in virCommandAddArgList() argument
1640 if (virCommandHasError(cmd)) in virCommandAddArgList()
1643 va_start(list, cmd); in virCommandAddArgList()
1649 VIR_RESIZE_N(cmd->args, cmd->maxargs, cmd->nargs, narg + 1); in virCommandAddArgList()
1651 va_start(list, cmd); in virCommandAddArgList()
1657 cmd->args[cmd->nargs++] = arg; in virCommandAddArgList()
1672 virCommandSetWorkingDirectory(virCommand *cmd, const char *pwd) in virCommandSetWorkingDirectory() argument
1674 if (virCommandHasError(cmd)) in virCommandSetWorkingDirectory()
1677 if (cmd->pwd) { in virCommandSetWorkingDirectory()
1678 cmd->has_error = -1; in virCommandSetWorkingDirectory()
1681 cmd->pwd = g_strdup(pwd); in virCommandSetWorkingDirectory()
1687 virCommandGetNumSendBuffers(virCommand *cmd) in virCommandGetNumSendBuffers() argument
1689 return cmd->numSendBuffers; in virCommandGetNumSendBuffers()
1694 virCommandFreeSendBuffers(virCommand *cmd) in virCommandFreeSendBuffers() argument
1698 for (i = 0; i < virCommandGetNumSendBuffers(cmd); i++) { in virCommandFreeSendBuffers()
1699 VIR_FORCE_CLOSE(cmd->sendBuffers[i].fd); in virCommandFreeSendBuffers()
1700 VIR_FREE(cmd->sendBuffers[i].buffer); in virCommandFreeSendBuffers()
1702 VIR_FREE(cmd->sendBuffers); in virCommandFreeSendBuffers()
1723 virCommandSetSendBuffer(virCommand *cmd, in virCommandSetSendBuffer() argument
1731 if (virCommandHasError(cmd)) in virCommandSetSendBuffer()
1735 cmd->has_error = errno; in virCommandSetSendBuffer()
1740 cmd->has_error = errno; in virCommandSetSendBuffer()
1746 i = virCommandGetNumSendBuffers(cmd); in virCommandSetSendBuffer()
1747 VIR_REALLOC_N(cmd->sendBuffers, i + 1); in virCommandSetSendBuffer()
1749 cmd->sendBuffers[i].fd = pipefd[1]; in virCommandSetSendBuffer()
1750 cmd->sendBuffers[i].buffer = g_steal_pointer(&localbuf); in virCommandSetSendBuffer()
1751 cmd->sendBuffers[i].buflen = buflen; in virCommandSetSendBuffer()
1752 cmd->sendBuffers[i].offset = 0; in virCommandSetSendBuffer()
1754 cmd->numSendBuffers++; in virCommandSetSendBuffer()
1756 virCommandPassFD(cmd, pipefd[0], VIR_COMMAND_PASS_FD_CLOSE_PARENT); in virCommandSetSendBuffer()
1763 virCommandSendBuffersFillPollfd(virCommand *cmd, in virCommandSendBuffersFillPollfd() argument
1769 for (i = 0, j = 0; i < virCommandGetNumSendBuffers(cmd); i++) { in virCommandSendBuffersFillPollfd()
1770 if (cmd->sendBuffers[i].fd >= 0) { in virCommandSendBuffersFillPollfd()
1771 fds[startidx + j].fd = cmd->sendBuffers[i].fd; in virCommandSendBuffersFillPollfd()
1783 virCommandSendBuffersHandlePoll(virCommand *cmd, in virCommandSendBuffersHandlePoll() argument
1789 for (i = 0; i < virCommandGetNumSendBuffers(cmd); i++) { in virCommandSendBuffersHandlePoll()
1790 if (fds->fd == cmd->sendBuffers[i].fd) in virCommandSendBuffersHandlePoll()
1793 if (i == virCommandGetNumSendBuffers(cmd)) in virCommandSendBuffersHandlePoll()
1797 cmd->sendBuffers[i].buffer + cmd->sendBuffers[i].offset, in virCommandSendBuffersHandlePoll()
1798 cmd->sendBuffers[i].buflen - cmd->sendBuffers[i].offset); in virCommandSendBuffersHandlePoll()
1802 "on fd %d", cmd->sendBuffers[i].fd); in virCommandSendBuffersHandlePoll()
1803 VIR_FORCE_CLOSE(cmd->sendBuffers[i].fd); in virCommandSendBuffersHandlePoll()
1810 cmd->sendBuffers[i].offset += done; in virCommandSendBuffersHandlePoll()
1811 if (cmd->sendBuffers[i].offset == cmd->sendBuffers[i].buflen) in virCommandSendBuffersHandlePoll()
1812 VIR_FORCE_CLOSE(cmd->sendBuffers[i].fd); in virCommandSendBuffersHandlePoll()
1830 virCommandSetInputBuffer(virCommand *cmd, const char *inbuf) in virCommandSetInputBuffer() argument
1832 if (virCommandHasError(cmd)) in virCommandSetInputBuffer()
1835 if (cmd->infd != -1 || cmd->inbuf) { in virCommandSetInputBuffer()
1836 cmd->has_error = -1; in virCommandSetInputBuffer()
1841 cmd->inbuf = g_strdup(inbuf); in virCommandSetInputBuffer()
1859 virCommandSetOutputBuffer(virCommand *cmd, char **outbuf) in virCommandSetOutputBuffer() argument
1862 if (virCommandHasError(cmd)) in virCommandSetOutputBuffer()
1865 if (cmd->outfdptr) { in virCommandSetOutputBuffer()
1866 cmd->has_error = -1; in virCommandSetOutputBuffer()
1871 cmd->outbuf = outbuf; in virCommandSetOutputBuffer()
1872 cmd->outfdptr = &cmd->outfd; in virCommandSetOutputBuffer()
1893 virCommandSetErrorBuffer(virCommand *cmd, char **errbuf) in virCommandSetErrorBuffer() argument
1896 if (virCommandHasError(cmd)) in virCommandSetErrorBuffer()
1899 if (cmd->errfdptr) { in virCommandSetErrorBuffer()
1900 cmd->has_error = -1; in virCommandSetErrorBuffer()
1905 cmd->errbuf = errbuf; in virCommandSetErrorBuffer()
1906 cmd->errfdptr = &cmd->errfd; in virCommandSetErrorBuffer()
1918 virCommandSetInputFD(virCommand *cmd, int infd) in virCommandSetInputFD() argument
1920 if (virCommandHasError(cmd)) in virCommandSetInputFD()
1923 if (cmd->infd != -1 || cmd->inbuf) { in virCommandSetInputFD()
1924 cmd->has_error = -1; in virCommandSetInputFD()
1929 cmd->has_error = -1; in virCommandSetInputFD()
1934 cmd->infd = infd; in virCommandSetInputFD()
1948 virCommandSetOutputFD(virCommand *cmd, int *outfd) in virCommandSetOutputFD() argument
1950 if (virCommandHasError(cmd)) in virCommandSetOutputFD()
1953 if (cmd->outfdptr) { in virCommandSetOutputFD()
1954 cmd->has_error = -1; in virCommandSetOutputFD()
1959 cmd->outfdptr = outfd; in virCommandSetOutputFD()
1974 virCommandSetErrorFD(virCommand *cmd, int *errfd) in virCommandSetErrorFD() argument
1976 if (virCommandHasError(cmd)) in virCommandSetErrorFD()
1979 if (cmd->errfdptr) { in virCommandSetErrorFD()
1980 cmd->has_error = -1; in virCommandSetErrorFD()
1985 cmd->errfdptr = errfd; in virCommandSetErrorFD()
2003 virCommandSetPreExecHook(virCommand *cmd, virExecHook hook, void *opaque) in virCommandSetPreExecHook() argument
2005 if (virCommandHasError(cmd)) in virCommandSetPreExecHook()
2008 if (cmd->hook) { in virCommandSetPreExecHook()
2009 cmd->has_error = -1; in virCommandSetPreExecHook()
2013 cmd->hook = hook; in virCommandSetPreExecHook()
2014 cmd->opaque = opaque; in virCommandSetPreExecHook()
2029 virCommandWriteArgLog(virCommand *cmd, int logfd) in virCommandWriteArgLog() argument
2036 if (virCommandHasError(cmd)) in virCommandWriteArgLog()
2039 for (i = 0; i < cmd->nenv; i++) { in virCommandWriteArgLog()
2040 if (safewrite(logfd, cmd->env[i], strlen(cmd->env[i])) < 0) in virCommandWriteArgLog()
2045 for (i = 0; i < cmd->nargs; i++) { in virCommandWriteArgLog()
2046 if (safewrite(logfd, cmd->args[i], strlen(cmd->args[i])) < 0) in virCommandWriteArgLog()
2048 if (safewrite(logfd, i == cmd->nargs - 1 ? "\n" : " ", 1) < 0) in virCommandWriteArgLog()
2054 cmd->args[0], g_strerror(ioError)); in virCommandWriteArgLog()
2073 virCommandToStringBuf(virCommand *cmd, in virCommandToStringBuf() argument
2079 const char *command = cmd->args[0]; in virCommandToStringBuf()
2085 if (virCommandHasError(cmd)) { in virCommandToStringBuf()
2086 virCommandRaiseError(cmd); in virCommandToStringBuf()
2090 for (i = 0; i < cmd->nenv; i++) { in virCommandToStringBuf()
2093 char *eq = strchr(cmd->env[i], '='); in virCommandToStringBuf()
2101 virBufferAdd(buf, cmd->env[i], eq - cmd->env[i]); in virCommandToStringBuf()
2112 for (i = 1; i < cmd->nargs; i++) { in virCommandToStringBuf()
2122 if (cmd->args[i][0] != '-') { in virCommandToStringBuf()
2126 for (j = i - 1; j < cmd->nargs; j++) { in virCommandToStringBuf()
2127 if (cmd->args[j][0] == '-') { in virCommandToStringBuf()
2140 virBufferEscapeShell(buf, cmd->args[i]); in virCommandToStringBuf()
2148 virCommandToStringFull(virCommand *cmd, in virCommandToStringFull() argument
2154 if (virCommandToStringBuf(cmd, &buf, linebreaks, stripCommandPath)) in virCommandToStringFull()
2162 virCommandToString(virCommand *cmd, in virCommandToString() argument
2165 return virCommandToStringFull(cmd, linebreaks, false); in virCommandToString()
2170 virCommandGetArgList(virCommand *cmd, in virCommandGetArgList() argument
2175 if (virCommandHasError(cmd)) { in virCommandGetArgList()
2176 virCommandRaiseError(cmd); in virCommandGetArgList()
2180 *args = g_new0(char *, cmd->nargs); in virCommandGetArgList()
2182 for (i = 1; i < cmd->nargs; i++) in virCommandGetArgList()
2183 (*args)[i - 1] = g_strdup(cmd->args[i]); in virCommandGetArgList()
2194 virCommandProcessIO(virCommand *cmd) in virCommandProcessIO() argument
2209 if (cmd->inbuf) in virCommandProcessIO()
2210 inlen = strlen(cmd->inbuf); in virCommandProcessIO()
2216 if (cmd->outbuf) { in virCommandProcessIO()
2217 outfd = cmd->outfd; in virCommandProcessIO()
2218 VIR_FREE(*cmd->outbuf); in virCommandProcessIO()
2219 *cmd->outbuf = g_new0(char, 1); in virCommandProcessIO()
2221 if (cmd->errbuf) { in virCommandProcessIO()
2222 errfd = cmd->errfd; in virCommandProcessIO()
2223 VIR_FREE(*cmd->errbuf); in virCommandProcessIO()
2224 *cmd->errbuf = g_new0(char, 1); in virCommandProcessIO()
2230 fds = g_new0(struct pollfd, 3 + virCommandGetNumSendBuffers(cmd)); in virCommandProcessIO()
2236 if (cmd->inpipe != -1) { in virCommandProcessIO()
2237 fds[nfds].fd = cmd->inpipe; in virCommandProcessIO()
2255 nfds += virCommandSendBuffersFillPollfd(cmd, fds, nfds); in virCommandProcessIO()
2276 buf = cmd->outbuf; in virCommandProcessIO()
2279 buf = cmd->errbuf; in virCommandProcessIO()
2305 fds[i].fd == cmd->inpipe) { in virCommandProcessIO()
2308 done = write(cmd->inpipe, cmd->inbuf + inoff, in virCommandProcessIO()
2313 "on fd %d", cmd->inpipe); in virCommandProcessIO()
2314 VIR_FORCE_CLOSE(cmd->inpipe); in virCommandProcessIO()
2323 VIR_FORCE_CLOSE(cmd->inpipe); in virCommandProcessIO()
2326 if (virCommandSendBuffersHandlePoll(cmd, &fds[i]) < 0) in virCommandProcessIO()
2334 if (cmd->outbuf && *cmd->outbuf) in virCommandProcessIO()
2335 (*cmd->outbuf)[outlen] = '\0'; in virCommandProcessIO()
2336 if (cmd->errbuf && *cmd->errbuf) in virCommandProcessIO()
2337 (*cmd->errbuf)[errlen] = '\0'; in virCommandProcessIO()
2354 int virCommandExec(virCommand *cmd, gid_t *groups, int ngroups) in virCommandExec() argument
2356 if (virCommandHasError(cmd)) { in virCommandExec()
2357 virCommandRaiseError(cmd); in virCommandExec()
2361 if (virExecCommon(cmd, groups, ngroups) < 0) in virCommandExec()
2364 execve(cmd->args[0], cmd->args, cmd->env); in virCommandExec()
2368 cmd->args[0]); in virCommandExec()
2389 virCommandRun(virCommand *cmd, int *exitstatus) in virCommandRun() argument
2400 if (virCommandHasError(cmd)) { in virCommandRun()
2401 virCommandRaiseError(cmd); in virCommandRun()
2408 string_io = cmd->inbuf || cmd->outbuf || cmd->errbuf; in virCommandRun()
2409 if (cmd->infd != -1 && in virCommandRun()
2410 (fstat(cmd->infd, &st) < 0 || !S_ISREG(st.st_mode))) in virCommandRun()
2412 if (cmd->outfdptr && cmd->outfdptr != &cmd->outfd && in virCommandRun()
2413 (*cmd->outfdptr == -1 || in virCommandRun()
2414 fstat(*cmd->outfdptr, &st) < 0 || !S_ISREG(st.st_mode))) in virCommandRun()
2416 if (cmd->errfdptr && cmd->errfdptr != &cmd->errfd && in virCommandRun()
2417 (*cmd->errfdptr == -1 || in virCommandRun()
2418 fstat(*cmd->errfdptr, &st) < 0 || !S_ISREG(st.st_mode))) in virCommandRun()
2421 if (!(cmd->flags & VIR_EXEC_DAEMON) || string_io) { in virCommandRun()
2427 if ((cmd->flags & VIR_EXEC_DAEMON) && string_io) { in virCommandRun()
2436 if (cmd->outbuf && cmd->outbuf == cmd->errbuf) { in virCommandRun()
2437 cmd->errfdptr = &cmd->outfd; in virCommandRun()
2438 cmd->errbuf = NULL; in virCommandRun()
2446 if (!(cmd->flags & VIR_EXEC_DAEMON)) { in virCommandRun()
2447 if (!cmd->outfdptr) { in virCommandRun()
2448 cmd->outfdptr = &cmd->outfd; in virCommandRun()
2449 cmd->outbuf = &outbuf; in virCommandRun()
2452 if (!cmd->errfdptr) { in virCommandRun()
2453 cmd->errfdptr = &cmd->errfd; in virCommandRun()
2454 cmd->errbuf = &errbuf; in virCommandRun()
2459 cmd->flags |= VIR_EXEC_RUN_SYNC; in virCommandRun()
2460 if (virCommandRunAsync(cmd, NULL) < 0) { in virCommandRun()
2461 cmd->has_error = -1; in virCommandRun()
2466 VIR_FORCE_CLOSE(cmd->infd); in virCommandRun()
2467 ret = virCommandProcessIO(cmd); in virCommandRun()
2470 if (virCommandWait(cmd, exitstatus) < 0) in virCommandRun()
2477 cmd->outbuf ? NULLSTR(*cmd->outbuf) : "(null)", in virCommandRun()
2478 cmd->errbuf ? NULLSTR(*cmd->errbuf) : "(null)"); in virCommandRun()
2484 VIR_FORCE_CLOSE(cmd->inpipe); in virCommandRun()
2485 if (cmd->outbuf == &outbuf) { in virCommandRun()
2486 tmpfd = cmd->outfd; in virCommandRun()
2487 if (VIR_CLOSE(cmd->outfd) < 0) in virCommandRun()
2489 cmd->outfdptr = NULL; in virCommandRun()
2490 cmd->outbuf = NULL; in virCommandRun()
2493 if (cmd->errbuf == &errbuf) { in virCommandRun()
2494 tmpfd = cmd->errfd; in virCommandRun()
2495 if (VIR_CLOSE(cmd->errfd) < 0) in virCommandRun()
2497 cmd->errfdptr = NULL; in virCommandRun()
2498 cmd->errbuf = NULL; in virCommandRun()
2509 virCommand *cmd = opaque; in virCommandDoAsyncIOHelper() local
2510 if (virCommandProcessIO(cmd) < 0) { in virCommandDoAsyncIOHelper()
2512 cmd->has_error = errno ? errno : -1; in virCommandDoAsyncIOHelper()
2538 virCommandRunAsync(virCommand *cmd, pid_t *pid) in virCommandRunAsync() argument
2546 if (virCommandHasError(cmd)) { in virCommandRunAsync()
2547 virCommandRaiseError(cmd); in virCommandRunAsync()
2551 synchronous = cmd->flags & VIR_EXEC_RUN_SYNC; in virCommandRunAsync()
2552 cmd->flags &= ~VIR_EXEC_RUN_SYNC; in virCommandRunAsync()
2556 if (cmd->inbuf && cmd->infd == -1 && in virCommandRunAsync()
2557 (synchronous || cmd->flags & VIR_EXEC_ASYNC_IO)) { in virCommandRunAsync()
2559 cmd->has_error = -1; in virCommandRunAsync()
2562 cmd->infd = infd[0]; in virCommandRunAsync()
2563 cmd->inpipe = infd[1]; in virCommandRunAsync()
2565 if (fcntl(cmd->inpipe, F_SETFL, O_NONBLOCK) < 0) { in virCommandRunAsync()
2568 cmd->has_error = -1; in virCommandRunAsync()
2572 } else if ((cmd->inbuf && cmd->infd == -1) || in virCommandRunAsync()
2573 (cmd->outbuf && cmd->outfdptr != &cmd->outfd) || in virCommandRunAsync()
2574 (cmd->errbuf && cmd->errfdptr != &cmd->errfd)) { in virCommandRunAsync()
2580 if (cmd->pid != -1) { in virCommandRunAsync()
2583 (long long) cmd->pid); in virCommandRunAsync()
2587 if (!synchronous && (cmd->flags & VIR_EXEC_DAEMON)) { in virCommandRunAsync()
2592 if (cmd->pwd && (cmd->flags & VIR_EXEC_DAEMON)) { in virCommandRunAsync()
2595 cmd->pwd); in virCommandRunAsync()
2598 if (cmd->pidfile && !(cmd->flags & VIR_EXEC_DAEMON)) { in virCommandRunAsync()
2608 if (!(cmdstr = virCommandToStringFull(cmd, dryRunBufferArgLinebreaks, in virCommandRunAsync()
2619 dryRunCallback((const char *const*)cmd->args, in virCommandRunAsync()
2620 (const char *const*)cmd->env, in virCommandRunAsync()
2621 cmd->inbuf, cmd->outbuf, cmd->errbuf, in virCommandRunAsync()
2628 str = virCommandToString(cmd, false); in virCommandRunAsync()
2629 VIR_DEBUG("About to run %s", str ? str : cmd->args[0]); in virCommandRunAsync()
2630 ret = virExec(cmd); in virCommandRunAsync()
2632 ret, (int)cmd->pid); in virCommandRunAsync()
2634 for (i = 0; i < cmd->npassfd; i++) { in virCommandRunAsync()
2635 if (cmd->passfd[i].flags & VIR_COMMAND_PASS_FD_CLOSE_PARENT) in virCommandRunAsync()
2636 VIR_FORCE_CLOSE(cmd->passfd[i].fd); in virCommandRunAsync()
2638 cmd->npassfd = 0; in virCommandRunAsync()
2639 VIR_FREE(cmd->passfd); in virCommandRunAsync()
2642 *pid = cmd->pid; in virCommandRunAsync()
2644 cmd->reap = true; in virCommandRunAsync()
2646 if (ret == 0 && cmd->flags & VIR_EXEC_ASYNC_IO) { in virCommandRunAsync()
2647 if (cmd->inbuf) in virCommandRunAsync()
2648 VIR_FORCE_CLOSE(cmd->infd); in virCommandRunAsync()
2650 cmd->has_error = 0; in virCommandRunAsync()
2651 cmd->asyncioThread = g_new0(virThread, 1); in virCommandRunAsync()
2653 if (virThreadCreateFull(cmd->asyncioThread, true, in virCommandRunAsync()
2655 "cmd-async-io", false, cmd) < 0) { in virCommandRunAsync()
2659 VIR_FREE(cmd->asyncioThread); in virCommandRunAsync()
2660 virCommandAbort(cmd); in virCommandRunAsync()
2667 VIR_FORCE_CLOSE(cmd->infd); in virCommandRunAsync()
2668 VIR_FORCE_CLOSE(cmd->inpipe); in virCommandRunAsync()
2690 virCommandWait(virCommand *cmd, int *exitstatus) in virCommandWait() argument
2695 if (virCommandHasError(cmd)) { in virCommandWait()
2696 virCommandRaiseError(cmd); in virCommandWait()
2710 if (cmd->pid == -1) { in virCommandWait()
2722 ret = virProcessWait(cmd->pid, &status, true); in virCommandWait()
2723 if (cmd->flags & VIR_EXEC_ASYNC_IO) { in virCommandWait()
2724 cmd->flags &= ~VIR_EXEC_ASYNC_IO; in virCommandWait()
2725 virThreadJoin(cmd->asyncioThread); in virCommandWait()
2726 VIR_FREE(cmd->asyncioThread); in virCommandWait()
2727 VIR_FORCE_CLOSE(cmd->inpipe); in virCommandWait()
2728 if (cmd->has_error) { in virCommandWait()
2730 if (cmd->has_error < 0) in virCommandWait()
2733 virReportSystemError(cmd->has_error, "%s", msg); in virCommandWait()
2738 cmd->pid = -1; in virCommandWait()
2739 cmd->reap = false; in virCommandWait()
2740 if (exitstatus && (cmd->rawStatus || WIFEXITED(status))) { in virCommandWait()
2741 *exitstatus = cmd->rawStatus ? status : WEXITSTATUS(status); in virCommandWait()
2743 g_autofree char *str = virCommandToString(cmd, false); in virCommandWait()
2745 bool haveErrMsg = cmd->errbuf && *cmd->errbuf && (*cmd->errbuf)[0]; in virCommandWait()
2749 str ? str : cmd->args[0], NULLSTR(st), in virCommandWait()
2751 haveErrMsg ? *cmd->errbuf : ""); in virCommandWait()
2770 virCommandAbort(virCommand *cmd) in virCommandAbort() argument
2772 if (!cmd || cmd->pid == -1) in virCommandAbort()
2774 virProcessAbort(cmd->pid); in virCommandAbort()
2775 cmd->pid = -1; in virCommandAbort()
2776 cmd->reap = false; in virCommandAbort()
2789 void virCommandRequireHandshake(virCommand *cmd) in virCommandRequireHandshake() argument
2791 if (virCommandHasError(cmd)) in virCommandRequireHandshake()
2794 if (cmd->handshake) { in virCommandRequireHandshake()
2795 cmd->has_error = -1; in virCommandRequireHandshake()
2800 if (virPipeQuiet(cmd->handshakeWait) < 0) { in virCommandRequireHandshake()
2801 cmd->has_error = errno; in virCommandRequireHandshake()
2804 if (virPipeQuiet(cmd->handshakeNotify) < 0) { in virCommandRequireHandshake()
2805 VIR_FORCE_CLOSE(cmd->handshakeWait[0]); in virCommandRequireHandshake()
2806 VIR_FORCE_CLOSE(cmd->handshakeWait[1]); in virCommandRequireHandshake()
2807 cmd->has_error = errno; in virCommandRequireHandshake()
2813 cmd->handshakeWait[1], cmd->handshakeNotify[0], in virCommandRequireHandshake()
2814 cmd->handshakeWait[0], cmd->handshakeNotify[1]); in virCommandRequireHandshake()
2815 virCommandPassFD(cmd, cmd->handshakeWait[1], in virCommandRequireHandshake()
2817 virCommandPassFD(cmd, cmd->handshakeNotify[0], in virCommandRequireHandshake()
2819 cmd->handshake = true; in virCommandRequireHandshake()
2829 int virCommandHandshakeWait(virCommand *cmd) in virCommandHandshakeWait() argument
2834 if (virCommandHasError(cmd)) { in virCommandHandshakeWait()
2835 virCommandRaiseError(cmd); in virCommandHandshakeWait()
2839 if (!cmd->handshake) { in virCommandHandshakeWait()
2845 if (cmd->handshakeWait[0] == -1) { in virCommandHandshakeWait()
2851 VIR_DEBUG("Wait for handshake on %d", cmd->handshakeWait[0]); in virCommandHandshakeWait()
2852 if ((rv = saferead(cmd->handshakeWait[0], &c, sizeof(c))) != sizeof(c)) { in virCommandHandshakeWait()
2859 VIR_FORCE_CLOSE(cmd->handshakeWait[0]); in virCommandHandshakeWait()
2869 VIR_FORCE_CLOSE(cmd->handshakeNotify[1]); in virCommandHandshakeWait()
2871 if ((len = saferead(cmd->handshakeWait[0], msg, 1024)) < 0) { in virCommandHandshakeWait()
2872 VIR_FORCE_CLOSE(cmd->handshakeWait[0]); in virCommandHandshakeWait()
2877 VIR_FORCE_CLOSE(cmd->handshakeWait[0]); in virCommandHandshakeWait()
2882 VIR_FORCE_CLOSE(cmd->handshakeWait[0]); in virCommandHandshakeWait()
2893 int virCommandHandshakeNotify(virCommand *cmd) in virCommandHandshakeNotify() argument
2897 if (virCommandHasError(cmd)) { in virCommandHandshakeNotify()
2898 virCommandRaiseError(cmd); in virCommandHandshakeNotify()
2902 if (!cmd->handshake) { in virCommandHandshakeNotify()
2908 if (cmd->handshakeNotify[1] == -1) { in virCommandHandshakeNotify()
2914 VIR_DEBUG("Notify handshake on %d", cmd->handshakeNotify[1]); in virCommandHandshakeNotify()
2915 if (safewrite(cmd->handshakeNotify[1], &c, sizeof(c)) != sizeof(c)) { in virCommandHandshakeNotify()
2917 VIR_FORCE_CLOSE(cmd->handshakeNotify[1]); in virCommandHandshakeNotify()
2920 VIR_FORCE_CLOSE(cmd->handshakeNotify[1]); in virCommandHandshakeNotify()
2925 virCommandSetSendBuffer(virCommand *cmd, in virCommandSetSendBuffer() argument
2929 if (virCommandHasError(cmd)) in virCommandSetSendBuffer()
2932 cmd->has_error = ENOTSUP; in virCommandSetSendBuffer()
2939 virCommandExec(virCommand *cmd G_GNUC_UNUSED, gid_t *groups G_GNUC_UNUSED, in virCommandExec()
2949 virCommandRun(virCommand *cmd G_GNUC_UNUSED, int *exitstatus G_GNUC_UNUSED) in virCommandRun()
2958 virCommandRunAsync(virCommand *cmd G_GNUC_UNUSED, pid_t *pid G_GNUC_UNUSED) in virCommandRunAsync()
2967 virCommandWait(virCommand *cmd G_GNUC_UNUSED, int *exitstatus G_GNUC_UNUSED) in virCommandWait()
2976 virCommandAbort(virCommand *cmd G_GNUC_UNUSED) in virCommandAbort()
2984 void virCommandRequireHandshake(virCommand *cmd) in virCommandRequireHandshake() argument
2986 if (virCommandHasError(cmd)) in virCommandRequireHandshake()
2989 cmd->has_error = ENOSYS; in virCommandRequireHandshake()
2993 int virCommandHandshakeWait(virCommand *cmd G_GNUC_UNUSED) in virCommandHandshakeWait()
3001 int virCommandHandshakeNotify(virCommand *cmd G_GNUC_UNUSED) in virCommandHandshakeNotify()
3019 virCommandFree(virCommand *cmd) in virCommandFree() argument
3022 if (!cmd) in virCommandFree()
3025 for (i = 0; i < cmd->npassfd; i++) { in virCommandFree()
3026 if (cmd->passfd[i].flags & VIR_COMMAND_PASS_FD_CLOSE_PARENT) in virCommandFree()
3027 VIR_FORCE_CLOSE(cmd->passfd[i].fd); in virCommandFree()
3029 cmd->npassfd = 0; in virCommandFree()
3030 g_free(cmd->passfd); in virCommandFree()
3032 if (cmd->asyncioThread) { in virCommandFree()
3033 virThreadJoin(cmd->asyncioThread); in virCommandFree()
3034 g_free(cmd->asyncioThread); in virCommandFree()
3036 g_free(cmd->inbuf); in virCommandFree()
3037 VIR_FORCE_CLOSE(cmd->outfd); in virCommandFree()
3038 VIR_FORCE_CLOSE(cmd->errfd); in virCommandFree()
3040 for (i = 0; i < cmd->nargs; i++) in virCommandFree()
3041 g_free(cmd->args[i]); in virCommandFree()
3042 g_free(cmd->args); in virCommandFree()
3044 for (i = 0; i < cmd->nenv; i++) in virCommandFree()
3045 g_free(cmd->env[i]); in virCommandFree()
3046 g_free(cmd->env); in virCommandFree()
3048 g_free(cmd->pwd); in virCommandFree()
3050 if (cmd->handshake) { in virCommandFree()
3054 VIR_FORCE_CLOSE(cmd->handshakeWait[0]); in virCommandFree()
3055 VIR_FORCE_CLOSE(cmd->handshakeNotify[1]); in virCommandFree()
3058 g_free(cmd->pidfile); in virCommandFree()
3060 if (cmd->reap) in virCommandFree()
3061 virCommandAbort(cmd); in virCommandFree()
3064 g_free(cmd->seLinuxLabel); in virCommandFree()
3067 g_free(cmd->appArmorProfile); in virCommandFree()
3070 virCommandFreeSendBuffers(cmd); in virCommandFree()
3072 g_free(cmd); in virCommandFree()
3111 virCommandDoAsyncIO(virCommand *cmd) in virCommandDoAsyncIO() argument
3113 if (virCommandHasError(cmd)) in virCommandDoAsyncIO()
3116 cmd->flags |= VIR_EXEC_ASYNC_IO | VIR_EXEC_NONBLOCK; in virCommandDoAsyncIO()
3233 virCommandRunRegex(virCommand *cmd, in virCommandRunRegex() argument
3271 virCommandSetOutputBuffer(cmd, &outbuf); in virCommandRunRegex()
3272 if (virCommandRun(cmd, exitstatus) < 0) in virCommandRunRegex()
3340 virCommandRunNul(virCommand *cmd, in virCommandRunNul() argument
3359 virCommandSetOutputFD(cmd, &fd); in virCommandRunNul()
3360 if (virCommandRunAsync(cmd, NULL) < 0) in virCommandRunNul()
3399 ret = virCommandWait(cmd, NULL); in virCommandRunNul()
3414 virCommandRunRegex(virCommand *cmd G_GNUC_UNUSED, in virCommandRunRegex()
3429 virCommandRunNul(virCommand *cmd G_GNUC_UNUSED, in virCommandRunNul()