summaryrefslogtreecommitdiffstats
path: root/tools/idevicebackup2.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/idevicebackup2.c')
-rw-r--r--tools/idevicebackup2.c63
1 files changed, 18 insertions, 45 deletions
diff --git a/tools/idevicebackup2.c b/tools/idevicebackup2.c
index 4fde24f..209dfe6 100644
--- a/tools/idevicebackup2.c
+++ b/tools/idevicebackup2.c
@@ -199,33 +199,6 @@ static int mkdir_with_parents(const char *dir, int mode)
return res;
}
-static char* build_path(const char* elem, ...)
-{
- if (!elem) return NULL;
- va_list args;
- int len = strlen(elem)+1;
- va_start(args, elem);
- char *arg = va_arg(args, char*);
- while (arg) {
- len += strlen(arg)+1;
- arg = va_arg(args, char*);
- }
- va_end(args);
-
- char* out = (char*)malloc(len);
- strcpy(out, elem);
-
- va_start(args, elem);
- arg = va_arg(args, char*);
- while (arg) {
- strcat(out, "/");
- strcat(out, arg);
- arg = va_arg(args, char*);
- }
- va_end(args);
- return out;
-}
-
static char* format_size_for_display(uint64_t size)
{
char buf[32];
@@ -357,7 +330,7 @@ static int mb2_status_check_snapshot_state(const char *path, const char *udid, c
{
int ret = -1;
plist_t status_plist = NULL;
- char *file_path = build_path(path, udid, "Status.plist", NULL);
+ char *file_path = string_build_path(path, udid, "Status.plist", NULL);
plist_read_from_filename(&status_plist, file_path);
free(file_path);
@@ -522,7 +495,7 @@ static int mb2_handle_send_file(mobilebackup2_client_t mobilebackup2, const char
uint32_t nlen = 0;
uint32_t pathlen = strlen(path);
uint32_t bytes = 0;
- char *localfile = build_path(backup_dir, path, NULL);
+ char *localfile = string_build_path(backup_dir, path, NULL);
char buf[32768];
#ifdef WIN32
struct _stati64 fst;
@@ -809,7 +782,7 @@ static int mb2_handle_receive_files(mobilebackup2_client_t mobilebackup2, plist_
bname = NULL;
}
- bname = build_path(backup_dir, fname, NULL);
+ bname = string_build_path(backup_dir, fname, NULL);
if (fname != NULL) {
free(fname);
@@ -942,7 +915,7 @@ static void mb2_handle_list_directory(mobilebackup2_client_t mobilebackup2, plis
return;
}
- char *path = build_path(backup_dir, str, NULL);
+ char *path = string_build_path(backup_dir, str, NULL);
free(str);
plist_t dirlist = plist_new_dict();
@@ -954,7 +927,7 @@ static void mb2_handle_list_directory(mobilebackup2_client_t mobilebackup2, plis
if ((strcmp(ep->d_name, ".") == 0) || (strcmp(ep->d_name, "..") == 0)) {
continue;
}
- char *fpath = build_path(path, ep->d_name, NULL);
+ char *fpath = string_build_path(path, ep->d_name, NULL);
if (fpath) {
plist_t fdict = plist_new_dict();
struct stat st;
@@ -995,7 +968,7 @@ static void mb2_handle_make_directory(mobilebackup2_client_t mobilebackup2, plis
char *errdesc = NULL;
plist_get_string_val(dir, &str);
- char *newpath = build_path(backup_dir, str, NULL);
+ char *newpath = string_build_path(backup_dir, str, NULL);
free(str);
if (mkdir_with_parents(newpath, 0755) < 0) {
@@ -1075,8 +1048,8 @@ static void mb2_copy_directory_by_path(const char *src, const char *dst)
if ((strcmp(ep->d_name, ".") == 0) || (strcmp(ep->d_name, "..") == 0)) {
continue;
}
- char *srcpath = build_path(src, ep->d_name, NULL);
- char *dstpath = build_path(dst, ep->d_name, NULL);
+ char *srcpath = string_build_path(src, ep->d_name, NULL);
+ char *dstpath = string_build_path(dst, ep->d_name, NULL);
if (srcpath && dstpath) {
/* copy file */
mb2_copy_file_by_path(srcpath, dstpath);
@@ -1446,7 +1419,7 @@ int main(int argc, char *argv[])
}
} else if (cmd != CMD_CLOUD) {
/* backup directory must contain an Info.plist */
- info_path = build_path(backup_directory, source_udid, "Info.plist", NULL);
+ info_path = string_build_path(backup_directory, source_udid, "Info.plist", NULL);
if (cmd == CMD_RESTORE || cmd == CMD_UNBACK) {
if (stat(info_path, &st) != 0) {
idevice_free(device);
@@ -1454,7 +1427,7 @@ int main(int argc, char *argv[])
printf("ERROR: Backup directory \"%s\" is invalid. No Info.plist found for UDID %s.\n", backup_directory, source_udid);
return -1;
}
- char* manifest_path = build_path(backup_directory, source_udid, "Manifest.plist", NULL);
+ char* manifest_path = string_build_path(backup_directory, source_udid, "Manifest.plist", NULL);
if (stat(manifest_path, &st) != 0) {
free(info_path);
}
@@ -1647,20 +1620,20 @@ checkpoint:
PRINT_VERBOSE(1, "Starting backup...\n");
/* make sure backup device sub-directory exists */
- char* devbackupdir = build_path(backup_directory, source_udid, NULL);
+ char* devbackupdir = string_build_path(backup_directory, source_udid, NULL);
__mkdir(devbackupdir, 0755);
free(devbackupdir);
if (strcmp(source_udid, udid) != 0) {
/* handle different source backup directory */
// make sure target backup device sub-directory exists
- devbackupdir = build_path(backup_directory, udid, NULL);
+ devbackupdir = string_build_path(backup_directory, udid, NULL);
__mkdir(devbackupdir, 0755);
free(devbackupdir);
// use Info.plist path in target backup folder */
free(info_path);
- info_path = build_path(backup_directory, udid, "Info.plist", NULL);
+ info_path = string_build_path(backup_directory, udid, "Info.plist", NULL);
}
/* TODO: check domain com.apple.mobile.backup key RequiresEncrypt and WillEncrypt with lockdown */
@@ -1942,9 +1915,9 @@ checkpoint:
char *str = NULL;
plist_get_string_val(val, &str);
if (str) {
- char *newpath = build_path(backup_directory, str, NULL);
+ char *newpath = string_build_path(backup_directory, str, NULL);
free(str);
- char *oldpath = build_path(backup_directory, key, NULL);
+ char *oldpath = string_build_path(backup_directory, key, NULL);
#ifdef WIN32
if ((stat(newpath, &st) == 0) && S_ISDIR(st.st_mode))
@@ -2000,7 +1973,7 @@ checkpoint:
suppress_warning = 1;
}
}
- char *newpath = build_path(backup_directory, str, NULL);
+ char *newpath = string_build_path(backup_directory, str, NULL);
free(str);
#ifdef WIN32
int res = 0;
@@ -2044,8 +2017,8 @@ checkpoint:
plist_get_string_val(srcpath, &src);
plist_get_string_val(dstpath, &dst);
if (src && dst) {
- char *oldpath = build_path(backup_directory, src, NULL);
- char *newpath = build_path(backup_directory, dst, NULL);
+ char *oldpath = string_build_path(backup_directory, src, NULL);
+ char *newpath = string_build_path(backup_directory, dst, NULL);
PRINT_VERBOSE(1, "Copying '%s' to '%s'\n", src, dst);