History log of /system/core/adb/file_sync_client.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
44a42677cfde5f1ae6d0be67dcd07659d9c0f265 02-Apr-2016 Felipe Leme <felipeal@google.com> Implements 'adb bugreport <ZIP_FILE>'.

Dumpstate now supports zipped bugreport, whose output is more complete
than the flat-file bugreports provided prior to N. As such, adb now has
a 'adb bugreport <ZIP_FILE>' name whose implementation:

- Calls the new bugreportz binary.
- Parses its output, which in case of success is the path of the .zip
file.
- Pulls the device file and renames it according to the command-line
argument.

BUG: 27653204

Change-Id: I7169fe157c77bbef1684d0cb4e43095d95ddf2b8
/system/core/adb/file_sync_client.cpp
379612b1283c7289fbf21e1105b8bec9b0fed7ae 03-Mar-2016 Josh Gao <jmgao@google.com> adb: mkdir the correct directory name when pulling.

The directory name should be based off of the local path, not the remote
path.

Change-Id: I75b089b8734e9dbf8e466b1e00ea18549fd101bb
(cherry picked from commit 89ec3a8d0feac727257b428a91b6f84b6a4b1395)
/system/core/adb/file_sync_client.cpp
48bc0d7853c34a174fa6c9ddd85c30a1b54b137d 03-Mar-2016 Josh Gao <jmgao@google.com> adb: cleanup file skipping logic.

Bug: http://b/26355212
Change-Id: Iafa250ce6c5ea8da9f5f00125165e5b67ef1013f
(cherry picked from commit a31ea55c555aaa9cddab06c038f6e3285770f664)
/system/core/adb/file_sync_client.cpp
f22bc60fc9b16148cd82e2c23b22ca3f62b00d96 01-Mar-2016 Josh Gao <jmgao@google.com> adb: report progress for small files.

Bug: http://b/27407725
Change-Id: I7515144402a487fb3d4d403e2f5f82423c1b5ed6
(cherry picked from commit 9fd2f77dcce09aa38bf8f1798ebaac2abeef1598)
/system/core/adb/file_sync_client.cpp
a63b17f76c54d937c779848ae3f4212539f8873f 26-Feb-2016 Josh Gao <jmgao@google.com> adb: fix directory creation logic.

Previously, for `adb pull $remote $local`, we would do the equivalent of
mkdir -p on `dirname $local`. This patch changes the behavior to only
creating directories that are being pulled, like scp.

Bug: http://b/27362811
Change-Id: I79f975ee9f2d9bc9e8be6a7c4f2de6d7ae2d2d23
(cherry picked from commit 71728ca300d1bc168fae89c8139e72db3d4591cb)
/system/core/adb/file_sync_client.cpp
da8119596fc6b9bb3d2208cc675036efac24fb6b 20-Feb-2016 Josh Gao <jmgao@google.com> adb: check for an error response from adbd between each write.

When sending a file, do a 0-timeout poll to check to see if an error has
occurred, so that we can immediately report failure.

Bug: http://b/26816782
Change-Id: I4a8aa8408a36940bfda7b0ecfa5d13755f4aa14d
(cherry picked from commit afcdcd703e3023dfc60638cf6b67b530ec18cb18)
/system/core/adb/file_sync_client.cpp
323899b6d3d63a9cf3fbb7f47946a9c411e5f8d2 03-Feb-2016 Josh Gao <jmgao@google.com> adb: don't append a slash to a path that already ends with one.

Bug: http://b/26964908
Change-Id: I1fbd752fd97f5414a306b46f7bfce3373362f8b3
/system/core/adb/file_sync_client.cpp
a00e6ef1fff0c45a8d07a42dead9caf49b945f53 18-Dec-2015 Elliott Hughes <enh@google.com> Give adb a proper progress bar.

This factors out the duplication in the single-file progress, and adds a
whole-sync progress percentage to the front of the line. A number that's
both more interesting and easier to read.

This also fixes the >100 percentage reporting for files of unknown size.

Bug: http://b/26189482
Change-Id: I51501ccef6ae1f52425db0eb0862d87e90947a6c
/system/core/adb/file_sync_client.cpp
c8e793685c816531cd2f2af7229b3f6b41d14a7c 11-Dec-2015 Josh Gao <jmgao@google.com> Merge "adb: make pulling symlinks and devices work."
f264224191793d754aff8937849cf956d689bdfa 09-Dec-2015 Josh Gao <jmgao@google.com> adb: make pulling symlinks and devices work.

