Merge changes I25bdcbc5,I12314da5,I055b0821
* changes:
adb: don't pull symlinks when pulling a directory
adb: remove extraneous newline from skip message
adb: correctly count skipped files in push/pull
diff --git a/adb/file_sync_client.cpp b/adb/file_sync_client.cpp
index e109e3e..bd0e6c4 100644
--- a/adb/file_sync_client.cpp
+++ b/adb/file_sync_client.cpp
@@ -552,11 +552,12 @@
} else {
if (!S_ISREG(st.st_mode) && !S_ISLNK(st.st_mode)) {
sc.Error("skipping special file '%s'", lpath.c_str());
+ ci.skip = true;
} else {
ci.time = st.st_mtime;
ci.size = st.st_size;
- filelist->push_back(ci);
}
+ filelist->push_back(ci);
}
}
@@ -723,8 +724,7 @@
bool empty_dir = true;
// Put the files/dirs in rpath on the lists.
- auto callback = [&](unsigned mode, unsigned size, unsigned time,
- const char* name) {
+ auto callback = [&](unsigned mode, unsigned size, unsigned time, const char* name) {
if (IsDotOrDotDot(name)) {
return;
}
@@ -735,12 +735,18 @@
copyinfo ci = mkcopyinfo(lpath, rpath, name, mode);
if (S_ISDIR(mode)) {
dirlist.push_back(ci);
- } else if (S_ISREG(mode) || S_ISLNK(mode)) {
- ci.time = time;
- ci.size = size;
- filelist->push_back(ci);
} else {
- sc.Warning("skipping special file '%s'\n", name);
+ if (S_ISREG(mode)) {
+ ci.time = time;
+ ci.size = size;
+ } else if (S_ISLNK(mode)) {
+ sc.Warning("skipping symlink '%s'", name);
+ ci.skip = true;
+ } else {
+ sc.Warning("skipping special file '%s'", name);
+ ci.skip = true;
+ }
+ filelist->push_back(ci);
}
};