)]}'
{
  "log": [
    {
      "commit": "b28812f800fcf5eaf26cc8b3145661d85d910ea9",
      "tree": "5ad8400eca8c7af26df5ab809a94f66745fb7215",
      "parents": [
        "a55dbd8dd32a1b12d337c4e4846fc6972e0dfb91"
      ],
      "author": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Sat Aug 08 15:07:07 2015 -0700"
      },
      "committer": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Sat Aug 08 15:07:07 2015 -0700"
      },
      "message": "adb: win32: write ACK to separate pipe instead of stdout\n\nThe win32 version of a55dbd8dd32a1b12d337c4e4846fc6972e0dfb91. The big\ntechnique is to fit a Win32 HANDLE value in an int because it only uses\n32-bits. This allows most of the other adb code to stay the same.\n\nAlso, fix a regression in the \u0027adb server nodaemon\u0027 command that was\nerroneously returning an error when --reply-fd was not used, which\nshould not be necessary for this particular command.\n\nChange-Id: I37e9c609014b813af93bf0d6c12f665b59c93c41\nSigned-off-by: Spencer Low \u003cCompareAndSwap@gmail.com\u003e\n"
    },
    {
      "commit": "a55dbd8dd32a1b12d337c4e4846fc6972e0dfb91",
      "tree": "c96c62656a9ddec795e3c746e900d5bda06fd65e",
      "parents": [
        "acbdda4d752aa2a5f4dd872f1c31855cc813862b"
      ],
      "author": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Fri Aug 07 10:10:29 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 07 11:31:07 2015 -0700"
      },
      "message": "adb start-server: Use a separate fd for sending initial OK\n\nWhen \"adb start-server\" is issued, and a server needs to be launched,\nadb client forks itself and the child process runs the server routine.\nOnce the server initializes its various components, it sends an \"OK\\n\"\nback to the client via its stderror (or stdout on Windows).\n\nThis sequence breaks down if before sending the \"OK\\n\", the server\nhappens to log something on its stderr. In order to avoid this, the\nclient now expects the ack to come on a different fd rather than one\nof the standard streams.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d182150\n\nChange-Id: I9d58a08068d71eb3b77e8a7377e934631c016466\n"
    },
    {
      "commit": "6815c07fbe95c9f38362d5cbf80d8286e3d86950",
      "tree": "4675cd2e9c7cfc7cc929796485b1e36f081ac21e",
      "parents": [
        "c5dc27027a99fb09503d96a875a23c03eb4ac885"
      ],
      "author": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Mon May 11 01:08:48 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 31 13:30:41 2015 -0700"
      },
      "message": "adb: win32: Unicode path names, env vars, some console support\n\nInitial support for Unicode file/dir names. Unicode paths can be passed\non the command line, directory enumeration can enumerate Unicode paths,\nUnicode paths are used for file access, and Unicode paths can be output\non the console correctly.\n\nAlso Unicode environment variable access.\n\nInitial support for Unicode output from adb shell (which uses\nadb_fwrite()). This is partial because the corner case of an\nadb_fwrite() call with an incomplete UTF-8 multi-byte sequence does not\noutput correctly, but this should be uncommon, is better than what we\nhad before (*always* incorrect UTF-8 multi-byte sequences) and can be\nfixed in the future.\n\nCalls to Windows APIs with char strings were changed to pass wchar_t\nstrings to the FooW() variants.\n\nFor more details, see the giant comment in sysdeps_win32.cpp.\n\nhttps://code.google.com/p/android/issues/detail?id\u003d8185\n\nChange-Id: I7ebf6713bb635638b986ccee97b354428837c9c5\nSigned-off-by: Spencer Low \u003cCompareAndSwap@gmail.com\u003e\n"
    },
    {
      "commit": "753d485aca0e35bc92a7dec0c3278f0530dc25ca",
      "tree": "7dfddab77e98b5fa205a0aed70ff8c6d0d5285e2",
      "parents": [
        "9897771f79a760bcd337cae67500ebb5ff1d619f"
      ],
      "author": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Thu Jul 30 23:07:55 2015 -0700"
      },
      "committer": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Thu Jul 30 23:07:55 2015 -0700"
      },
      "message": "adb: win32: initial IPv6 support and improved Winsock error reporting\n\nCall getaddrinfo() for connecting to IPv6 destinations.\n\nWinsock APIs do not set errno. WSAGetLastError() returns Winsock errors\nthat are more numerous than BSD sockets, so it really doesn\u0027t make sense\nto map those to BSD socket errors. Plus, even if we did that, the\nWindows C Runtime (that mingw binaries use) has a strerror() that does\nnot recognize BSD socket error codes.\n\nThe solution is to wrap the various libcutils socket_* APIs with\nsysdeps.h network_* APIs. For POSIX, the network_* APIs just call\nstrerror(). For Windows, they call SystemErrorCodeToString() (adapted\nfrom Chromium).\n\nAlso in this change:\n\n - Various other code was modified to return errors in a std::string*\n   argument, to be able to surface the error string to the end-user.\n\n - Improved error checking and use of D() to log Winsock errors for\n   improved debuggability.\n\n - For sysdeps_win32.cpp, added unique_fh class that works like\n   std::unique_ptr, for calling _fh_close().\n\n - Fix win32 adb_socketpair() setting of errno in error case.\n\n - Improve _socket_set_errno() D() logging to reduce confusion. Map\n   a few extra error codes.\n\n - Move adb_shutdown() lower in sysdeps_win32.cpp so it can call\n   _socket_set_errno().\n\n - Move network_connect() from adb_utils.cpp to sysdeps.h.\n\n - Merge socket_loopback_server() and socket_inaddr_any_server() into\n   _network_server() since most of the code was identical.\n\nChange-Id: I945f36870f320578b3a11ba093852ba6f7b93400\nSigned-off-by: Spencer Low \u003cCompareAndSwap@gmail.com\u003e\n"
    },
    {
      "commit": "4911f4b02685d0f41e043f2cef8e3d1f7403ff09",
      "tree": "aed3c1cd78f581def1238b0d1c54356350396ba8",
      "parents": [
        "d98ca8a92f6bf81a351472f36fac9a04a402327e"
      ],
      "author": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Wed May 20 23:17:26 2015 -0700"
      },
      "committer": {
        "name": "Spencer Low",
        "email": "compareandswap@gmail.com",
        "time": "Tue Jun 02 21:04:56 2015 +0000"
      },
      "message": "adb: win32: fix logging to adb.log\n\nIn the adb client, redirect stdin and stderr of the adb server to `nul\u0027,\nso that when the adb server starts up, it avoids issues in the C Runtime\nwhere it closes stderr, making it hard to properly reopen. There are\nprobably other ways to avoid this issue, but I think this is the\ncleanest that will keep working over the years and will exercise the\nmost commonly used code-paths in the C Runtime.\n\nFix some adb_close() calls to be unix_close() (only really matters on\nWindows).\n\nMake stderr non-buffered on Windows, to match the (sensible) Linux\nbehavior.\n\nChange-Id: I1b15c64240e50dbeb56788b0d0d901f4536ad788\nSigned-off-by: Spencer Low \u003cCompareAndSwap@gmail.com\u003e\n"
    },
    {
      "commit": "08d552b1da44146fe91e7448cde7f9aff0fcf18f",
      "tree": "571e89b7fedd58a5092338223060c26ff8988cb0",
      "parents": [
        "4f246adfa10dcf9439d3c1c352414c9d7bb50032"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 21 13:58:50 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu May 21 16:25:57 2015 -0700"
      },
      "message": "Improve logging.\n\nAny output from the LOG family will now go to stderr and logcat on the\ndevice. stderr is usually redirected to a log file, but that is now\ninhibited for adbd if being run from a tty (useful when debugging with\nthe serial console).\n\nThis also fixes sending logs to the file on device for the trace mask\nof \"all\". The \"all\" tag was specifically handled to return early from\nthe function, preventing the file initialization from happening.\n\nChange-Id: Id253577bfd1500fbce92dbfba0f9be23dbfd5ee4\n"
    },
    {
      "commit": "91ae28e798f10eff91fecfe968183de0d2f1301d",
      "tree": "c01218ff44bed047c18b93c03926d115123fd957",
      "parents": [
        "9a0602f1367d0f460f0e80329fafc78aad13d804"
      ],
      "author": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Mon May 11 15:23:39 2015 -0700"
      },
      "committer": {
        "name": "Spencer Low",
        "email": "CompareAndSwap@gmail.com",
        "time": "Mon May 11 15:57:43 2015 -0700"
      },
      "message": "adb: win32: fix daemon acknowledgement\n\nThe daemon failed to startup because main.cpp was changed from calling\nWriteFile() to android::base::WriteStringToFd(), the later which calls\nwrite() in the C Runtime which by default has stdout in textmode which\ndoes \\n to \\r\\n translation.\n\nThe quick fix is to change stdout\u0027s mode from text to binary since right\nafter it is reopened to redirect to the daemon log file anyway.\n\nChange-Id: I322fc9eae5d6abbf63f3d5917b0beb2171b5a15c\nSigned-off-by: Spencer Low \u003cCompareAndSwap@gmail.com\u003e\n"
    },
    {
      "commit": "53a3744981a350cd3a35f7e062c6fd05cf8be24a",
      "tree": "76bd2c0a306a9dac27d9c9b03e72a241a56e61c9",
      "parents": [
        "e66e677c1d14ad932700d37844d8e78bec584078"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri May 08 16:13:53 2015 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri May 08 17:33:21 2015 -0700"
      },
      "message": "Revert \"Revert \"Split adb_main.cpp into client and daemon.\"\"\n\nThis reverts commit 151f4887d194a642b4a276276344d4ea5b05d477.\n\nChange-Id: I74088db34983dc99e316a07c6ddc294340e0eb71\n"
    }
  ]
}
