X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Ftar.c;h=c3bdcf7ec5485b218192aa85bfcd37b53be6ff0f;hb=de64183f3d0d04127c2e7690c87435e6649d30a6;hp=e1ff9b6da0becab10784528de309445e783b5b19;hpb=0dd6c8c8442d4ff588f6dac2efab24d3409b0dec;p=libguestfs.git diff --git a/daemon/tar.c b/daemon/tar.c index e1ff9b6..c3bdcf7 100644 --- a/daemon/tar.c +++ b/daemon/tar.c @@ -36,7 +36,7 @@ fwrite_cb (void *fp_ptr, const void *buf, int len) /* Has one FileIn parameter. */ int -do_tar_in (char *dir) +do_tar_in (const char *dir) { int err, r; FILE *fp; @@ -99,16 +99,13 @@ do_tar_in (char *dir) /* Has one FileOut parameter. */ int -do_tar_out (char *dir) +do_tar_out (const char *dir) { int r; FILE *fp; char *cmd; char buf[GUESTFS_MAX_CHUNK_SIZE]; - NEED_ROOT (-1); - ABS_PATH (dir, return -1); - /* "tar -C /sysroot%s -cf - ." but we have to quote the dir. */ if (asprintf_nowarn (&cmd, "tar -C %R -cf - .", dir) == -1) { reply_with_perror ("asprintf"); @@ -152,13 +149,15 @@ do_tar_out (char *dir) return -1; } - send_file_end (0); /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ + return -1; + return 0; } /* Has one FileIn parameter. */ int -do_tgz_in (char *dir) +do_tgz_in (const char *dir) { int err, r; FILE *fp; @@ -221,16 +220,13 @@ do_tgz_in (char *dir) /* Has one FileOut parameter. */ int -do_tgz_out (char *dir) +do_tgz_out (const char *dir) { int r; FILE *fp; char *cmd; char buf[GUESTFS_MAX_CHUNK_SIZE]; - NEED_ROOT (-1); - ABS_PATH (dir, return -1); - /* "tar -C /sysroot%s -zcf - ." but we have to quote the dir. */ if (asprintf_nowarn (&cmd, "tar -C %R -zcf - .", dir) == -1) { reply_with_perror ("asprintf"); @@ -274,6 +270,8 @@ do_tgz_out (char *dir) return -1; } - send_file_end (0); /* Normal end of file. */ + if (send_file_end (0)) /* Normal end of file. */ + return -1; + return 0; }