}
/* Has one FileIn parameter. */
-int
-do_tgz_in (const char *dir)
+static int
+do_tXz_in (const char *dir, char filter)
{
int err, r;
FILE *fp;
}
/* "tar -C /sysroot%s -zxf -" but we have to quote the dir. */
- if (asprintf_nowarn (&cmd, "tar -C %R -zxf -", dir) == -1) {
+ if (asprintf_nowarn (&cmd, "tar -C %R -%cxf -", dir, filter) == -1) {
err = errno;
cancel_receive ();
errno = err;
return 0;
}
-/* Has one FileOut parameter. */
+/* Has one FileIn parameter. */
int
-do_tgz_out (const char *dir)
+do_tgz_in (const char *dir)
+{
+ return do_tXz_in (dir, 'z');
+}
+
+/* Has one FileIn parameter. */
+int
+do_txz_in (const char *dir)
+{
+ return do_tXz_in (dir, 'J');
+}
+
+/* Has one FileOut parameter. */
+static int
+do_tXz_out (const char *dir, char filter)
{
int r;
FILE *fp;
char buf[GUESTFS_MAX_CHUNK_SIZE];
/* "tar -C /sysroot%s -zcf - ." but we have to quote the dir. */
- if (asprintf_nowarn (&cmd, "tar -C %R -zcf - .", dir) == -1) {
+ if (asprintf_nowarn (&cmd, "tar -C %R -%ccf - .", dir, filter) == -1) {
reply_with_perror ("asprintf");
return -1;
}
return 0;
}
+
+/* Has one FileOut parameter. */
+int
+do_tgz_out (const char *dir)
+{
+ return do_tXz_out (dir, 'z');
+}
+
+/* Has one FileOut parameter. */
+int
+do_txz_out (const char *dir)
+{
+ return do_tXz_out (dir, 'J');
+}
This command uploads and unpacks local file C<tarfile> (an
I<uncompressed> tar file) into C<directory>.
-To upload a compressed tarball, use C<guestfs_tgz_in>.");
+To upload a compressed tarball, use C<guestfs_tgz_in>
+or C<guestfs_txz_in>.");
("tar_out", (RErr, [String "directory"; FileOut "tarfile"]), 70, [],
[],
This command packs the contents of C<directory> and downloads
it to local file C<tarfile>.
-To download a compressed tarball, use C<guestfs_tgz_out>.");
+To download a compressed tarball, use C<guestfs_tgz_out>
+or C<guestfs_txz_out>.");
("tgz_in", (RErr, [FileIn "tarball"; String "directory"]), 71, [],
[InitBasicFS, Always, TestOutput (
with C<guestfs_zero> which just zeroes the first few blocks of
a device.");
+ ("txz_in", (RErr, [FileIn "tarball"; String "directory"]), 229, [],
+ [InitBasicFS, Always, TestOutput (
+ [["txz_in"; "../images/helloworld.tar.xz"; "/"];
+ ["cat"; "/hello"]], "hello\n")],
+ "unpack compressed tarball to directory",
+ "\
+This command uploads and unpacks local file C<tarball> (an
+I<xz compressed> tar file) into C<directory>.");
+
+ ("txz_out", (RErr, [Pathname "directory"; FileOut "tarball"]), 230, [],
+ [],
+ "pack directory into compressed tarball",
+ "\
+This command packs the contents of C<directory> and downloads
+it to local file C<tarball> (as an xz compressed tar archive).");
+
]
let all_functions = non_daemon_functions @ daemon_functions