Bug: http://b/25972989
Bug: http://b/26085751
Change-Id: I43842871522ea5f67a8c258dcb6ddafa8dd744c8
/system/core/adb/file_sync_client.cpp
77f539ab4918514706f986f77529c17a38650be0 09-Dec-2015 Elliott Hughes <enh@google.com> Simplify adb LinePrinter newline handling.

We had mostly-working hacks before, but it's time to just modify LinePrinter
to suit our needs. If we tell LinePrinter what kind of output we're giving
it, it can manage things automatically.

This fixes the minor bug where we'd sometimes have a blank line after an
error message.

Change-Id: I07ff52437f2402de311e237dd1b2dd338d9b668a
/system/core/adb/file_sync_client.cpp
4f71319df011d796a60a43fc1bc68e16fbf7d321 05-Dec-2015 Elliott Hughes <enh@google.com> Track rename of base/ to android-base/.

Change-Id: Idf9444fece4aa89c93e15640de59a91f6e758ccf
/system/core/adb/file_sync_client.cpp
1702f427b53b88d9517bb994844a9a15e02f2bba 02-Dec-2015 Josh Gao <jmgao@google.com> Merge "adb: don't divide by zero"
d0d87f78e55362e3792ddec5faeab247f3493858 02-Dec-2015 Elliott Hughes <enh@google.com> Merge "Fix "adb sync" (and "adb push") error reporting."
b0e039f4ca1dd59a13078bb9bb4c24daac93cd84 30-Nov-2015 Josh Gao <jmgao@google.com> adb: don't divide by zero

If we stat a file and get a size of 0, and then successfully read bytes
from that file, we would previously divide by zero when calculating the
percentage completion of the file. This case happens either when we're
racing against something else writing to the file, or when we're pulling
magical files such as the ones in /dev/cpuctl/ that lie about their
size.

Bug: http://b/25925733
Change-Id: I980b9c14f44a1eb4a42bc8736c94fa6db06c08d1
/system/core/adb/file_sync_client.cpp
7b284b2f22a3c1076bbb483d6ab49afe191adc3d 30-Nov-2015 Josh Gao <jmgao@google.com> adb: don't pull symlinks when pulling a directory

The previous change to do this (f96dc73b) only skipped individually
named symlinks, not symlinks inside of a directory that was being
pulled.

Bug: http://b/25601283
Change-Id: I25bdcbc546a9d3a0dbd8dacdb065fb134d96022b
/system/core/adb/file_sync_client.cpp
d3266e058e9b4c609491e4115887407446d8ace1 30-Nov-2015 Josh Gao <jmgao@google.com> adb: remove extraneous newline from skip message

Change-Id: I12314da589bf0db14b37ae4c1f526665182f4776
/system/core/adb/file_sync_client.cpp
dd6cc4d7eee1669a44cbe1f72ce3325aba2bf0f9 30-Nov-2015 Josh Gao <jmgao@google.com> adb: correctly count skipped files in push/pull

Bug: http://b/25650207
Change-Id: I055b08216938640c4f7c5e96a7ea3719bf90ba70
/system/core/adb/file_sync_client.cpp
cc65c3b9f8edc6fb48ffe725376e65fac42851d6 21-Nov-2015 Elliott Hughes <enh@google.com> Fix "adb sync" (and "adb push") error reporting.

This patch ensures that we read any error response from the server if the
server closes the connection. Unfortunately, that's not sufficient to ensure
that we always see the server's error message --- sometimes the data just
gets thrown away because we keep writing without reading. Setting SO_LINGER
avoids this.

Bug: http://b/25230872
Change-Id: I96c019cc72bd139198de79bf29e6536cc462c20f
/system/core/adb/file_sync_client.cpp
6aab58c49914a9e50d1862d29e240e98b441f9c3 21-Nov-2015 Elliott Hughes <enh@google.com> Move SendLargeFile into SyncConnection.

Just a trivial refactor. Code change comes later.

