From 1620a61fd3faa2fb27cf53d414e22d79908aab70 Mon Sep 17 00:00:00 2001 From: Chih-Wei Huang Date: Thu, 25 Mar 2010 14:28:03 +0800 Subject: [PATCH 1/2] vold: fix a bug of crash The condition to quit the for loop is fs->name is NULL, not fs itself. Change-Id: I5f18f92d7488bd89183ba4ddab582f3f3347df46 --- vold/volmgr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vold/volmgr.c b/vold/volmgr.c index deb680e05..a635b8eea 100644 --- a/vold/volmgr.c +++ b/vold/volmgr.c @@ -1053,7 +1053,7 @@ static int _volmgr_start(volume_t *vol, blkdev_t *dev) break; } - if (!fs) { + if (!fs->name) { LOGE("No supported filesystems on %d:%d", dev->major, dev->minor); volume_setstate(vol, volstate_nofs); return -ENODATA; From 705c944c0e2a50150ffb41707b6b3daebb45cf79 Mon Sep 17 00:00:00 2001 From: Anthony Newnam Date: Mon, 22 Feb 2010 08:36:49 -0600 Subject: [PATCH 2/2] Add -l option to `adb sync` Change-Id: I87c01663dff319dde24b70560e6fe5647ebf9d49 --- adb/commandline.c | 14 ++++++++++++-- adb/file_sync_client.c | 13 +++++++------ adb/file_sync_service.h | 2 +- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/adb/commandline.c b/adb/commandline.c index 878108120..3ee54c73d 100644 --- a/adb/commandline.c +++ b/adb/commandline.c @@ -112,6 +112,7 @@ void help() " adb push - copy file/dir to device\n" " adb pull [] - copy file/dir from device\n" " adb sync [ ] - 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 - 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 65d494176..da25ae898 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 4ee40ba24..11ea06b1f 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)