diff options
-rw-r--r-- | adb/commandline.cpp | 38 | ||||
-rw-r--r-- | adb/file_sync_client.cpp | 10 | ||||
-rw-r--r-- | adb/file_sync_service.h | 4 |
3 files changed, 24 insertions, 28 deletions
diff --git a/adb/commandline.cpp b/adb/commandline.cpp index f193d2f..58e1ade 100644 --- a/adb/commandline.cpp +++ b/adb/commandline.cpp @@ -1457,27 +1457,27 @@ int adb_commandline(int argc, const char **argv) return uninstall_app(ttype, serial, argc, argv); } else if (!strcmp(argv[0], "sync")) { - std::string src_arg; + std::string src; bool list_only = false; if (argc < 2) { // No local path was specified. - src_arg = ""; + src = ""; } else if (argc >= 2 && strcmp(argv[1], "-l") == 0) { - list_only = 1; + list_only = true; if (argc == 3) { - src_arg = argv[2]; + src = argv[2]; } else { - src_arg = ""; + src = ""; } } else if (argc == 2) { // A local path or "android"/"data" arg was specified. - src_arg = argv[1]; + src = argv[1]; } else { return usage(); } - if (src_arg != "" && - src_arg != "system" && src_arg != "data" && src_arg != "vendor" && src_arg != "oem") { + if (src != "" && + src != "system" && src != "data" && src != "vendor" && src != "oem") { return usage(); } @@ -1485,25 +1485,19 @@ int adb_commandline(int argc, const char **argv) std::string data_src_path = product_file("data"); std::string vendor_src_path = product_file("vendor"); std::string oem_src_path = product_file("oem"); - if (!directory_exists(vendor_src_path)) { - vendor_src_path = ""; - } - if (!directory_exists(oem_src_path)) { - oem_src_path = ""; - } int rc = 0; - if (rc == 0 && (src_arg.empty() || src_arg == "system")) { - rc = do_sync_sync(system_src_path.c_str(), "/system", list_only); + if (rc == 0 && (src.empty() || src == "system")) { + rc = do_sync_sync(system_src_path, "/system", list_only); } - if (rc == 0 && (src_arg.empty() || src_arg == "vendor")) { - rc = do_sync_sync(vendor_src_path.c_str(), "/vendor", list_only); + if (rc == 0 && (src.empty() || src == "vendor") && directory_exists(vendor_src_path)) { + rc = do_sync_sync(vendor_src_path, "/vendor", list_only); } - if(rc == 0 && (src_arg.empty() || src_arg == "oem")) { - rc = do_sync_sync(oem_src_path.c_str(), "/oem", list_only); + if (rc == 0 && (src.empty() || src == "oem") && directory_exists(oem_src_path)) { + rc = do_sync_sync(oem_src_path, "/oem", list_only); } - if (rc == 0 && (src_arg.empty() || src_arg == "data")) { - rc = do_sync_sync(data_src_path.c_str(), "/data", list_only); + if (rc == 0 && (src.empty() || src == "data")) { + rc = do_sync_sync(data_src_path, "/data", list_only); } return rc; } diff --git a/adb/file_sync_client.cpp b/adb/file_sync_client.cpp index 730a5e2..49d8783 100644 --- a/adb/file_sync_client.cpp +++ b/adb/file_sync_client.cpp @@ -1027,18 +1027,18 @@ int do_sync_pull(const char *rpath, const char *lpath, int show_progress, int co } } -int do_sync_sync(const char *lpath, const char *rpath, int listonly) +int do_sync_sync(const std::string& lpath, const std::string& rpath, bool list_only) { - fprintf(stderr,"syncing %s...\n",rpath); + fprintf(stderr, "syncing %s...\n", rpath.c_str()); int fd = adb_connect("sync:"); - if(fd < 0) { - fprintf(stderr,"error: %s\n", adb_error()); + if (fd < 0) { + fprintf(stderr, "error: %s\n", adb_error()); return 1; } BEGIN(); - if(copy_local_dir_remote(fd, lpath, rpath, 1, listonly)){ + if (copy_local_dir_remote(fd, lpath.c_str(), rpath.c_str(), 1, list_only)) { return 1; } else { END(); diff --git a/adb/file_sync_service.h b/adb/file_sync_service.h index 6e1ccce..344eb98 100644 --- a/adb/file_sync_service.h +++ b/adb/file_sync_service.h @@ -17,6 +17,8 @@ #ifndef _FILE_SYNC_SERVICE_H_ #define _FILE_SYNC_SERVICE_H_ +#include <string> + #define htoll(x) (x) #define ltohl(x) (x) @@ -67,7 +69,7 @@ union syncmsg { void file_sync_service(int fd, void *cookie); int do_sync_ls(const char *path); int do_sync_push(const char *lpath, const char *rpath, int show_progress); -int do_sync_sync(const char *lpath, const char *rpath, int listonly); +int do_sync_sync(const std::string& lpath, const std::string& rpath, bool list_only); int do_sync_pull(const char *rpath, const char *lpath, int show_progress, int pullTime); #define SYNC_DATA_MAX (64*1024) |