Change-Id: If9e509a8c44649e5be4daaca57972939b037b8db
/system/core/adb/file_sync_client.cpp
f6e65e3f80e59866bfe74f4d82a9850216a65234 17-Nov-2015 Josh Gao <jmgao@google.com> adb: don't use adb_dirname in between getting and printing errno.

adb_dirname might trample over the errno value we want to print. Move
the adb_dirname call out to a local to prevent this.

Change-Id: I8a62cb2e1be8704225a9c3b72dd01259c7eaaae4
/system/core/adb/file_sync_client.cpp
f96dc73b9f218f464640a9cdd80c389723665d5c 12-Nov-2015 Josh Gao <jmgao@google.com> adb: don't pull symlinks.

Pulling symlinks was broken for directories, and it doesn't seem like
there's a good way to make it not broken, given that the protocol doesn't
have readlink (and we don't want to create symlinks on Windows, anyway).
The behavior for files doesn't seem to be especially useful, either.

Bug: http://b/25601283
Change-Id: Ie1d27e93dd09cbc0c178623b390041d1cb11f726
/system/core/adb/file_sync_client.cpp
1a0253092d07cc6497c4dc207ec0cbf03c0020e5 09-Nov-2015 Josh Gao <jmgao@google.com> adb: properly handle path separators on Windows.

Bug: http://b/25573669
Change-Id: Ic82981e1dfe40d5e3b3ffa06e18e62ecf80d81fc
/system/core/adb/file_sync_client.cpp
07db1196e7bd5856b5e2ebe4ea6791d2ae8c9e76 08-Nov-2015 Josh Gao <jmgao@google.com> adb: don't explode directories when pushing/pulling.

Previously, `adb pull /data/local/tmp` would spew all of the contents of
/data/local/tmp into the current directory. This patch makes push/pull
keep directories intact.

Bug: http://b/25394682
Change-Id: I2304ae9e61745a2b9536f58a6012640bf8ff422a
/system/core/adb/file_sync_client.cpp
12a2ae9a0c21edaf8e80984519108631bdf3c9e6 08-Nov-2015 Josh Gao <jmgao@google.com> adb: improve error handling, comments.

This commit fixes two cases:
`adb pull /data/local/tmp nonexistent/path` would succeed.
`adb pull /data/local/tmp nonexistent/` would fail.

Change-Id: I60c39eb2816946686241af42cfa2ad5cdc63fb0e
/system/core/adb/file_sync_client.cpp
0bb1ce06ea46f14d5b6bc57db8c8d6c463b5b1de 10-Nov-2015 Josh Gao <jmgao@google.com> Merge "adb: don't try to pull character or block devices."
8d00a39eff5f4047a4a4ad007900df2bdd1c1e9a 10-Nov-2015 Josh Gao <jmgao@google.com> adb: don't try to pull character or block devices.

Change-Id: I1a9e2c0097fe9c4017a9b338e812366c8e1154f0
/system/core/adb/file_sync_client.cpp
21abf5a7c1099b06625f516997c4291f577c3444 08-Nov-2015 Josh Gao <jmgao@google.com> adb: demote skipping a file from an error to a warning.

Change-Id: If6c88e8855369bd7feb570ac5310fc7f44994083
/system/core/adb/file_sync_client.cpp
363af568b8491af1a4256b09b04cfa8a0606d8cc 08-Nov-2015 Spencer Low <CompareAndSwap@gmail.com> adb/base: minor compiler portability improvements

I've been using these changes to compile with Visual Studio.

- GetFileBasename(): __FILE__ uses \ with Visual Studio.

- adb_trace.cpp: Apparently VS needs an ampersand before the function name.

- "expr1 ? : expr2" is a GCC extension.

- <algorithm> contains std::min().

- seekdir can't always be #define'd because some headers have members
named seekdir.

- adb_utils.cpp: Not really a compiler issue, just a random fix:
0x7F/DEL is not printable.

Change-Id: I0dfb634f1ba4ccbc0d1b9f71b00e838fbebb3b41
Signed-off-by: Spencer Low <CompareAndSwap@gmail.com>
/system/core/adb/file_sync_client.cpp
7fc45c3326ba4ecaa49ec0713dce61b053c9b9e4 07-Nov-2015 Josh Gao <jmgao@google.com> Merge "adb: pull empty directories."
a837df85908bdf5b00fa6d328dd622b59b91ef8b 07-Nov-2015 Josh Gao <jmgao@google.com> adb: remove superfluous checks.

Change-Id: I4d9ceb301b0d242b0bad9a0faa8e2a1824f36cca
/system/core/adb/file_sync_client.cpp
6580096c97a2cb0750f4f7cb60bc05e7e84f4d7d 04-Nov-2015 Josh Gao <jmgao@google.com> adb: pull empty directories.

Pushing empty directories is more troublesome, and probably either
requires changes to the server, or hacky `adb shell mkdir` stuff.

Bug: http://b/25395071
Change-Id: I4db6a993429a56e5c5ca994752418503b6f5d7c4
/system/core/adb/file_sync_client.cpp
cd7c1ed700707e3f3aea341c38d38e18ae410987 04-Nov-2015 Josh Gao <jmgao@google.com> adb: make local_build_list match remote_build_list.

local_build_list previously was returning an int, 0 on success and -1 on
failure, while remote_build_list was returning a bool, true on success
and false on failure.

Change-Id: Iced6c4142e2f843048d81c4e133d6b6dc75a35dd
/system/core/adb/file_sync_client.cpp
d97315731ff13274916be0f731ede15e81187c79 04-Nov-2015 Josh Gao <jmgao@google.com> adb: C++ify more of the push/pull functions.

Change-Id: Ie82d51ecadf5c94f3b138f5b13a17c3b46c61899
/system/core/adb/file_sync_client.cpp
45b6fc878ab5ba0f76b6bb1947fe04ac6667c2f5 04-Nov-2015 Josh Gao <jmgao@google.com> adb: make mkdirs/secure_mkdirs do what they say.

Previously, mkdirs/secure_mkdirs wouldn't create a directory at the
specified path, only the ones above it.

Bug: http://b/25459942
Change-Id: I70c94c4b44d90723cb4a063657fc40e5bcb3b10e
/system/core/adb/file_sync_client.cpp
fc7c3b682b4c9cf77e45ec2db8610d7d963705c6 03-Nov-2015 Josh Gao <jmgao@google.com> adb: rename 'flag' to something less meaningless.

Change-Id: I7f7644a0a6f9a7d48508ddaad2e6a51266ae8ee6
/system/core/adb/file_sync_client.cpp
19d9454ee3c2c3c11272ec34cee0e263a621fd98 03-Nov-2015 Josh Gao <jmgao@google.com> Merge "adb: C++ify local_build_list and remote_build_list."
fe54c96ab28a59a87c0c26ac4e6664826b4644ea 03-Nov-2015 Josh Gao <jmgao@google.com> Merge "adb: allow multiple args to push/pull."
cda6a2bd3e9c8c9644e833162d513009681e8e25 03-Nov-2015 Josh Gao <jmgao@google.com> adb: C++ify local_build_list and remote_build_list.

Change-Id: I71586488869c4827c5bd7294faa7c0f433bb9fbc
/system/core/adb/file_sync_client.cpp
983c41c35375227fe11de41b83e1861f07647313 03-Nov-2015 Josh Gao <jmgao@google.com> adb: add SyncConnection::Printf.

Replaces `sc.Print(android::base::StringPrintf(...)` with one call
to sc.Printf.

Change-Id: Ib7c98103dbca0b6a951f8e5a0f860ec6eacf6772
/system/core/adb/file_sync_client.cpp
05786779f390b23cc8611b101458cd174cf4e938 31-Oct-2015 Josh Gao <jmgao@google.com> adb: allow multiple args to push/pull.

Bug: http://b/25324823
Change-Id: I369dd97adbe1d08e18e84af776ce8b1d61251835
/system/core/adb/file_sync_client.cpp
351ecd15b29f0ce528ffac119640b9c01874562b 15-Oct-2015 Spencer Low <CompareAndSwap@gmail.com> adb: fix adb client running out of sockets on Windows

Background
==========

On Windows, if you run "adb shell exit" in a loop in two windows,
eventually the adb client will be unable to connect to the adb server. I
think connect() is returning WSAEADDRINUSE: "Only one usage of each
socket address (protocol/network address/port) is normally permitted.
(10048)". The Windows System Event Log may also show Event 4227, Tcpip.
Netstat output is filled with:

# for the adb server
TCP 127.0.0.1:5037 127.0.0.1:65523 TIME_WAIT
# for the adb client
TCP 127.0.0.1:65523 127.0.0.1:5037 TIME_WAIT

The error probably means that the client is running out of free
address:port pairs.

The first netstat line is unavoidable, but the second line exists
because the adb client is not waiting for orderly/graceful shutdown of
the socket, and that is apparently required on Windows to get rid of the
second line. For more info, see
https://github.com/CompareAndSwap/SocketCloseTest .

This is exacerbated by the fact that "adb shell exit" makes 4 socket
connections to the adb server: 1) host:version, 2) host:features, 3)
host:version (again), 4) shell:exit. Also exacerbating is the fact that
the adb protocol is length-prefixed so the client typically does not
have to 'read() until zero' which effectively waits for orderly/graceful
shutdown.

