summaryrefslogtreecommitdiffstats
path: root/twrpTar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'twrpTar.cpp')
-rw-r--r--twrpTar.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/twrpTar.cpp b/twrpTar.cpp
index dcbb28202..d192f2cc5 100644
--- a/twrpTar.cpp
+++ b/twrpTar.cpp
@@ -21,7 +21,6 @@ extern "C" {
#include "libtar/libtar.h"
#include "twrpTar.h"
#include "tarWrite.h"
- #include "set_metadata.h"
}
#include <sys/types.h>
#include <sys/stat.h>
@@ -51,9 +50,7 @@ extern "C" {
#ifndef BUILD_TWRPTAR_MAIN
#include "data.hpp"
#include "infomanager.hpp"
-extern "C" {
- #include "set_metadata.h"
-}
+#include "set_metadata.h"
#endif //ndef BUILD_TWRPTAR_MAIN
using namespace std;
@@ -69,6 +66,9 @@ twrpTar::twrpTar(void) {
Total_Backup_Size = 0;
Archive_Current_Size = 0;
include_root_dir = true;
+ tar_type.openfunc = open;
+ tar_type.closefunc = close;
+ tar_type.readfunc = read;
}
twrpTar::~twrpTar(void) {
@@ -961,7 +961,7 @@ int twrpTar::createTar() {
close(pipes[3]);
fd = pipes[1];
init_libtar_no_buffer(progress_pipe_fd);
- tar_type = { open, close, read, write_tar_no_buffer };
+ tar_type.writefunc = write_tar_no_buffer;
if(tar_fdopen(&t, fd, charRootDir, &tar_type, O_WRONLY | O_CREAT | O_EXCL | O_LARGEFILE, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH, TAR_GNU | TAR_STORE_SELINUX) != 0) {
close(fd);
LOGINFO("tar_fdopen failed\n");
@@ -1021,7 +1021,7 @@ int twrpTar::createTar() {
close(pigzfd[0]); // close parent input
fd = pigzfd[1]; // copy parent output
init_libtar_no_buffer(progress_pipe_fd);
- tar_type = { open, close, read, write_tar_no_buffer };
+ tar_type.writefunc = write_tar_no_buffer;
if(tar_fdopen(&t, fd, charRootDir, &tar_type, O_WRONLY | O_CREAT | O_EXCL | O_LARGEFILE, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH, TAR_GNU | TAR_STORE_SELINUX) != 0) {
close(fd);
LOGINFO("tar_fdopen failed\n");
@@ -1071,7 +1071,7 @@ int twrpTar::createTar() {
close(oaesfd[0]); // close parent input
fd = oaesfd[1]; // copy parent output
init_libtar_no_buffer(progress_pipe_fd);
- tar_type = { open, close, read, write_tar_no_buffer };
+ tar_type.writefunc = write_tar_no_buffer;
if(tar_fdopen(&t, fd, charRootDir, &tar_type, O_WRONLY | O_CREAT | O_EXCL | O_LARGEFILE, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH, TAR_GNU | TAR_STORE_SELINUX) != 0) {
close(fd);
LOGINFO("tar_fdopen failed\n");
@@ -1083,10 +1083,9 @@ int twrpTar::createTar() {
} else {
// Not compressed or encrypted
init_libtar_buffer(0, progress_pipe_fd);
- tar_type = { open, close, read, write_tar };
if (part_settings->adbbackup) {
LOGINFO("Opening TW_ADB_BACKUP uncompressed stream\n");
- tar_type = { open, close, read, write_tar_no_buffer };
+ tar_type.writefunc = write_tar_no_buffer;
output_fd = open(TW_ADB_BACKUP, O_WRONLY);
if(tar_fdopen(&t, output_fd, charRootDir, &tar_type, O_WRONLY | O_CREAT | O_EXCL | O_LARGEFILE, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH, TAR_GNU | TAR_STORE_SELINUX) != 0) {
close(output_fd);
@@ -1095,6 +1094,7 @@ int twrpTar::createTar() {
}
}
else {
+ tar_type.writefunc = write_tar;
if (tar_open(&t, charTarFile, &tar_type, O_WRONLY | O_CREAT | O_LARGEFILE, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH, TAR_GNU | TAR_STORE_SELINUX) == -1) {
LOGERR("tar_open error opening '%s'\n", tarfn.c_str());
gui_err("backup_error=Error creating backup.");