summaryrefslogtreecommitdiffstats
path: root/src/launch.c
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2012-10-18 14:20:54 +0100
committerRichard W.M. Jones <rjones@redhat.com>2012-10-18 22:11:49 +0100
commitfa209341f834d1ab00e0d9fa767c8221506285e4 (patch)
treeb255fd9538e0f3b10e6c807006393a0afae1b5b3 /src/launch.c
parent2e90f4312928f332f8997b52be3fe54f20920242 (diff)
downloadlibguestfs-fa209341f834d1ab00e0d9fa767c8221506285e4.tar.gz
libguestfs-fa209341f834d1ab00e0d9fa767c8221506285e4.tar.xz
libguestfs-fa209341f834d1ab00e0d9fa767c8221506285e4.zip
lib: Change guestfs___remove_tmpdir function to use command mini-library.
Diffstat (limited to 'src/launch.c')
-rw-r--r--src/launch.c29
1 files changed, 10 insertions, 19 deletions
diff --git a/src/launch.c b/src/launch.c
index cc45a10b..46817073 100644
--- a/src/launch.c
+++ b/src/launch.c
@@ -760,29 +760,20 @@ guestfs___lazy_make_tmpdir (guestfs_h *g)
/* Recursively remove a temporary directory. If removal fails, just
* return (it's a temporary directory so it'll eventually be cleaned
* up by a temp cleaner). This is done using "rm -rf" because that's
- * simpler and safer, but we have to exec to ensure that paths don't
- * need to be quoted.
+ * simpler and safer.
*/
void
-guestfs___remove_tmpdir (const char *dir)
+guestfs___remove_tmpdir (guestfs_h *g, const char *dir)
{
- pid_t pid = fork ();
+ struct command *cmd;
- if (pid == -1) {
- perror ("remove tmpdir: fork");
- return;
- }
- if (pid == 0) {
- execlp ("rm", "rm", "-rf", dir, NULL);
- perror ("remove tmpdir: exec: rm");
- _exit (EXIT_FAILURE);
- }
-
- /* Parent. */
- if (waitpid (pid, NULL, 0) == -1) {
- perror ("remove tmpdir: waitpid");
- return;
- }
+ cmd = guestfs___new_command (g);
+ guestfs___cmd_add_arg (cmd, "rm");
+ guestfs___cmd_add_arg (cmd, "-rf");
+ guestfs___cmd_add_arg (cmd, dir);
+ /* Ignore failures. */
+ guestfs___cmd_run (cmd);
+ guestfs___cmd_close (cmd);
}
int