The Fix
=======

Introduce a function, ReadOrderlyShutdown(), that should be called in
the adb client to wait for the server to close its socket, before
closing the client socket.

I reviewed all code where the adb client makes a connection to the adb
server and added ReadOrderlyShutdown() when it made sense. I wasn't able
to add it to the following:

* interactive_shell: this doesn't matter because this is interactive and
thus can't be run fast enough to use up ports.
* adb sideload: I couldn't get enough test coverage and I don't think
this is being called frequently enough to be a problem.
* send_shell_command, backup, adb_connect_command, adb shell, adb
exec-out, install_multiple_app, adb_send_emulator_command: These
already wait for server socket shutdown since they already call
recv() until zero.
* restore, adb exec-in: protocol design can't have the server close
first.
* adb start-server: no fd is actually returned
* create_local_service_socket, local_connect_arbitrary_ports,
connect_device: probably called rarely enough not to be a problem.

Also in this change
===================

* Clarify comments in when adb_shutdown() is called before exit().
* add some missing adb_close() in adb sideload.
* Fixup error handling and comments in adb_send_emulator_command().
* Make SyncConnection::SendQuit return a success boolean.
* Add unittest for adb emu kill command. This gets code coverage over
this very careful piece of code.

Change-Id: Iad0b1336f5b74186af2cd35f7ea827d0fa77a17c
Signed-off-by: Spencer Low <CompareAndSwap@gmail.com>
/system/core/adb/file_sync_client.cpp
b708d1628332ea9266d08f0297cd9e9ee341a64f 28-Oct-2015 Elliott Hughes <enh@google.com> Show transfer progress in adb sync/pull/push.

