)]}'
{
  "log": [
    {
      "commit": "02c78a386739a8a2b3007efeb00a9ca04132100a",
      "tree": "6679bef40da8b7fbe6b3c5a479eb5c2e4e035708",
      "parents": [
        "055890686636faddbb6d5d407c67f5dcc53ac865"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 11 17:02:20 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 14 14:35:47 2014 -0700"
      },
      "message": "Reimplement isinf/isnan/fpclassify.\n\nAlso move isinf and isnan into libc like everyone else.\n\nAlso move fpclassify to libc like the BSDs (but unlike glibc). We need\nthis to be able to upgrade our float/double/long double parsing to gdtoa.\n\nAlso add some missing aliases. We now have all of:\n\n  isnan, __isnan, isnanf, __isnanf, isnanl, __isnanl,\n  isinf, __isinf, isinff, __isinff, isinfl, __isinfl,\n  __fpclassify, __fpclassifyd, __fpclassifyf, __fpclassifyl.\n\nBug: 13469877\nChange-Id: I407ffbac06c765a6c5fffda8106c37d7db04f27d\n"
    },
    {
      "commit": "5eb670462ab9e7d8a6363861e063cad4b5dfe7d1",
      "tree": "5a076fb31fb8f28d747da6bbdfd1eb12c840318e",
      "parents": [
        "a0b3232161f6ad60be1a3c4d97044ac2bb14808c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 11 18:00:37 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 11 18:00:37 2014 -0700"
      },
      "message": "Replace the bionic hack for a vfprintf leak with (roughly) the upstream fix.\n\nCurrently in bionic free and freedtoa are equivalent, but that\u0027s not true\nof gdtoa. This makes it easier to test gdtoa without having to replace\neverything. (Yes, I found this bug the hard way.)\n\nChange-Id: I290823a2a0a83329def5f2719b349215ad0dbbde\n"
    },
    {
      "commit": "edd7c2ec256548702d275b3023f54bd91b4dcfc4",
      "tree": "185b4c42aa947850753ef8caa171dc2e6ecd1b2e",
      "parents": [
        "9c9ef0db91c816ca81a22a94c3ddd896a0f0f1bc"
      ],
      "author": {
        "name": "Alexander Ivchenko",
        "email": "alexander.ivchenko@intel.com",
        "time": "Tue Apr 01 17:01:39 2014 +0400"
      },
      "committer": {
        "name": "Alexander Ivchenko",
        "email": "alexander.ivchenko@intel.com",
        "time": "Wed Apr 02 18:30:55 2014 +0400"
      },
      "message": "Fix the printf issue for 64 bits. The following case:\n\nprintf(\"%1$s %1$s\\n\", \"test\");\n\nwould print garbage instead of the second \"test\". The problem is __find_arguments\nand the patch is a backport of two patches from OpenBSD that fix the issue:\n\nAuthor: tedu \u003ctedu@cvs.openbsd.org\u003e\nDate:   Sat Apr 29 23:00:24 2006 +0000\n\n    check mmap for failure.  the helper functions using it return -1, but\n    callers do not yet check since printf() for example is not documented\n    to return an error.\n    some formatting cleanups.\n    mostly ok deraadt millert\n\nAuthor: millert \u003cmillert@cvs.openbsd.org\u003e\nDate:   Fri May 16 14:28:54 2008 +0000\n\n    C99 says that for each va_copy() there must be a matching va_end().\n    Replace the non-portable hackery in __find_arguments() with a union.\n    From FreeBSD.\n\nChange-Id: I6ea392ce6fcf4a319ae6a67ec58cc52fe7cbe534\nSigned-off-by: Alexander Ivchenko \u003calexander.ivchenko@intel.com\u003e\n"
    },
    {
      "commit": "c20de902875dcaebde0ccd0b7a8351598f254d4c",
      "tree": "cb4a8a75dd787d93bca11fc0a2da944a7fc2e76f",
      "parents": [
        "849e162d3bedc5ca61bdf15486268b253b9f4e93"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 20 15:21:32 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 21 09:59:34 2014 +0000"
      },
      "message": "Remove ALIGNBYTES and ALIGN from \u003csys/param.h\u003e\n\nThere are only three users of bionic definition of ALIGN and keeping it\nin sys/param.h polutes the namespace.\n\nI inline the definition in the the three places that\u0027s used.\n\nBug: 13400663\nChange-Id: I565008e8426c38ffb07422f42cd8e547d53044e9\n"
    },
    {
      "commit": "f2cea021ab2c6d7d7feeb40cca098aa132605876",
      "tree": "119daf06820264a62bf3290bbbf8839dcb0196e3",
      "parents": [
        "6ece7fc33a389ef9bcbe78a83a6633e4cb4e4743"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 13 14:54:53 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 13 14:54:53 2014 -0700"
      },
      "message": "Clean up \u003cstdio.h\u003e macros.\n\nAlso neuter __isthreaded.\n\nWe should come back to try to hide struct FILE\u0027s internals for LP64.\n\nBug: 3453512\nBug: 3453550\nChange-Id: I7e115329fb4579246a72fea367b9fc8cb6055d18\n"
    },
    {
      "commit": "603332fc4c2d073f0e197f9ce4517710e9b3a6d0",
      "tree": "55e87813c7e80c351e22cb776ab9c2426e430a4d",
      "parents": [
        "0e79338d12d1ca780efcd0720af92b0a70e55da8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 12 17:10:41 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 12 17:10:41 2014 -0700"
      },
      "message": "Upgrade to current upstream scanf implementation.\n\nAlso add a basic test.\n\nChange-Id: Icc0e68a5716b9579244f6eb8bac1ab5a24eda85a\n"
    },
    {
      "commit": "ad41e9a4eb957ea318bbc93dd49dbe76b89df1e9",
      "tree": "8d95daa4b9d104c3b77467ae7eac651430cbe4f2",
      "parents": [
        "55f9710ac4843b4a5d2c8b03ade3d2bddd1fdf46"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 15:05:50 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 11 15:05:50 2014 -0700"
      },
      "message": "More stdio cleanup.\n\nChange-Id: Idc909cd3dc7b072f1edd2ae4980932d6550e8568\n"
    },
    {
      "commit": "53e43292aac91bf62995788cd5ca2ceb7caea283",
      "tree": "003679a1e2288bad947f714ee45bfa6febf479b6",
      "parents": [
        "ba40a560176e6ea753d09a6a71343b81ea4c8c1e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 24 18:00:43 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 24 18:02:05 2014 -0800"
      },
      "message": "More OpenBSD cleanup (primarily string).\n\nThis patch removes the string/ and wchar/ directories.\n\nChange-Id: Ia489904bc67047e4bc79acb1f3eec21aa3fe5f0d\n"
    },
    {
      "commit": "0133944b09d1c0a35041f7a41eb6bfb660144f4f",
      "tree": "0cb37ddb83c7cf6363d917791d76420ad6f6e1c1",
      "parents": [
        "e65055af112780623f372aca6a1f78d2b2acb34f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 20 18:04:58 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 21 14:30:18 2014 -0800"
      },
      "message": "Clean up our OpenBSD usage.\n\nAlso undo some of the mess where we have OpenBSD \u003cstdio.h\u003e but a mix of\ndifferent BSD\u0027s implementations.\n\nIn this first pass, I\u0027ve only moved easy OpenBSD stuff.\n\nChange-Id: Iae67b02cde6dba9d8d06fedeb53efbfdac0a8cf6\n"
    },
    {
      "commit": "eb847bc8666842a3cfc9c06e8458ad1abebebaf0",
      "tree": "15e070fb706ba7599d5f402a8f934a7399541a6a",
      "parents": [
        "0c17099a71cb5d1b36b7aab66fd7341b3fc9106d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 15:50:50 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 16:00:17 2013 -0700"
      },
      "message": "Fix x86_64 build, clean up intermediate libraries.\n\nThe x86_64 build was failing because clone.S had a call to __thread_entry which\nwas being added to a different intermediate .a on the way to making libc.so,\nand the linker couldn\u0027t guarantee statically that such a relocation would be\npossible.\n\n  ld: error: out/target/product/generic_x86_64/obj/STATIC_LIBRARIES/libc_common_intermediates/libc_common.a(clone.o): requires dynamic R_X86_64_PC32 reloc against \u0027__thread_entry\u0027 which may overflow at runtime; recompile with -fPIC\n\nThis patch addresses that by ensuring that the caller and callee end up in the\nsame intermediate .a. While I\u0027m here, I\u0027ve tried to clean up some of the mess\nthat led to this situation too. In particular, this removes libc/private/ from\nthe default include path (except for the DNS code), and splits out the DNS\ncode into its own library (since it\u0027s a weird special case of upstream NetBSD\ncode that\u0027s diverged so heavily it\u0027s unlikely ever to get back in sync).\n\nThere\u0027s more cleanup of the DNS situation possible, but this is definitely a\nstep in the right direction, and it\u0027s more than enough to get x86_64 building\ncleanly.\n\nChange-Id: I00425a7245b7a2573df16cc38798187d0729e7c4\n"
    },
    {
      "commit": "35d937e4eb7b8e0a4e9a113d2f7434d55c0bc056",
      "tree": "38f058560086d0a97b8455258fb66d05ada36a3b",
      "parents": [
        "76218efbeb2e124656ce15d4eb5a7039da065123"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Tue Oct 01 15:02:07 2013 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Tue Oct 01 15:02:07 2013 -0700"
      },
      "message": "Remove _FORTIFY_SOURCE in implementation files.\n\nThis was causing conflicting declarations for the library definitions of\ncommon functions like sprintf(), snprintf(), and strchr().\n\nChange-Id: I5daaa8a58183aa0d4d0fae8a7cb799671810f576\n"
    },
    {
      "commit": "1d13c64d781a87dfa3f01e5c179bfa36748786af",
      "tree": "f50fd074ebb7a749ff0bbb2069e3145cd67cd3ba",
      "parents": [
        "fc2ceae778afdcb2deee4abb5e2fc9b9904fa761"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 23 16:02:39 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 23 16:02:39 2013 -0700"
      },
      "message": "Fix %hhd formats in the printf family.\n\nFound by adapting the simple unit tests for libc logging to test\nsnprintf too. Fix taken from upstream OpenBSD without updating\nthe rest of stdio.\n\nChange-Id: Ie339a8e9393a36080147aae4d6665118e5d93647\n"
    },
    {
      "commit": "284f7880323d33356df682c3cfb6b7f0c665bfd4",
      "tree": "e810aa0bbbd9ca8257a1bcd6d52ea9b10540a592",
      "parents": [
        "f8a66bb31204b42f830c1865a795b5f3eb1e0147"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 19 15:20:31 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 19 15:20:31 2013 -0700"
      },
      "message": "Upgrade mktemp.c to the current upstream version.\n\nYet another archaic relic containing bugs that had been fixed years before the\nAndroid project even started...\n\nBug: 9935113\nChange-Id: I3c9d019a216efd609ee568cf8c70bc360f357403\n"
    },
    {
      "commit": "677ee5647721df22f13909375d5d0e770a1a80bf",
      "tree": "a1837c93d0fcd224a5745ea7036e1dda85dee9ae",
      "parents": [
        "f1867d47cbce4225d712a2684da67031f7350909"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 15:24:15 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 15:24:15 2013 -0700"
      },
      "message": "Switch to current upstream stdio makebuf.c and setvbuf.c.\n\nChange-Id: I4761b5e94459815520f01062eef39abf62af621f\n"
    },
    {
      "commit": "61e699a133a4807fe878a6cb0d7190d7c96e21f8",
      "tree": "12dd46e7f8e5f7172a3fe0fd9075fa929cbb1001",
      "parents": [
        "5cde15eb17f4ddc0949c0cbd38a46e6c0bad7019"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 14:05:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 14:14:53 2013 -0700"
      },
      "message": "Clean up abort.\n\n* A dlmalloc usage error shouldn\u0027t call abort(3) because we want to\n  cause a SIGSEGV by writing the address dlmalloc didn\u0027t like to an\n  address the kernel won\u0027t like, so that debuggerd will dump the\n  memory around the address that upset dlmalloc.\n\n* Switch to the simpler FreeBSD/NetBSD style of registering stdio\n  cleanup. Hopefully this will let us simplify more of the stdio\n  implementation.\n\n* Clear the stdio cleanup handler before we abort because of a dlmalloc\n  corruption error. This fixes the reported bug, where we\u0027d hang inside\n  dlmalloc because the stdio cleanup reentered dlmalloc.\n\nBug: 9301265\nChange-Id: Ief31b389455d6876e5a68f0f5429567d37277dbc\n"
    },
    {
      "commit": "6b05c8e28017518fae04a3a601d0d245916561d2",
      "tree": "91e24656267091edeeff1c171f20d635d2503c38",
      "parents": [
        "b632857a50a1fd2b759316d07ace6c36f6f418cf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 11 13:54:48 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 11 13:55:01 2013 -0700"
      },
      "message": "Start moving to current FreeBSD stdio.\n\nThis only touches the easy stuff.\n\nChange-Id: Iecee57f1681dba5c56bff59f0e9a89811a71f0ca\n"
    },
    {
      "commit": "f27b7fb0567a9cbb642be9d98298cb6668e7db39",
      "tree": "99a6559087e9fcb01aa78852e57054c4f0316b7a",
      "parents": [
        "dea13da3407873e4f3fec9ba1a04b4fdacea07f4"
      ],
      "author": {
        "name": "Hakan Kvist",
        "email": "hakan.kvist@sonymobile.com",
        "time": "Wed Oct 10 08:32:52 2012 +0200"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:53:33 2012 -0800"
      },
      "message": "Define DEFFILEMODE and friends\n\nDefine the macros ACCESSPERMS, ALLPERMS and DEFFILEMODE.\nThese macros originates from BSD but has been available in glibc\nfor quite some time.\n\nChange-Id: I429cd30aa4e73f53b153ee7740070cebba166c57\n"
    },
    {
      "commit": "a89864a20b818621a1da10e88fda815334062f9f",
      "tree": "7ebc6e1cf123c0f9d8ab50e775039e183990110b",
      "parents": [
        "d3bf954e9ffbdee8d732ccb6ad6143dc31b605fc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 17:35:49 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 01 17:35:49 2012 -0700"
      },
      "message": "Move non-upstream code into the libc/bionic directory.\n\nI\u0027ll need at least one more pass, because there\u0027s some upstream code\nlurking in libc/bionic, but this is still a step in the right direction.\n\nChange-Id: I55927315972da8327ae01c5240ed587db17e8462\n"
    },
    {
      "commit": "91875dcd6e17b7f3b251efe9b236b905ef414dde",
      "tree": "3e1fb66b922496ec295bd63bfea01fe339f7fcc0",
      "parents": [
        "6e0e03c38bc0e864225b89b3fb273fb56ded8940"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 24 17:55:15 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 26 12:02:17 2012 -0700"
      },
      "message": "Fix tmpfile(3).\n\nThis could be better, but at least now it works.\n\nChange-Id: I88b7cf3f7ce8e5fa0b3fe678b7d1679a68ffffc9\n"
    },
    {
      "commit": "a37ce7faa6d6c7355e3c6f6e09e5268cbf29c291",
      "tree": "de9e60d68ae8b49135e485fc4098648ff5de8372",
      "parents": [
        "26facba288df013fd898f8df12d84e5669ece6eb",
        "c7dcd67d56701a10c14019b17c9499249ab6c252"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 24 15:10:07 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 24 15:10:07 2012 -0700"
      },
      "message": "Merge \"Add missing va_end() to prevent stack corruptions\""
    },
    {
      "commit": "9145ad3f0ae917e6daddbceaa541dfbe208a3bc5",
      "tree": "18b0562387f0bc488da4023212efd44270384826",
      "parents": [
        "c27103d84c124d40f3f4cff46d7cfa74342e0585"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 25 16:01:38 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jul 25 16:01:38 2012 -0700"
      },
      "message": "vfprintf: fix spelling.\n\nChange-Id: I6dc611143fb1f3e9ccf0a77b40ee48a3c1d72ca9\n"
    },
    {
      "commit": "c7dcd67d56701a10c14019b17c9499249ab6c252",
      "tree": "675ccad6a3700d4c232a48999c6c9ed4bc15edef",
      "parents": [
        "5af97ca8514d9fb4175bff3a79abf26889b94530"
      ],
      "author": {
        "name": "Yaroslav Miroshnychenko",
        "email": "yaroslav.miroshnychenko@sonymobile.com",
        "time": "Thu Jun 14 12:41:54 2012 +0200"
      },
      "committer": {
        "name": "Henrik Baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Fri Jul 13 09:37:57 2012 +0200"
      },
      "message": "Add missing va_end() to prevent stack corruptions\n\nAdded va_end() for copied variable arguments lists\nin __vfprintf() and __find_arguments().\nThis is by C standard.\nImportant for systems which pass arguments in registers.\n\nChange-Id: I7ac42beaa6645bfe856c18132253352dae29ea37\n"
    },
    {
      "commit": "965dbc6405aa2c3170270cfc53a8d4416444fddb",
      "tree": "7764d865c47bc84041f521ac11748ebe986a8871",
      "parents": [
        "2ddf77b37731dff3a271c1312fc0bef2e7d41473"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jul 03 11:45:31 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jul 09 09:57:18 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add fgets support.\n\nChange-Id: I8c3410a90c71a3336c4ac8581618fa9330edf5e3\n"
    },
    {
      "commit": "9b549c39c938f54680f282c21e6885f53254bfb0",
      "tree": "8bb4a40d6d9c7f265a58954572097eefa1c2da5e",
      "parents": [
        "c2f1d215b1786520fa8c371caa97f062e0bfb513"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jun 12 15:59:04 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jun 13 09:14:30 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add sprintf / vsprintf support\n\nsprintf FORTIFY_SOURCE protections are not available\non clang.\n\nAlso add various __attribute__s to stdio functions.\n\nChange-Id: I936d1f9e55fe53a68885c4524b7b59e68fed218d\n"
    },
    {
      "commit": "cffdf6693ffb50d2a1258d955a162bca83038f25",
      "tree": "205f5c66002cd0a5f064081142bf1b54507e9a4e",
      "parents": [
        "85b06f9365ae6776deb9fcf09f450f777ace9e34"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 11 15:50:57 2012 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Mon Jun 11 16:46:16 2012 -0700"
      },
      "message": "FORTIFY_SOURCE: add snprintf, vsnprintf\n\nAdd _FORTIFY_SOURCE support for snprintf, vsnprintf\n\nAt this time, we opt out of these protections for clang, as clang\ndoes not implement __builtin_va_arg_pack().\n\nhttp://clang.llvm.org/docs/UsersManual.html#c_unimpl_gcc\n\nChange-Id: I73ebe5ec8dad1dca8898a76d6afb693a25f75375\n"
    },
    {
      "commit": "9831ad3ce6bd5b22da16a275ed67e7236eae3d1f",
      "tree": "2f5152add91760c209361fb918ad83a4f24b3502",
      "parents": [
        "4b469eae40368913b2841b390dada6c58296c602"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Aug 29 21:43:46 2011 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Nov 15 13:16:42 2011 +0100"
      },
      "message": "libc: speed-up flockfile()/funlockfile()\n\nFor Honeycomb, we added proper file thread-safety for\nall FILE* operations. However, we did implement that by\nusing an out-of-band hash table to map FILE* pointers\nto phtread_mutex_t mutexes, because we couldn\u0027t change\nthe size of \u0027struct _sFILE\u0027 without breaking the ABI.\n\nIt turns out that our BSD-derived code already has\nsome support code to extend FILE* objects, so use it\ninstead. See libc/stdio/fileext.h\n\nThis patch gets rid of the hash table, and put the\nmutex directly into the sFILE extension.\n\nChange-Id: If1c3fe0a0a89da49c568e9a7560b7827737ff4d0\n"
    },
    {
      "commit": "bc9d1fe7c467d861a2b7c1deafca5589c1bc309e",
      "tree": "ed4d7ca34ce793a3b91d8c4358c6a80bf70b9cb5",
      "parents": [
        "663e05797f9bb2463217055a2510063ea7977379",
        "4685acbdd45c44e2e21c74242953bee5198209f9"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit%android.com@gtempaccount.com",
        "time": "Wed Aug 03 08:16:37 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 03 08:16:37 2011 -0700"
      },
      "message": "am 4685acbd: am 9efda5b7: Merge \"typo in libc/stdio/wcio.h\"\n\n* commit \u00274685acbdd45c44e2e21c74242953bee5198209f9\u0027:\n  typo in libc/stdio/wcio.h\n"
    },
    {
      "commit": "7743f68204515c64ce363b397a7e0bd8015bd692",
      "tree": "87220e4db8e000bcc11b6d611608f91443583158",
      "parents": [
        "2f5c6d2d663591b0b5cff9f7e90f58f12a5967eb"
      ],
      "author": {
        "name": "Nathan Forbes",
        "email": "me@nathanforbes.com",
        "time": "Sat Jul 02 20:29:25 2011 -0400"
      },
      "committer": {
        "name": "Nathan Forbes",
        "email": "me@nathanforbes.com",
        "time": "Sat Jul 02 20:29:25 2011 -0400"
      },
      "message": "typo in libc/stdio/wcio.h\n\nwhcar_io_data -\u003e wchar_io_data\nSigned-off-by: Nathan Forbes \u003cme@nathanforbes.com\u003e\n\nChange-Id: I45c231efffac265eed51b7632d5a1b21c18bfa55\n"
    },
    {
      "commit": "3f7a3228cdf1a48e379fb297be9114ecd71bff11",
      "tree": "11833674ffcc309e67884e544218a21aceee3fba",
      "parents": [
        "add0a45a117f00553e79e7137d023416f9c0a54f",
        "c5c84c8643250c71bde87541f2b28fc21a9c5cc7"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Tue May 17 04:47:06 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 17 04:47:06 2011 -0700"
      },
      "message": "am c5c84c86: Merge \"vfscanf: Add support for L type modifier for long long\"\n\n* commit \u0027c5c84c8643250c71bde87541f2b28fc21a9c5cc7\u0027:\n  vfscanf: Add support for L type modifier for long long\n"
    },
    {
      "commit": "712e4f81e066578b0925dbfb5a6b664aeba5f564",
      "tree": "9a587fdc41cf8409ca832b58234843c552ba72d4",
      "parents": [
        "e274a9fac077d350391b721e9a08b650b243577e"
      ],
      "author": {
        "name": "Chris Fries",
        "email": "C.Fries@motorola.com",
        "time": "Wed May 04 09:54:06 2011 -0500"
      },
      "committer": {
        "name": "Chris Fries",
        "email": "C.Fries@motorola.com",
        "time": "Thu May 05 11:02:33 2011 -0500"
      },
      "message": "vfscanf: Add support for L type modifier for long long\n\nscanf()\u0027s man page suggests support for %Ld, (and ioux).\nImplement this so that 3rd party code will work correctly.\n\nChange-Id: Idce9d266071cb688ca71429395a2d9edf6813595\n"
    },
    {
      "commit": "f582340a6a48588aa50da17e1620e8f91b146941",
      "tree": "d30c0ffb648b7a43ff469f89f05850f5008482ec",
      "parents": [
        "72f9a5c374bf559e9c69a62c1d95304f913ef6b2"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sat Feb 12 07:13:44 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 14 09:32:56 2011 -0800"
      },
      "message": "Fix the handle locking in stdio\n\nFix the handle locking in stdio to use flockfile/funlockfile\ninternally when and where required.  Macros in \u003cstdio.h\u003e are updated\nto automatically call the underlying functions when the process is\nthreaded to obtain the necessary locking.  A private mutex is added\nto protect __sglue, the internal list of FILE handles, and another\nto protect the one-time initialization.  Some routines in libc that\nuse getc() change to use getc_unlocked() as they\u0027re either protected\nby their own lock or aren\u0027t thread-safe routines anyway.\n\nBased on OpenBSD change by guenther@openbsd.org\nhttp://www.mail-archive.com/source-changes@cvs.openbsd.org/msg01015.html\n\nBug: 3446659\nChange-Id: Ie82116e358c541718d6709ec45ca6796be5a007b\n"
    },
    {
      "commit": "f4e10b721ee281f3e90736364ac15864d0a3adf7",
      "tree": "8d7ad7cf73dd45105d71108aacae3004889745e7",
      "parents": [
        "f65368a6939322ac3a47fc0304e63fb185c5746e",
        "0946b1f6e9223a0a82306e40fc2b41ebddb1f7ef"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jan 16 08:50:20 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jan 16 08:50:20 2011 -0800"
      },
      "message": "Merge \"Bug 3330205 Put blanks and zeroes in const area\""
    },
    {
      "commit": "e9d0518394dda010c8873dbd0ca4de7db5a5bbec",
      "tree": "7c14520d6d496a8b84a2781161fe13ebfcd5c99d",
      "parents": [
        "015610e64eb728dd031c6b1730b70460d9d298b8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jan 09 09:28:31 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jan 09 11:47:42 2011 -0800"
      },
      "message": "Bug 3330205 Remove unnecessary static variable\n\nChange-Id: I7e781d26d6565952712f8fb0274d336462b441fd\n"
    },
    {
      "commit": "0946b1f6e9223a0a82306e40fc2b41ebddb1f7ef",
      "tree": "817733df5653de4dea73988207f2d06978716787",
      "parents": [
        "015610e64eb728dd031c6b1730b70460d9d298b8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jan 09 11:28:22 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jan 09 11:38:56 2011 -0800"
      },
      "message": "Bug 3330205 Put blanks and zeroes in const area\n\nChange-Id: I8f25aebd1ded3617dc60951271767281f73b8684\n"
    },
    {
      "commit": "b4867734b06a18494976934c6f33ff2549595e3f",
      "tree": "e0872aed3956ed9a5f8e66457acf71b0c066c96d",
      "parents": [
        "f67e5211e045af1b12f646448a5a35f96ba5e8f1"
      ],
      "author": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Fri Oct 15 00:50:45 2010 +0800"
      },
      "committer": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Fri Oct 15 01:10:31 2010 +0800"
      },
      "message": "stdio: make internal symbols static/hidden\n\nAlthough header libc/stdio/local.h declares the macros and private\nvariables of stdio, there are several internal symbols exposed\nunexpectedly.\n\nChange-Id: Ie7a07f85b70322fb9cd05b3c8e1bcc416061eb4b\n"
    },
    {
      "commit": "a910abcd194830d2d113b3e183eb7df4d36cd92e",
      "tree": "291303f658796db61bcbf9b8107b3a88a4f83c79",
      "parents": [
        "1297428e89ead45849068989d334d8b7eae2f602"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Jan 30 22:46:25 2010 -0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon May 17 09:34:13 2010 -0700"
      },
      "message": "improve readability of stdio: fix indentation and remove trailing spaces\n\nChange-Id: Ic51e58a7c75d20bf770dc0ebd7f97a338fbe0036\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\n"
    },
    {
      "commit": "051ea9bc07809a2638e5f022ae10330e23530f64",
      "tree": "e4b9e8ffccf81cc3edfb2d2fd42472a9eee25550",
      "parents": [
        "d791da79432064bc954fedf8d4e4394aaafefe75"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Jan 30 22:45:07 2010 -0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon May 10 15:42:47 2010 -0700"
      },
      "message": "stdio: simplify __fremovelock()\n\n... by removing extraneous NULL check, as free() already does it.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\nChange-Id: I0445f35c7ad0a049a0e4aee1fbe002ed2f13b94b\n"
    },
    {
      "commit": "c8a850bcd174acf43f951b5b70783cb636418b53",
      "tree": "62f931c9e8a683417384825b2f33fb01045ab13c",
      "parents": [
        "6aed4288eba64f8265b98d34fdfd0bc0cd76151d"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Jan 30 22:40:45 2010 -0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Apr 29 07:33:40 2010 -0700"
      },
      "message": "stdio: simplify vasprintf()\n\n... by removing unneeded NULL check, as free() already does it.\nBy the way, we don\u0027t need to set a stack variable back to NULL.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\n\nChange-Id: Id90eb8f042b5c922c5ff139b11ff8366fb404566\n"
    },
    {
      "commit": "6aed4288eba64f8265b98d34fdfd0bc0cd76151d",
      "tree": "30ef6162d6d4364d27037798f69dd93eb7e35d53",
      "parents": [
        "e734769276045c0cb89d4620fdd4ef35a0e6c335"
      ],
      "author": {
        "name": "André Goddard Rosa",
        "email": "andre.goddard@gmail.com",
        "time": "Sat Jan 30 22:39:00 2010 -0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Apr 29 07:31:44 2010 -0700"
      },
      "message": "stdio: simplify asprintf()\n\n... by removing unneeded NULL check, as free() already does it.\nBy the way, we don\u0027t need to set a stack variable back to NULL.\n\nSigned-off-by: André Goddard Rosa \u003candre.goddard@gmail.com\u003e\n\nChange-Id: Id1f72e872f73366dddcea4abc75885a3d9a318c6\n"
    },
    {
      "commit": "1dc9e472e19acfe6dc7f41e429236e7eef7ceda1",
      "tree": "3be0c520fae17689bbf5584e1136fb820caef26f",
      "parents": [
        "1767f908af327fa388b1c66883760ad851267013"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "1767f908af327fa388b1c66883760ad851267013",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "a799b53f10e5a6fd51fef4436cfb7ec99836a516"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "4e468ed2eb86a2406e14f1eca82072ee501d05fd",
      "tree": "4e05b3c66eef86531e464521a3bf96a1864d4bf5",
      "parents": [
        "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:03:48 2008 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:03:48 2008 -0800"
      },
      "message": "Code drop from //branches/cupcake/...@124589\n"
    },
    {
      "commit": "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349",
      "tree": "defd1cc07d16ad2f3b21154114e092d11c94c5bb",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
