merge from open-source master
Change-Id: Ib9250bd9d73664b07facaef362beba57a1519411
This commit is contained in:
commit
3523412f43
3 changed files with 20 additions and 9 deletions
|
@ -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"
|
||||
|
@ -1042,10 +1043,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];
|
||||
|
@ -1056,9 +1066,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);
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue