From: Stefan Berger Date: Thu, 5 Mar 2015 23:57:06 +0000 (-0500) Subject: utils: Implement virCommandPassFDGetFDIndex X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=a06e9ce11d7004fe4cabe2166ee096f1c92f67fe;p=people%2Fliuw%2Flibxenctrl-split%2Flibvirt.git utils: Implement virCommandPassFDGetFDIndex Implement virCommandPassFDGetFDIndex to determine the index a given file descriptor will have when passed to the child process. Signed-off-by: Stefan Berger --- diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index c810cf70d..3c6fd33a0 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1214,6 +1214,7 @@ virCommandNewArgList; virCommandNewArgs; virCommandNonblockingFDs; virCommandPassFD; +virCommandPassFDGetFDIndex; virCommandPassListenFDs; virCommandRawStatus; virCommandRequireHandshake; diff --git a/src/util/vircommand.c b/src/util/vircommand.c index 6527d85e5..648f5ed65 100644 --- a/src/util/vircommand.c +++ b/src/util/vircommand.c @@ -1019,6 +1019,30 @@ virCommandPassListenFDs(virCommandPtr cmd) cmd->flags |= VIR_EXEC_LISTEN_FDS; } +/* + * virCommandPassFDGetFDIndex: + * @cmd: pointer to virCommand + * @fd: FD to get index of + * + * Determine the index of the FD in the transfer set. + * + * Returns index >= 0 if @set contains @fd, + * -1 otherwise. + */ +int +virCommandPassFDGetFDIndex(virCommandPtr cmd, int fd) +{ + size_t i = 0; + + while (i < cmd->npassfd) { + if (cmd->passfd[i].fd == fd) + return i; + i++; + } + + return -1; +} + /** * virCommandSetPidFile: * @cmd: the command to modify diff --git a/src/util/vircommand.h b/src/util/vircommand.h index bf65de4ff..198da2f9e 100644 --- a/src/util/vircommand.h +++ b/src/util/vircommand.h @@ -62,6 +62,9 @@ void virCommandPassFD(virCommandPtr cmd, void virCommandPassListenFDs(virCommandPtr cmd); +int virCommandPassFDGetFDIndex(virCommandPtr cmd, + int fd); + void virCommandSetPidFile(virCommandPtr cmd, const char *pidfile) ATTRIBUTE_NONNULL(2);