Change-Id: If5439877d060f9bab29cf84be996071cf680c2d4
/system/core/adb/file_sync_client.cpp
6d92997ec4285caebe94064158a8cc017bbf5caa 27-Oct-2015 Elliott Hughes <enh@google.com> Don't use VLAs in adb.

This makes no measurable difference to the sync time; "adb sync" of
everything on /system for a Nexus 9 still takes 20s.

Change-Id: Ifa2626f7453937e43856b9c4ee06e1f5db0aa273
/system/core/adb/file_sync_client.cpp
8b43c3e65a05aff709a7e62a85198cdd7abfa88f 24-Oct-2015 Elliott Hughes <enh@google.com> Fix adb sync/pull/push error reporting.

I fixed the server side to send detailed error reports, but the client-side
code for pull was broken because it had already read the "FAIL" header before
calling the general error reporting code that expects to be able to read
the header. This meant we'd always report that we failed to read the failure
message.

Also add a couple of missing "\n"s, make sure every error message is prefixed
by "adb: ", and remove a useless path length check that would silently ignore
over-long paths rather than relying on SendRequest to detect and report the
problem.

Bug: http://b/6205106
Change-Id: I23862ececf03b761115ffa3f7725b7e1cecb48c7
/system/core/adb/file_sync_client.cpp
ae5a6c06cdd9ae1a0a7cdc42711f0a5594e54dcd 27-Sep-2015 Elliott Hughes <enh@google.com> Speed up adb sync.

Sending the SEND/DATA/DONE packets all in one write makes small file and
symbolic link transfer orders of magnitude faster. Transferring all the
symbolic links in /system/bin or all the cacerts in /system/etc goes down
from about 6s in each case to less than 0.5s.

