diff options
author | Anthony Newnam <anthony.newnam@garmin.com> | 2010-02-22 08:36:49 -0600 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2010-04-19 16:36:57 -0700 |
commit | 705c944c0e2a50150ffb41707b6b3daebb45cf79 (patch) | |
tree | fdd09210eb3c4656387ec8f159133f129e17c517 /adb | |
parent | 944f7cadd77614bf930631d79741f2a369ca95f7 (diff) | |
download | system_core-705c944c0e2a50150ffb41707b6b3daebb45cf79.zip system_core-705c944c0e2a50150ffb41707b6b3daebb45cf79.tar.gz system_core-705c944c0e2a50150ffb41707b6b3daebb45cf79.tar.bz2 |
Add -l option to `adb sync`
Change-Id: I87c01663dff319dde24b70560e6fe5647ebf9d49
Diffstat (limited to 'adb')
-rw-r--r-- | adb/commandline.c | 14 | ||||
-rw-r--r-- | adb/file_sync_client.c | 13 | ||||
-rw-r--r-- | adb/file_sync_service.h | 2 |
3 files changed, 20 insertions, 9 deletions
diff --git a/adb/commandline.c b/adb/commandline.c index 8781081..3ee54c7 100644 --- a/adb/commandline.c +++ b/adb/commandline.c @@ -112,6 +112,7 @@ void help() " adb push <local> <remote> - copy file/dir to device\n" " adb pull <remote> [<local>] - copy file/dir from device\n" " adb sync [ <directory> ] - copy host->device only if changed\n" + " (-l means list but don't copy)\n" " (see 'adb help all')\n" " adb shell - run remote shell interactively\n" " adb shell <command> - run remote shell command\n" @@ -1041,10 +1042,19 @@ top: if(!strcmp(argv[0], "sync")) { char *srcarg, *android_srcpath, *data_srcpath; + int listonly = 0; + int ret; if(argc < 2) { /* No local path was specified. */ srcarg = NULL; + } else if (argc >= 2 && strcmp(argv[1], "-l") == 0) { + listonly = 1; + if (argc == 3) { + srcarg = argv[2]; + } else { + srcarg = NULL; + } } else if(argc == 2) { /* A local path or "android"/"data" arg was specified. */ srcarg = argv[1]; @@ -1055,9 +1065,9 @@ top: if(ret != 0) return usage(); if(android_srcpath != NULL) - ret = do_sync_sync(android_srcpath, "/system"); + ret = do_sync_sync(android_srcpath, "/system", listonly); if(ret == 0 && data_srcpath != NULL) - ret = do_sync_sync(data_srcpath, "/data"); + ret = do_sync_sync(data_srcpath, "/data", listonly); free(android_srcpath); free(data_srcpath); diff --git a/adb/file_sync_client.c b/adb/file_sync_client.c index 65d4941..da25ae8 100644 --- a/adb/file_sync_client.c +++ b/adb/file_sync_client.c @@ -670,7 +670,7 @@ static int local_build_list(copyinfo **filelist, } -static int copy_local_dir_remote(int fd, const char *lpath, const char *rpath, int checktimestamps) +static int copy_local_dir_remote(int fd, const char *lpath, const char *rpath, int checktimestamps, int listonly) { copyinfo *filelist = 0; copyinfo *ci, *next; @@ -718,8 +718,9 @@ static int copy_local_dir_remote(int fd, const char *lpath, const char *rpath, i for(ci = filelist; ci != 0; ci = next) { next = ci->next; if(ci->flag == 0) { - fprintf(stderr,"push: %s -> %s\n", ci->src, ci->dst); - if(sync_send(fd, ci->src, ci->dst, ci->time, ci->mode, 0 /* no verify APK */)){ + fprintf(stderr,"%spush: %s -> %s\n", listonly ? "would " : "", ci->src, ci->dst); + if(!listonly && + sync_send(fd, ci->src, ci->dst, ci->time, ci->mode, 0 /* no verify APK */)){ return 1; } pushed++; @@ -757,7 +758,7 @@ int do_sync_push(const char *lpath, const char *rpath, int verifyApk) if(S_ISDIR(st.st_mode)) { BEGIN(); - if(copy_local_dir_remote(fd, lpath, rpath, 0)) { + if(copy_local_dir_remote(fd, lpath, rpath, 0, 0)) { return 1; } else { END(); @@ -1001,7 +1002,7 @@ int do_sync_pull(const char *rpath, const char *lpath) } } -int do_sync_sync(const char *lpath, const char *rpath) +int do_sync_sync(const char *lpath, const char *rpath, int listonly) { fprintf(stderr,"syncing %s...\n",rpath); @@ -1012,7 +1013,7 @@ int do_sync_sync(const char *lpath, const char *rpath) } BEGIN(); - if(copy_local_dir_remote(fd, lpath, rpath, 1)){ + if(copy_local_dir_remote(fd, lpath, rpath, 1, listonly)){ return 1; } else { END(); diff --git a/adb/file_sync_service.h b/adb/file_sync_service.h index 4ee40ba..11ea06b 100644 --- a/adb/file_sync_service.h +++ b/adb/file_sync_service.h @@ -79,7 +79,7 @@ typedef union { 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 verifyApk); -int do_sync_sync(const char *lpath, const char *rpath); +int do_sync_sync(const char *lpath, const char *rpath, int listonly); int do_sync_pull(const char *rpath, const char *lpath); #define SYNC_DATA_MAX (64*1024) |