mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
Add virRunWithHook util function
* src/util/util.[ch]: similar to virExecWithHook, but waits for child to exit. Useful for doing things like setuid after the fork but before the exec.
This commit is contained in:
parent
1671b64702
commit
d2259ada49
@ -804,9 +804,11 @@ error:
|
||||
* only if the command could not be run.
|
||||
*/
|
||||
int
|
||||
virRun(virConnectPtr conn,
|
||||
const char *const*argv,
|
||||
int *status) {
|
||||
virRunWithHook(virConnectPtr conn,
|
||||
const char *const*argv,
|
||||
virExecHook hook,
|
||||
void *data,
|
||||
int *status) {
|
||||
pid_t childpid;
|
||||
int exitstatus, execret, waitret;
|
||||
int ret = -1;
|
||||
@ -823,7 +825,7 @@ virRun(virConnectPtr conn,
|
||||
|
||||
if ((execret = __virExec(conn, argv, NULL, NULL,
|
||||
&childpid, -1, &outfd, &errfd,
|
||||
VIR_EXEC_NONE, NULL, NULL, NULL)) < 0) {
|
||||
VIR_EXEC_NONE, hook, data, NULL)) < 0) {
|
||||
ret = execret;
|
||||
goto error;
|
||||
}
|
||||
@ -879,9 +881,11 @@ virRun(virConnectPtr conn,
|
||||
#else /* __MINGW32__ */
|
||||
|
||||
int
|
||||
virRun(virConnectPtr conn,
|
||||
const char *const *argv ATTRIBUTE_UNUSED,
|
||||
int *status)
|
||||
virRunWithHook(virConnectPtr conn,
|
||||
const char *const *argv ATTRIBUTE_UNUSED,
|
||||
virExecHook hook ATTRIBUTE_UNUSED,
|
||||
void *data ATTRIBUTE_UNUSED,
|
||||
int *status)
|
||||
{
|
||||
if (status)
|
||||
*status = ENOTSUP;
|
||||
@ -907,6 +911,13 @@ virExec(virConnectPtr conn,
|
||||
|
||||
#endif /* __MINGW32__ */
|
||||
|
||||
int
|
||||
virRun(virConnectPtr conn,
|
||||
const char *const*argv,
|
||||
int *status) {
|
||||
return virRunWithHook(conn, argv, NULL, NULL, status);
|
||||
}
|
||||
|
||||
/* Like gnulib's fread_file, but read no more than the specified maximum
|
||||
number of bytes. If the length of the input is <= max_len, and
|
||||
upon error while reading that data, it works just like fread_file. */
|
||||
|
@ -81,6 +81,9 @@ int virExec(virConnectPtr conn,
|
||||
int *errfd,
|
||||
int flags) ATTRIBUTE_RETURN_CHECK;
|
||||
int virRun(virConnectPtr conn, const char *const*argv, int *status) ATTRIBUTE_RETURN_CHECK;
|
||||
int virRunWithHook(virConnectPtr conn, const char *const*argv,
|
||||
virExecHook hook, void *data,
|
||||
int *status) ATTRIBUTE_RETURN_CHECK;
|
||||
|
||||
int virFileReadLimFD(int fd, int maxlen, char **buf) ATTRIBUTE_RETURN_CHECK;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user