Change-Id: Ia1706cef25535d0b685d3744241a0557a52b22ff
/system/core/adb/file_sync_client.cpp
081696d27c3b3c6bc0e2b97449c1da791fa00d25 03-Sep-2015 Elliott Hughes <enh@google.com> Improve adb sync_send error reporting.

Bug: http://b/23786900
Change-Id: I71f10de8d767eaf8bf0f5d9b8c304527e2b953ff
/system/core/adb/file_sync_client.cpp
d8cce1817b02c23124e85b138d85acd8fc24a757 28-Aug-2015 Spencer Low <CompareAndSwap@gmail.com> adb: fix adb install and adb push exit code, error handling, unittest

adb push was not returning a bad exit code when write_data_file() or
write_data_link() failed. I encountered this when running the unittest
on Windows which can get into situations where stat() succeeds, but
open() fails due to pre-existing exclusive file access (which typically
doesn't exist on unix).

The same code is used by adb install, so this also fixes its error
handling.

Fixed some fd leaks and propagation of errors when reading a file.

Fixed a unittest to close temp files before reading them.

Change-Id: Ieba0026fa4c79eb0484676e4f2faaac9603ef584
Signed-off-by: Spencer Low <CompareAndSwap@gmail.com>
/system/core/adb/file_sync_client.cpp
8fcd8bc046188abe0b0e87754af472d4838b4c50 25-Aug-2015 Elliott Hughes <enh@google.com> EINTR is handled by adb_read/unix_read and friends.

No need to clutter the code with cases that won't happen.

Change-Id: I47c5a2e6170f902d2618719f44492234a4869567
/system/core/adb/file_sync_client.cpp
42640e5224a861690de006952470451d18337256 24-Aug-2015 Elliott Hughes <enh@google.com> Merge "Add missing #include <memory> for std::unique_ptr on Windows."
a925dba0e087042f7a7ecbcde46576acef15aa7d 24-Aug-2015 Elliott Hughes <enh@google.com> Add missing #include <memory> for std::unique_ptr on Windows.

Change-Id: Ic02f53003a20a646cbbf2aa08e0e10be9bd8b97f
/system/core/adb/file_sync_client.cpp
f4465203b618fa57b6669c4d5627f32fb025b73e 24-Aug-2015 Elliott Hughes <enh@google.com> There are no big endian hosts, grandpa.

Change-Id: I6f64f702f919fe4af10d82c5f395a051571815ed
/system/core/adb/file_sync_client.cpp
aa2454919098ee14cd232669f1e7dbb33ed07ccf 03-Aug-2015 Elliott Hughes <enh@google.com> adb sync cleanup.

We can double the speed of "adb sync" (on N9) if we increase SYNC_DATA_MAX
from 64KiB to 256KiB. This change doesn't do that, because I still haven't
managed to plumb through the information about whether we're a new adb/adbd
to file_sync_client.cpp and file_sync_service.cpp. But this is already a big
change with a lot of cleanup, so let's do the cleanup and worry about the
intended change another day...

This change does improve performance somewhat by halving the number of
lstat(2) calls made on the client side, and ensuring that most packets are
sent with a single write. This has the pleasing result of making the null
sync on an AOSP N9 go from just over 300ms to around 100ms, which means it
now seems instantaneous (https://en.wikipedia.org/wiki/Mental_chronometry).

Change-Id: If9f6d4c1f93ec752b95f71211bbbb1c513045166
/system/core/adb/file_sync_client.cpp
5c74270f95107952a893584d02b33f9a79f6b3c4 31-Jul-2015 Elliott Hughes <enh@google.com> More adb cleanup.

This removes adb_dirstart and adb_dirstop. It also fixes a couple of memory
leaks by switching to std::string. This also fixes the bug in the previous
change --- mkdirs is given input like "/system/bin/sh" and only expected to
create "/system/bin". In a later change, we should remove mkdirs and only
expose the intended "unlink && mkdirs && create" functionality.

Change-Id: I30289dc1b3dff575cc1b158d993652178f587552
/system/core/adb/file_sync_client.cpp
47d67c96ec991ef1690b4c07188335cbc4bfa2aa 06-May-2015 Alex Vallée <avallee@chromium.org> Write mkdirs in more idiomatic C++ style.

~ Rewrote mkdirs to be in C++ style.
~ Replaced adb_dir{start,stop} with std::string params and (r)find.
+ Added test for mkdirs.

Also make base/test_utils.h public and support temporary directories
as well as files.

Change-Id: I6fcbdc5e0099f3359d3aac6b00c436f250ca1329
/system/core/adb/file_sync_client.cpp
14216148210fef447aaed46d5f764844a605d3ae 06-May-2015 Alex Vallée <avallee@chromium.org> Move mkdirs to adb_utils.

There were duplicate implementations in commandline.cpp and
file_sync_client.cpp.

Change-Id: Ib448f76c0d7ffdcd577336b1c610a881425bc2db
/system/core/adb/file_sync_client.cpp
6001c87cbcafba68975fd9b3aa69f4952396f83c 13-May-2015 Spencer Low <CompareAndSwap@gmail.com> adb: win32: fix StringPrintf format string checking of %zd and PRIu64

At runtime, vsnprintf (and android::base::StringPrintf which calls it)
call a mingw version of vsnprintf, not the vsnprintf from MSVCRT.DLL.
The mingw version properly understands %zd and PRIu64 (the latter,
provided that you #include <inttypes.h>).

The problem was that android::base::StringPrintf was causing
compile-time errors saying that %zd and PRIu64 were not recognized. It
seems that this was because the attribute on the function prototypes
specified `printf' instead of `gnu_printf'. Once that was fixed to match
vsnprintf's attribute, the warnings went away.

This uses similar preprocessor techniques as <android/log.h>.

Also restore a %zd usage to avoid a static_cast<>, and make
print_transfer_progress()'s format string compile-time checkable (and
tweak some types and %llu => PRIu64).

Change-Id: I80b31b9994858a28cb7c6847143b86108b8ab842
Signed-off-by: Spencer Low <CompareAndSwap@gmail.com>
/system/core/adb/file_sync_client.cpp
3edd54b3a873a18d9c2f66ce955036471f4c3c0a 06-May-2015 Elliott Hughes <enh@google.com> Add some missing 'static's.

Change-Id: Id76bb1e954e8fa36a11a38b5445c87f4a64af799
/system/core/adb/file_sync_client.cpp
078f0fcf4c63b8d8e8c10a18855eae04ca321e06 29-Apr-2015 Elliott Hughes <enh@google.com> Move __adb_error to std::string, and improve various errors.

Also remove an sprintf. Also fix various bits of code that were
reporting stale adb_error values when they meant strerror.

Bug: http://b/20666660
Change-Id: Ibeb48b7bc21bb0ec30ba47889d1d671ee480e1b7
/system/core/adb/file_sync_client.cpp
d236d071b960a387f536712f0314b99696167178 21-Apr-2015 Elliott Hughes <enh@google.com> Fix "adb sync" for devices without vendor and oem.

Bug: http://b/20440110
Change-Id: I2481992198890f5ca50412c2b7ca361101961413
/system/core/adb/file_sync_client.cpp
2d4121c0dcc93382bcd7ea6476f433d8254919dd 17-Apr-2015 Elliott Hughes <enh@google.com> Remove extern "C" barriers to using C++.

Change-Id: Ic046d6aa540738cb46b54531bc59ba3b47b0136d
/system/core/adb/file_sync_client.cpp
46270d233a76b63497b5bcf456e00f6defd429bd 13-Mar-2015 Elliott Hughes <enh@google.com> adb doesn't actually use libzipfile.

Change-Id: Ia7d22214bc8422c88edaaf9bb716d7e12e0bb381
/system/core/adb/file_sync_client.cpp
bac3474a8256cb32a29e8d46f78cad95a5502692 26-Feb-2015 Dan Albert <danalbert@google.com> Move adb to C++.

I keep trying to clean things up and needing std::strings. Might as
well just do this now.

usb_linux_client.c is going to stay as C because GCC isn't smart
enough to deal with the designated initializers it uses (though for
some reason it is in C mode).

The Darwin files are staying as C because I don't have a way to test
that they build.

The Windows files are staying as C because while I can actually build
for them, it's slow and painful.

Change-Id: I75367d29205a9049d34460032b3bb36384f43941
/system/core/adb/file_sync_client.cpp