)]}'
{
  "log": [
    {
      "commit": "38e4aefe6c7804d809cfe9e05619ac1a6935e565",
      "tree": "162d29d0e7128f5e7fdf59bb6ad072cc57d79d0a",
      "parents": [
        "0d63a3c233040af004cc470d5f76547f3adc0148"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 18 10:21:29 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 14:53:55 2018 -0800"
      },
      "message": "Support %mc/%ms/%m[ in sscanf.\n\nAlso support the \"long\" (wchar_t) variants.\n\nBug: http://b/68672236\nTest: ran tests\nChange-Id: I060e98b4d2feb61e12986d9d51e4710b2b1d9724\n"
    },
    {
      "commit": "a7f12944d4154a445ee774683e27447d609de540",
      "tree": "7e2683233d0a36b825f630b1fc0f069e306463e8",
      "parents": [
        "59a6ee963f96eedf01df7db1e57397ff71852b15"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 15 13:55:53 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 15 13:55:53 2017 -0800"
      },
      "message": "A few more trivial tests.\n\nBased on gaps in the list of functions not referenced by the test\nexecutable.\n\nBug: N/A\nTest: ran tests\nChange-Id: I73c238e7cf360f94670c7cd13eb954341c940b7b\n"
    },
    {
      "commit": "bf9cb9e404e7fefb6097db447883940a547fc7ac",
      "tree": "5cef4c306b57f11f151514ae00333524d8dffc2c",
      "parents": [
        "eb7347aedbc61ba45555aef3e6e863f0d90b407b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 11 12:39:01 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 12 17:10:51 2017 -0800"
      },
      "message": "More scanf cleanup.\n\nMerge CT_CCL and CT_STRING handling before we add %m.\n\nAlso fix an accidental scanf/wscanf difference.\n\nAdd currently-disabled tests for questionable behavior noticed during\ncode review that isn\u0027t a regression, but should be fixed later.\n\nBug: http://b/68672236\nBug: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id\u003d202240\nTest: ran tests\nChange-Id: I3eec9b7dfce84f63c68426406224822c52551d64\n"
    },
    {
      "commit": "0d3ba1f04701e8ba0f8bd0cd6a0f4c8bb9d558b5",
      "tree": "bf2dd2d19ddfe12813314323b8b28141f5b0a3eb",
      "parents": [
        "c1f6219c32543cb1d6701b13eb53b82abe1e0a12"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 06 16:41:35 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 07 14:13:57 2017 -0800"
      },
      "message": "Add sscanf %[ tests and fix the bug that fell out.\n\nStrictly, POSIX says \"If a \u0027-\u0027 is in the scanlist and is not the first\nwide character, nor the second where the first wide character is a \u0027^\u0027,\nnor the last wide character, the behavior is implementation-defined\",\nbut it seems unreasonable for swscanf to interpret `a-c` differently\nfrom sscanf. Make ours behave the same as each other by making swscanf\nwork the same as sscanf.\n\nBug: http://b/68672236\nTest: ran tests\nChange-Id: Ia84805897628d7128e901b468e02504373730e61\n"
    },
    {
      "commit": "bf54986d19a9111554a6d5bfb4214080413e18ab",
      "tree": "4934981addd856f9e3ce95d311c3b8080dcca9c2",
      "parents": [
        "8697f10e747eada34fa91d838c1ce95b687068f5"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Nov 07 15:30:32 2017 -0800"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Nov 07 15:34:23 2017 -0800"
      },
      "message": "Allow 32-bit fseeko/fseeko64 SEEK_CUR/SEEK_SET to exceed 2 GiB\n\nBug: http://b/68837650\nTest: /data/nativetest/bionic-unit-tests/bionic-unit-tests\nTest: /data/nativetest/bionic-unit-tests-static/bionic-unit-tests-static\nTest: /data/nativetest64/bionic-unit-tests/bionic-unit-tests\nChange-Id: I367e0238c31d35f76d8ad89fd0aa27ecfeb7c149\n"
    },
    {
      "commit": "618303ca4ad2754071ba6955da690fec2b27a76d",
      "tree": "97f8db830c0241850a8bdb3008127b9a92afecfc",
      "parents": [
        "46621f43b083d9743545b31e97011a1c44e784b2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 02 16:58:44 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 02 16:58:44 2017 -0700"
      },
      "message": "More printf de-duplication.\n\nFix the \u0027j\u0027 (intmax_t/uintmax_t) length qualifier in the wide\nvariant. (With new tests that fail without this fix.)\n\nFix a typo in the wide support for intmax_t*, which isn\u0027t testable because\n%n is disabled on Android (and will be removed in a later cleanup pass).\n\nAlso move the public vfprintf/vfwprint functions into stdio.cpp.\n\nBug: http://b/67371539\nTest: ran tests\nChange-Id: Ib003599b1e9cb789044a068940b59e447f2cb7cb\n"
    },
    {
      "commit": "2f9c8ce38a885791dfa4cefb6370b5025c55ae82",
      "tree": "efbdbe306e126b1bad2d3bd455e23e49639f0a64",
      "parents": [
        "0cbbdaa5cfa131e33dbfc80ce9b34c9fe1523f08"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 01 13:54:47 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 01 18:13:36 2017 -0700"
      },
      "message": "Start de-duplicating the regular and wide printf implementations.\n\nThis patch switches to C++ (in anticipation of needing it later), removes\na little duplication (via a macro for now), and ensures uniform support\nfor %C/%lc and %S/%ls between regular and wide (with new tests).\n\nSince it\u0027s so hard to debug problems in printf (as the time I\u0027ve wasted\nalready today will testify), that\u0027s all I want to do in this change. The\nother 500 lines of diff can wait...\n\n(Also merge \"floatio.h\" into \"local.h\" now all the users are in forked\ncode.)\n\nBug: http://b/67371539\nTest: ran tests\nChange-Id: I083353d89c32b9302d759ca6967cc6d8a62cd8a5\n"
    },
    {
      "commit": "37ad9597839c70a7ec79578e5072df9c189fc830",
      "tree": "f1f70a143c99b072b040f5592f1b42da464b35f8",
      "parents": [
        "e379a202504911d228ae07d9ba32c5a02274fe1d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 30 17:47:12 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 31 13:23:41 2017 -0700"
      },
      "message": "More missing _unlocked \u003cstdio.h\u003e functions.\n\nAlso simplify trivial one-liners like perror/puts/fputs, and clean up\nfread/fwrite slightly.\n\nFix perror to match POSIX.\n\nAdd basic perror and *_unlocked tests.\n\nBug: N/A\nTest: ran tests\nChange-Id: I63f83c8e0c15c3c4096509d17421ac331b6fc23d\n"
    },
    {
      "commit": "9601f162f406a7b8f103195a75afc98f2fe4c2fe",
      "tree": "a80104d9471f2aa65af52a8e9608050882665f4d",
      "parents": [
        "6805c2db39bad207e4434f9d8109a31efbc61229"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Aug 09 14:59:06 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Aug 09 14:59:33 2017 -0700"
      },
      "message": "Expand swprintf tests.\n\nTest: bionic unit tests\nBug: None\nChange-Id: I36924c4bdd2fa2c25e50ef7fef5500a365721a05\n"
    },
    {
      "commit": "b15feb70240a4fdf88ae1a7da85e6f87523e00ed",
      "tree": "5c6e069440a88415b13e1408cf2236fafdc46986",
      "parents": [
        "4dd33f92d82b9fb77152bfc68f312d2fa5710a28"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 31 17:20:18 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 31 17:20:18 2017 -0700"
      },
      "message": "Clean up some \u003cstdio.h\u003e constants.\n\nAnd actually test an assertion rather than just state it in a comment.\n\nBug: N/A\nTest: ran tests\nChange-Id: I07699483aca4aac4e089d8b99123cb5bde9b3c63\n"
    },
    {
      "commit": "33a8cb1d1a32b40406ec643f4a781c4a592a6f44",
      "tree": "06be4fc0f936ba60093cb4e4c1133500a6c2bda4",
      "parents": [
        "33f9043f482769c35f82df9d25b4ccc8f1193229"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 25 18:06:46 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 25 18:11:23 2017 -0700"
      },
      "message": "Use O_APPEND for stdio append mode.\n\n\"Although not explicitly required by this volume of POSIX.1-2008, a good\nimplementation of append (a) mode would cause the O_APPEND flag to be set.\"\n\nYeah, about that...\n\nBug: N/A\nTest: ran tests\nChange-Id: I23c4bc5c1ebc92e0cb44025d2d313f321f9ffa68\n"
    },
    {
      "commit": "3a4c45499e9b67799fdfe4693e0a4fbbb5e955e2",
      "tree": "e91cf7421899cec6afcd4ee04ce5ecd63e67fc4b",
      "parents": [
        "0d6485eca47f0e860486795b2da97679948fd5d5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 19 17:20:24 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 24 10:48:42 2017 -0700"
      },
      "message": "Replace fmemopen.\n\nA new implementation starting from the FreeBSD fmemopen rather than the\nOpenBSD one we used to use.\n\nThe tests were arrived at by translating each sentence in\nhttp://pubs.opengroup.org/onlinepubs/9699919799/functions/fmemopen.html,\nplus http://man7.org/linux/man-pages/man3/fmemopen.3.html for historical\nGNU bugs.\n\nBug: http://b/31304889\nTest: ran tests\nChange-Id: Id8b168c9ecde638e9cdedbc3b8a0982fc83c7048\n"
    },
    {
      "commit": "2f06e1028037c63d517e45b4055f946aa79dc5ee",
      "tree": "942ce32487639c93dad1a00d1528bb14c457308d",
      "parents": [
        "010522229c2a984d3e553e244da67b449b9638d4"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jan 10 13:00:37 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jan 11 13:00:15 2017 -0800"
      },
      "message": "Improve fmemopen tests.\n\nTag fmemopen_NULL as a known failure, and make it reliably fail by\nmemsetting the buffer we read to.\n\nBug: http://b/33251022\nTest: bionic-unit-tests/bionic-unit-tests64 on bullhead\nTest: bionic-unit-tests-glibc --gtest_filter\u003d\"*memopen*\"\nChange-Id: I381783282359851c9de47146dafbb5a291960c2a\n"
    },
    {
      "commit": "b36efa4343d79e3fb548d12d039193850246b892",
      "tree": "727ac48a5341d8d50d6a297fe67f6067005befd3",
      "parents": [
        "56228373014e5ee0a3ff32930df9cfa05fef7389"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 13:55:41 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Sep 15 14:21:28 2016 -0700"
      },
      "message": "Fix instances of \u0027#if __LP64__\u0027.\n\nTriggers -Wundef, which is on in -Weverything.\n\nBug: http://b/31496165\nChange-Id: Ib06107073f7dd1d584c19c222d0430da9d35630b\n"
    },
    {
      "commit": "7f0849fd113691e62af0400989936d3eff151e37",
      "tree": "166fa5afeed341e2685091c89d9d8418acb66e5d",
      "parents": [
        "a2b947e0a5ff4106e36f8110232131dab1356c25"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 26 16:17:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 07 15:01:54 2016 -0700"
      },
      "message": "Fix sscanf/wcstod parsing of NaNs.\n\nThe parsefloat routines -- which let us pass NaNs and infinities on to\nstrto(f|d|ld) -- come from NetBSD.\n\nAlso fix LP64\u0027s strtold to return a NaN, and fix all the architectures\nto return quiet NaNs.\n\nAlso fix wcstof/wcstod/wcstold to use parsefloat so they support hex\nfloats.\n\nLots of new tests.\n\nBug: http://b/31101647\nChange-Id: Id7d46ac2d8acb8770b5e8c445e87cfabfde6f111\n"
    },
    {
      "commit": "fb3873d4db3012ac2d1ba87d688138798787c6e0",
      "tree": "1e392110ebe5ca3b0f3f466e493c1085b403b864",
      "parents": [
        "f5042cab109f7136191fd316be1471532d2ddf71"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 11:07:54 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 10 11:50:12 2016 -0700"
      },
      "message": "Fortify vsnprintf in more cases.\n\nBug: http://b/30445072\nChange-Id: I1893890f0e3b56533eef053eda1bd96a0b9a5119\n"
    },
    {
      "commit": "d1f25a7eb171b490be59271e9ce619e236421aeb",
      "tree": "a094178ff6ae9af3f476c0480087a09a63a37000",
      "parents": [
        "ed9e6a41c92c9552be84ecc126e29b4604eee246"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 05 15:53:03 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 05 15:53:03 2016 -0700"
      },
      "message": "Reimplement remove(3) without the lstat(2).\n\nThis assumes that it\u0027s more likely we\u0027re unlinking a file than a directory,\nthough even if that\u0027s not true, as long as a failed unlink(2) is cheaper\nthan a successful lstat(2) -- which seems likely since there\u0027s no data to\ncopy -- we still win.\n\nChange-Id: I0210e9cd3d31b8cf1813c55c810262ef327382ed\n"
    },
    {
      "commit": "70715da453670b40701ea7d02ea9f702d10d783b",
      "tree": "a8e6c37cf0d36012df03ac0d68f395cb2d6e2f0d",
      "parents": [
        "a86e11f529aca06b2f4d5141ea838f2bc5ae9a73"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 01 16:35:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 01 18:06:38 2016 -0700"
      },
      "message": "More stdio one-liners.\n\nThis actually turns up a bug in fmemopen, so I guess that\u0027s what I\u0027ll\nlook at next...\n\nChange-Id: I2971ecd1b5a3a3c7f43c22d985f88e389af89e97\n"
    },
    {
      "commit": "20788aec002ab3f6dea4e01665a439933161d11c",
      "tree": "cb77d4d956f2377e762476a96cfe92b4dcaf6a94",
      "parents": [
        "70d99a1053542b8c062e6cb7eca2bcfb16c25d55"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 09 15:16:32 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 09 15:16:32 2016 -0700"
      },
      "message": "Add ctermid.\n\nChange-Id: I7c7c815c2725df222932db923632c8b6419741ab\n"
    },
    {
      "commit": "8200e55d941305f6f24f1745492b90271aa417e9",
      "tree": "49a1fffff9cb70861415949cb8c83419fab2ae9d",
      "parents": [
        "831c8a52498d3c7be204a00847275f6e9163626f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 05 21:57:37 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 05 21:57:37 2016 -0800"
      },
      "message": "Add a test for a possible overflow in *printf.\n\nIt turns out we don\u0027t have any bugs here, but glibc does. Found while\nchasing down a toybox failure I saw on the host, but we may as well\nadd the test in case we ever screw up here in future.\n\nChange-Id: Ib8dd227ed3b742dc4dab8c09dc08e6ea9a35c807\n"
    },
    {
      "commit": "43f7c875654cb94e589ff9d0c4ac58ca9616093e",
      "tree": "b59e65b86870ef89c3965f32b18c52910f6038b4",
      "parents": [
        "b90837c3d316c6ea8d6f0b0b6a3643d0d3245a0e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 05 11:18:41 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 05 11:18:41 2016 -0800"
      },
      "message": "Add a test for snprintf on a PTHREAD_STACK_MIN-sized stack.\n\nThis is a common thing for people to want to do, snprintf requires\na lot of stack for itself, and PTHREAD_STACK_MIN should be usable\nfor realistic code.\n\nChange-Id: Ib09cfb4e0beec1c69ee0944c3ea4c5d03a94c491\n"
    },
    {
      "commit": "f226ee59e0effedeabed09e2d65be7fa7499cc25",
      "tree": "60b192388b5575a5315d7e9ea2b5b4ffa29ed59f",
      "parents": [
        "a279324094d748b97201412b2457d2f6e26287dd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 03 11:24:28 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 03 11:24:28 2016 -0800"
      },
      "message": "Add fopen64/freopen64/tmpfile64 aliases.\n\nOur fopen/freopen/tmpfile are already always O_LARGEFILE, but let\u0027s add\nthe aliases for _LARGEFILE_SOURCE compatibility.\n\nBug: http://b/24807045\nChange-Id: I5d99b3ef3c9f27ce70f13313f6a92e96c7f21f80\n"
    },
    {
      "commit": "e4fa6e9cc7f894a5a85ca50249b1f6e9efd49d3a",
      "tree": "9e3f941adea3e014a39fcd89c6955f57cc9e5d3d",
      "parents": [
        "3e75110bcb1d7b941ab0633e7e5c36c604512ded"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 02 22:39:15 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 02 22:39:15 2016 -0800"
      },
      "message": "Expose ftello64.\n\nAlso add the missing test that would have caught this.\n\nBug: http://b/24807045\nChange-Id: I756a4d825595b52396b15898e3f717156fd1ba2f\n"
    },
    {
      "commit": "955426ef79ae635b74ff917c2b9ebc1a24c6a3ef",
      "tree": "76d5403eaa41b9a00aa4447ae5700eb77170310f",
      "parents": [
        "194860a9e638b1d093857f08b8fad37c9ec0e113"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 18:25:52 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 18:25:52 2016 -0800"
      },
      "message": "Fix a sign extension bug in stdio.\n\nThis also lets us test the EOVERFLOW behavior, which pointed out that the\nfgetpos/fsetpos return on failure has always been wrong...\n\nBug: http://b/24807045\nChange-Id: I35273eb07c8c9155af858adb27569983397580b6\n"
    },
    {
      "commit": "03e65eb03bf0bfaafa797daf91e80e8308968db3",
      "tree": "9f3158666a6a63833a0ae6beb23f3e0979de1fd8",
      "parents": [
        "ced73ee45e04a991ce1295a38364568a17884eed"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 14:13:04 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 14:45:13 2016 -0800"
      },
      "message": "Implement funopen64.\n\nBug: http://b/24807045\nChange-Id: I161920978161389be34b707cc6ce8e05f760d552\n"
    },
    {
      "commit": "9677fab88c25fd2e6f3149ad00fb8870963f0675",
      "tree": "365bc8bb9137d504717b88444cdc1262a6c58df3",
      "parents": [
        "ac67b4eb7c70ea668abb32298b0cb16920a32a66"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 25 15:50:59 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 26 09:14:41 2016 -0800"
      },
      "message": "Support _FILE_OFFSET_BITS\u003d64 for most of \u003cstdio.h\u003e.\n\nThis doesn\u0027t address funopen, but does add fgetpos/fsetpos/fseeko/ftello.\n\nBug: http://b/24807045\nChange-Id: Ibff6f00df5fb699c8e8f13b91a75caf024540b73\n"
    },
    {
      "commit": "71288cbfdfe138a7f0d59fa2e642dc6e2317eb6d",
      "tree": "e43ec640511e866b1f732493b4b99ba18d17307c",
      "parents": [
        "a42483baad9a37297e6bbbe02d433ecbde890386"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 22 19:22:44 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 22 19:22:44 2016 -0800"
      },
      "message": "Add another stdio test.\n\nThis test didn\u0027t catch anything, but it does ensure that we exercise\nthe \"lots of files\" case.\n\nBug: http://b/26747402\nChange-Id: I6c51c6436029572a49190d509f131eb93b808652\n"
    },
    {
      "commit": "2704bd13409a77237147f861c43796148326b2e3",
      "tree": "c2433fa289edb2a7654a3c1caa2ad3c21c60e23d",
      "parents": [
        "5f1ff279ea6aa4c35c59a81018131810e35b2bff"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 20 17:14:53 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 21 10:34:35 2016 -0800"
      },
      "message": "Simplify fseek/ftell.\n\nAnother step towards _FILE_OFFSET_BITS\u003d64 support.\n\nBug: http://b/24807045\nChange-Id: I00b83c81a7b108176c4d9437bc32611f73b7e967\n"
    },
    {
      "commit": "923f165b29866cba1bd077117127f576763b384d",
      "tree": "c5c05829f199caba0e483769023eed1e3d37206c",
      "parents": [
        "579f42b78922d8c70e19ea77d2818ec17d0dc6a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 19 15:46:05 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 19 15:46:05 2016 -0800"
      },
      "message": "Make FILE*s less usable after fclose(3).\n\nBSD doesn\u0027t invalidate the fd stored in struct FILE, which can make\nit possible (via fileno(3), for example), to perform operations on\nan fd you didn\u0027t intend to (rather than just failing with EBADF).\n\nFixing this makes the code slightly simpler anyway, and might help\ncatch bad code before it ships.\n\nBug: http://stackoverflow.com/questions/10816837/fclose-works-differently-on-android-and-linux\nChange-Id: I9db74584038229499197a2695c70b58ed0372a87\n"
    },
    {
      "commit": "13f26a7b2bff5ed88b925b7206256e07596f3626",
      "tree": "ea09999fc3508607d5bae97bbe0cf58edc23eed4",
      "parents": [
        "9817c6c0cfa01f6bf7e0700e2b7aab2c1220fe28"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 13 13:47:58 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 13 17:13:21 2016 -0800"
      },
      "message": "Add method to run fortified versions of funcs.\n\nAdd a way to turn fortify off for the files that test fortify functions.\n\nThis method involves simply compiling the same file with fortify off and\nchanging the test name slightly.\n\nIt\u0027s not very pretty, and it assumes that only these few files test\nfunctions that can be fortified.\n\nBug: 15195631\nChange-Id: Iba9db1d508b7d28a1d6968019cb70fe08864827b\n"
    },
    {
      "commit": "8ab433df132aa59db08b4548155d72574ad06421",
      "tree": "23708cbc794620a364626a65306b8f260048d506",
      "parents": [
        "1ab3f303d2e7c8cc498a28fc3c8d9ded1fc46994"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 09 17:57:26 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 09 17:57:26 2015 -0700"
      },
      "message": "Fix stdio read after EOF behavior.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d184847\nChange-Id: Ia20ce94007c2a09649f0763b1dc7ba959f2f618d\n"
    },
    {
      "commit": "694fd2d880634f23254582ab1161bffbfd104696",
      "tree": "a3a121297c62764d302ebe574d154cda1df459bd",
      "parents": [
        "ec8b3a7dde3c282c4f9ca5c8bf5a7e1b7469def0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Apr 05 10:51:56 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Apr 05 10:51:56 2015 -0700"
      },
      "message": "Add a test for getdelim(3) on a directory.\n\nApparently uClibc has a bug here. We don\u0027t, but let\u0027s keep it that way.\n\nBug: http://landley.net/notes.html#21-03-2015\nChange-Id: If406df963db9bee47921d7a1c116ebcab08d96bf\n"
    },
    {
      "commit": "cc9ca1051dbf5bd2af1b801de13d43a399521cf9",
      "tree": "f8fd2edf4fd85c87a1b9259c821c4d8f9878b104",
      "parents": [
        "e6a33cefe4b3759fb77d9e69356cb50a97ea7e54"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 27 18:22:45 2015 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 27 18:22:45 2015 -0800"
      },
      "message": "Fix fread returning bad data.\n\nBug: 19172514\nChange-Id: I05016577858a02aca7d14e75e6ec28abc925037c\n"
    },
    {
      "commit": "e6bb5a27769cc974c4c6c1bfc96dcd07f0c0f5ef",
      "tree": "67156569bf455a9eb3fd18e0151e8e67dfed309c",
      "parents": [
        "31005ca4c8562f3e6dfbed079eeaff8361ff8cdc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 23 17:48:15 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Jan 24 12:35:41 2015 -0800"
      },
      "message": "Fix optimized fread.\n\ngcov does writes after reads on the same stream, but the bulk read optimization\nwas clobbering the FILE _flags, causing fwrite to fail.\n\nBug: 19129055\nChange-Id: I9650cb7de4bb173a706b502406266ed0d2b654d7\n"
    },
    {
      "commit": "0ed7e08cda2547fa6b23813035a7b34a8889d163",
      "tree": "6e1bfc95b4fbe1129232b08bd44f72ab631ae5f9",
      "parents": [
        "d5d9221b9c96a8213b0a83dde468653d49e76dd8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 22 15:13:38 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 22 15:28:48 2015 -0800"
      },
      "message": "Fix the stdio.fread_EOF test.\n\nAnother sizeof/strlen screwup caused by trying to be too clever. Use\nstd::string instead.\n\nAlso fix all the ASSERT_STREQ calls in this file that had the arguments\nthe right^Wwrong way round. If I ever see Kent Beck...\n\nChange-Id: I47a1bdfee99cf4e7bed9b398f3158a308fbcf1e8\n"
    },
    {
      "commit": "bcb378d643680719ec88587031a1571c87304736",
      "tree": "8c82e685e89f4742e06c6924e7f82183174bbc4b",
      "parents": [
        "d280675405e605d47c74c037b0d2b4f06826ed4d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 22 14:18:35 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 22 14:18:35 2015 -0800"
      },
      "message": "Fix fread_EOF test name.\n\nChange-Id: I53a7f1428fd27c0b2a5c80f2e8af4845d17f5b4b\n"
    },
    {
      "commit": "75b99387dd3a8833f09e2139e7062be5d38c5511",
      "tree": "7b4c44035fd12bbfb6a9de3f22fdc95aca57cb9f",
      "parents": [
        "3bbf4639080bc2f42435b4a7fd400c44aab7fd70"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 20 11:23:50 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 20 15:59:17 2015 -0800"
      },
      "message": "Optimized fread.\n\nThis makes us competitive with glibc for fully-buffered and unbuffered reads,\nexcept in single-threaded situations where glibc avoids locking, but since\nwe\u0027re never really single-threaded anyway, that isn\u0027t a priority.\n\nBug: 18593728\nChange-Id: Ib776bfba422ccf46209581fc0dc54f3567645b8f\n"
    },
    {
      "commit": "1b18aff9ba7c06e0e41ccafd22e1a4a585f86d78",
      "tree": "53f14fee7cd6a9ecc1f9132ff1cc5c57e8708fde",
      "parents": [
        "92b9cb2c899c386954b8f9ad8111aa6c8c63e306"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 16 14:45:32 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Dec 20 18:53:08 2014 -0800"
      },
      "message": "Fix nan output in the printf family.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d82452\nChange-Id: I51f226c8b033de6e81baeea5e6db3de6ed196f73\n"
    },
    {
      "commit": "20841a137beac5caa824e3586c7bd91d879ff92e",
      "tree": "3ccc88081ddcdbe9a4448c462eb16e971007f86e",
      "parents": [
        "5cd127d3aa4a2f225be202af01581838fdd3c721"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 01 16:13:30 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 02 14:22:02 2014 -0800"
      },
      "message": "Avoid pathological behavior in OpenBSD\u0027s fread.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d81155\nBug: 18556607\nChange-Id: Idc60976b79610e2202cc42dc393dcb4ca6c42e05\n"
    },
    {
      "commit": "5ca4a9e2da46db30ad6d8556b61679d138aaf88d",
      "tree": "fe013b8b41e1eb1388c5f76931f6f1c24331f905",
      "parents": [
        "9df70403d95f5cfe6824e38a9a6c35f9b9bbc76a"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Nov 06 19:55:09 2014 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Nov 07 10:20:32 2014 -0800"
      },
      "message": "implement missing seekdir and telldir\n\nBug: 18266863\nChange-Id: I189ee949d4f7ccee099f3341e349cd969d25480f\n"
    },
    {
      "commit": "6a03abcfd23f31d1df06eb0059830e22621282bb",
      "tree": "7a6a1e6ee2ece560d31580c662060bda3d2d004b",
      "parents": [
        "38ff8822763a30d4c9033a38ec8b71fcd17aba87"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 03 12:32:17 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 03 12:32:17 2014 -0800"
      },
      "message": "Ensure we initialize stdin/stdout/stderr\u0027s recursive mutexes.\n\nBug: 18208568\nChange-Id: I9da16ce0f9375bc363d1d02be706d73fd3b1e150\n"
    },
    {
      "commit": "31165edf5733dae8fbe79551b18cbc0e56c8d808",
      "tree": "e7ed184d94540342f16514a84e02c1f8d38882db",
      "parents": [
        "87b6906f6e0c17b2541535be8e054324cc2fef4a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 23 17:34:29 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 23 18:21:52 2014 -0700"
      },
      "message": "CLOEXEC support in fdopen, freopen, and mkostemp/mkostemps.\n\nChange-Id: I74ea88e0d4973d6ab3c57da7d8bb643c31592b14\n"
    },
    {
      "commit": "a40fdbd565785dfaf59c471ff08c14ed0ad35238",
      "tree": "20f265b0f09c7ad3c3418cfe24d0fb854140af1d",
      "parents": [
        "64ae11ab766421fe2c49ebdecb14c36fe0a047fe"
      ],
      "author": {
        "name": "Wally Yau",
        "email": "wyau@google.com",
        "time": "Tue Aug 26 09:47:23 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 27 10:26:49 2014 -0700"
      },
      "message": "call uselocale() before freelocale() to make sure that g_local_key has a valid locale.\n\nFor tests that call uselocale(), the locale is stored in the\ng_userlocale_key thread-specific key. If freelocale() is called later,\nthen g_uselocal_key points to a deleted pointer. CTS eventually calls\nvfprintf to print the result, which calls MB_CUR_MAX and MB_CUR_MAX\naccesses the deleted locale stored in g_uselocale_key, causing unpredictable\nerrors.\n\nFixed the tests by calling uselocale() with the old locale before\ncalling freelocale.\n\n(cherry-pick of 8a46cf0fcf82b8c76e05be7e066ec854f974603a.)\n\nBug: 17299565\nChange-Id: I87efa2a9b16999a11d587f68d3aeedcbe6ac8a2c\n"
    },
    {
      "commit": "6b841db2baa24ffcf2a4e5f975d1d07f1699b918",
      "tree": "af58fa1f4b5fa777f47e9ef797c50cff964b7046",
      "parents": [
        "b6ed54076abdd337150d7a92a661247b69d26cb4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 20 16:10:49 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 20 17:03:46 2014 -0700"
      },
      "message": "Add POSIX-2008 fmemopen, open_memstream, and open_wmemstream.\n\nBug: 17164505\nChange-Id: I59e28a08ff8b6ab632230b11a5807cfd5278aeb5\n"
    },
    {
      "commit": "1aec7c1a35b2d03038b194967d5ebdc8e2c24b80",
      "tree": "977211860df02be4f4c0843cf231ec6c3da88ee6",
      "parents": [
        "0f7ed163cf6c1fe6d71a1d7e5fb6d0989213be85"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 30 10:53:48 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 30 17:09:46 2014 -0700"
      },
      "message": "Proper MB_CUR_MAX.\n\nPreviously this was hard coded to 4. This is only the case for UTF-8\nlocales.\n\nAs a side effect, this properly reports C.UTF-8 as the default locale\ninstead of C.\n\nChange-Id: I7c73cc8fe6ffac61d211cd5f75287e36de06f4fc\n"
    },
    {
      "commit": "8e613cf342b369f7985135dbe11ebdbf8c736157",
      "tree": "729d925aaeff9b92b7bb09c9385e90069b400c2c",
      "parents": [
        "440bd6bcc308f78b32fcbc4a3ba312dd1343559b"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 11 14:17:35 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 11 14:41:45 2014 -0700"
      },
      "message": "Remove declaration for putw(3)/getw(3).\n\nThese were both removed from POSIX 2004, and we don\u0027t define an\nimplementation for getw(3). Keep the definition of put(3) on LP32 for\nbinary compatibility.\n\nBug: 13935372\nChange-Id: Iba384b45093ac6d2d7c2d81f7980cd7701dd6f56\n"
    },
    {
      "commit": "69f05d291d848de654c72e5278de8ca06fbf5d2f",
      "tree": "f43847693b03d7978e7234577f2d6d843f3ec356",
      "parents": [
        "8aabecf35c71a8255db259cba01005eea10485cf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 05 20:10:09 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 05 23:19:15 2014 -0700"
      },
      "message": "Fix the printf family for non-ASCII.\n\nThe bug here turned out to be that we hadn\u0027t increased the constant\ncorresponding to the maximum number of bytes in a character to match\nour new implementation, so any character requiring more than a byte\nin UTF-8 would break our printf family.\n\nBug: 15439554\nChange-Id: I693e5e6eb11c640b5886e848502908ec5fff53b1\n"
    },
    {
      "commit": "9e01ea63a7517fe0c811ced3b822cf6e855ee62b",
      "tree": "29e905171439f76f82696b9235d53be897ecc469",
      "parents": [
        "1a57de713adfb81842cb2ebdfc051ecb9afa55f1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 29 12:49:35 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 29 13:17:40 2014 -0700"
      },
      "message": "Fix dprintf test.\n\nChange-Id: Ied783d545b6a35a70a158249f3957a9d00971627\n"
    },
    {
      "commit": "6afb2a9a9729bbfd70ace602342b0173f3bad328",
      "tree": "fc8dd33deb5e8c63845d13163f65a34fddf2aab8",
      "parents": [
        "fcac8ff97f6b6cced6546e0096cadc1039b68b5e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 22 11:47:47 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 22 11:47:47 2014 +0100"
      },
      "message": "Add dprintf test\n\nChange-Id: I0fe1b4d45c1312cf01deed6ce5db032d5513e908\n"
    },
    {
      "commit": "9b95ea936a72532c3124963312d348c6ee453d78",
      "tree": "b2681f6241fc2750c0ef96e7a31f40fe64a19164",
      "parents": [
        "a6ab968ca0af18d84620a692f76af0d8e857c9c8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 14 17:07:10 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 15 10:34:06 2014 +0100"
      },
      "message": "Document a known test issue in stdio_test.cpp.\n\nBug: 13077905\nChange-Id: Iab7fc7be0737c732e26cc07ecd7884b3087b51bb\n"
    },
    {
      "commit": "c9244bdac1ae254bdbb9687da9cdbb4c3f4cb432",
      "tree": "73ad53148cadf92c6db6a18d761d04a6c7dc608b",
      "parents": [
        "fbd9dcadc8e25b22c99596462669017b9b1b4a7c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 13:31:35 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 13:31:35 2014 -0700"
      },
      "message": "Add tests for fprintf behavior when the underlying fd is bad.\n\nBug: 7229520\nChange-Id: Ie878e0c13fdcda7b9131fa56208b84ed88125be7\n"
    },
    {
      "commit": "e77f38f14a01be7d0e1f2ca055047579ec42ffb7",
      "tree": "24633faed03539684c89335061b1796d1aaffecc",
      "parents": [
        "acc513698b90abdf84f26d6dd08eb0b32fa56714"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 12:39:12 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 12:39:12 2014 -0700"
      },
      "message": "Add a unit test for already-fixed printf -0.0 formatting.\n\nThis was fixed by the upgrade to upstream head.\n\nBug: 5084292\nChange-Id: Ia3bda1c0bbe38f428e22213b8bdbdf1a16caccf2\n"
    },
    {
      "commit": "063525c61d24776094d76971f33920e2a2079530",
      "tree": "de279e25b05c43dbb06bc3ceb49f23bed3874377",
      "parents": [
        "a26dd781fe675cf94c62183da27622eb83ff6fa7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 11:19:57 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 13 11:19:57 2014 -0700"
      },
      "message": "Consistently use #if defined(__BIONIC__) in tests.\n\nI\u0027ve also switched some tests to be positive rather than negative,\nbecause !defined is slightly harder to reason about and there are\nonly two cases: bionic and glibc.\n\nChange-Id: I8d3ac40420ca5aead3e88c69cf293f267273c8ef\n"
    },
    {
      "commit": "03e4ebee8d1579fbbc6157c1e9be4537bcad0c62",
      "tree": "e99ef0f5261d639efc7e0e01b20fe06f5d8b822c",
      "parents": [
        "15a6310e4b745add324b07a5d3d297aa95a56f59"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 08 14:42:06 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 13 00:39:08 2014 +0100"
      },
      "message": "Add fpos_t tests.\n\nBug: 13077905\n\nChange-Id: I86bb0ee95660f69f9971231c6f828a3a067d1ac8\n"
    },
    {
      "commit": "20f8aec8976b17ad4d9da6be265594d924f368e1",
      "tree": "47ba26f39bdd496b60027c5f63229236ec4bc1a6",
      "parents": [
        "ebcc72070499b2ab2d1dee990d6f52814a56600e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 12 15:15:37 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 12 15:15:37 2014 -0700"
      },
      "message": "Fix use-after-free errors in stdio_test.\n\nfclose(3) frees the passed-in FILE*. We should close(2) the underlying fd,\nnot fclose(3) the stream, if we want to test what happens with a stream\nwe can\u0027t read from.\n\nBug: 14466691\nChange-Id: I99fed5904b0266b9c6ae05d0b9cf2e926446c064\n"
    },
    {
      "commit": "ad534985ec3e01d37d46c50caa562f6482f48347",
      "tree": "bef8cd34c71d6154bef579013e3aaf25c02760e2",
      "parents": [
        "8ec21d9ded4c05744b3f9388bf824a508d7c95c2",
        "e2341d08fa4a4e0c22056c410fd34d3f93e06017"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 05 21:49:22 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 05 21:49:22 2014 +0000"
      },
      "message": "Merge \"Disable %n in printf and vfwprintf.\""
    },
    {
      "commit": "e2341d08fa4a4e0c22056c410fd34d3f93e06017",
      "tree": "9f690c9aa212dc1d3301b4a25a006e1362ac5151",
      "parents": [
        "e987803c35b472f378f81a37beb162ac86e01503"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 02 18:16:32 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 05 14:43:17 2014 -0700"
      },
      "message": "Disable %n in printf and vfwprintf.\n\nBug: 14492135\nChange-Id: If190bede29e5f68a65043ddbe8e878c660933d03\n"
    },
    {
      "commit": "53b24382f5299931af5d08c933a765334a092c56",
      "tree": "6ffbf015c42e0f140740f3c6cbdb41e8b28e9b80",
      "parents": [
        "e987803c35b472f378f81a37beb162ac86e01503"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 02 18:29:25 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 05 14:31:20 2014 -0700"
      },
      "message": "Switch to current upstream OpenBSD wsetup.c.\n\nChange-Id: I2c1123f3e1d3c4af7fd7bf354e763934a39b78c0\n"
    },
    {
      "commit": "0549371bd74ba7c7a5a16c2a7d6cc17dbe0e6f97",
      "tree": "abc888f1515ccb74452a81472af0630a40c2d0b3",
      "parents": [
        "8da69a25b7840db23846d4bb303ef84a1775c1e1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 17 17:30:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 17 17:30:03 2014 -0700"
      },
      "message": "Upgrade to current vfprintf.\n\nThis gets us various bug fixes and missing C99 functionality.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d64886\nChange-Id: Ie9f8ac569e9b5eec1e4a1faacfe2c21662eaf895\n"
    },
    {
      "commit": "4bd97cee28dd815fff54fc97560be60d566c1fa5",
      "tree": "f337de53e57aee78ad4e574c652fdeee679630b6",
      "parents": [
        "26c2bb84dd5cbd9ab43a5f0ebc2635bc3b64be3d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 10 17:48:14 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 16 15:15:52 2014 -0700"
      },
      "message": "Switch to gdtoa.\n\nThis gives us a real strtold for LP64 and fixes various LP64\nbugs.\n\nBug: 13563801\nChange-Id: I277858d718ee746e136b6b6308a495ba50dfa488\n"
    },
    {
      "commit": "7823f320b144bc95a34389e7ab709c9e4d3073e1",
      "tree": "1eb9aca80fec80533bc236efed3a711a4ae75cd1",
      "parents": [
        "28417eb9b58ca666355f93e82dcad0df0d3466ce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 14 12:11:28 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 14 12:11:28 2014 -0700"
      },
      "message": "Extra tests for printf of NaN and Inf.\n\nChange-Id: I61fc655d9777a03aabf38f6ebd047fe275386f05\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": "f171b34cf045115b82ccb89b57feb56d3cad472b",
      "tree": "60d746b63387b151f00dfd3272773f2701e93929",
      "parents": [
        "f212bbf666b77777063a3a94a672bcae80b15253"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 17 16:40:26 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 17 16:40:26 2014 -0700"
      },
      "message": "Use the float/double assert macros.\n\nThe normal ASSERT_EQ macros don\u0027t work quite right for float/double values,\nand result in false failures. Use the correct macros instead.\n\nBug: 13511379\nChange-Id: Ic2feee7f3d3569f57b6453b8fa95222846c625cd\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": "f04935c85e0b466f0d30d2cd4c0fa2fff62e7d6d",
      "tree": "8f1c6af75517892648f49adad9d4d5d44c20f49c",
      "parents": [
        "e163a3986aa7d1c67fe3274eb9204812be0a6245"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Dec 20 18:43:21 2013 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Feb 06 20:12:21 2014 -0800"
      },
      "message": "Make sure that the same tests are on all platforms.\n\nIn order to be able to generate a list of tests for cts, the same set of\ntests must exist across all platforms. This CL adds empty tests where a\ntest was conditionally compiled out.\n\nThis CL creates a single library libBionicTests that includes all of\nthe tests found in bionic-unit-tests-static.\n\nAlso fix a few missing include files in some test files.\n\nTested by running and compiling the tests for every platform and\nverifying the same number of tests are on each platform.\n\nChange-Id: I9989d4bfebb0f9c409a0ce7e87169299eac605a2\n"
    },
    {
      "commit": "6ad8f76f1f1cbee484c30d723d9d6d1fcf5dc85c",
      "tree": "07ac6a32d57f7a65112ebeda5078d2f064a9a34a",
      "parents": [
        "cf7a4a4fda076ec76bb79fdbd039665171e8cd75"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 19 14:56:17 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 19 14:56:17 2013 -0800"
      },
      "message": "Don\u0027t abort in stdio.getdelim_invalid and stdio.getline_invalid.\n\nChange-Id: Ie1aefed732f4bea77887bddd1be9a0578e247aa3\n"
    },
    {
      "commit": "cbd85b9cc1c5dd0bb1a5691143cd5adcbecdba77",
      "tree": "6a68536f1a1a5c37803b04199fe536d7ce876891",
      "parents": [
        "f246c589d66e5dc0e3cddc3c37261fb0e3fc67e9"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Nov 15 15:16:01 2013 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Nov 15 16:09:44 2013 -0800"
      },
      "message": "Modify tests for another glibc difference.\n\nIt turns out that when passing a closed file to getdelim or getline, the\nfunctions in glibc will properly return a failure, but errno might not be\nset. Skip the errno check except on bionic.\n\nChange-Id: I8d625f15303d4c2d42e8d28491ea8a368aea4d32\n"
    },
    {
      "commit": "13613137bc4266656bffce464e525eb9ae6371f0",
      "tree": "0acda656b21254c1b809b575ab403d4099811b6e",
      "parents": [
        "020bcdaef349b6bd82302a0656fdf9aaff30bdb3"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Oct 28 15:24:04 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Oct 29 14:55:11 2013 -0700"
      },
      "message": "Fix up failing glibc tests.\n\nThere is a known bug running clone with the CLONE_VM flag, so for host\ncreate an empty test.\n\nChange the expected output of the stdio test for a glibc difference.\n\nChange the pause test to use ScopedSignalHandler to setup/restore the SIGALRM\nhandler.\n\nAfter this, running bionic-unit-tests-glibc passes for all tests.\n\nBug: 11389824\n\nChange-Id: Ib304eae4164115835a54991dfdca5821ecc3db5e\n"
    },
    {
      "commit": "925753aa1175ae58b24bbfe2d9e38eb4fe3f579d",
      "tree": "135216d664f4023020f12df45768f55dbfa399bf",
      "parents": [
        "e9797ac6756481c0c219eb6b99f9062fd6dfb770"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 18 13:17:18 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 18 13:17:18 2013 -0700"
      },
      "message": "Fix some test assumptions that are wrong for __LP64__.\n\nChange-Id: Ic79cd5858ceb611640a76bd03f3da4925d3150d9\n"
    },
    {
      "commit": "6c7b3cb056509fd8756bc012878a499f6f102114",
      "tree": "1a3c40a59049e259c3c5c226d4f1359089f6f8ca",
      "parents": [
        "eda2679e30b997d036e0ec572cda054adc2ac3a6"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Fri Oct 11 16:03:21 2013 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Fri Oct 11 16:20:08 2013 -0700"
      },
      "message": "Fix clang warnings in bionic.\n\nThis fixes a few diverse issues that clang warns on in bionic. First,\nit specifies the appropriate converted types for format specifiers.\nThe \"h\" and \"hh\" modifiers specify that the user is passing a short or\nchar respectively. We were passing int deliberately in both cases and\nrelying on the compiler to implicitly downcast to the smaller type.\nWe also remove the non-standard \"d\" suffix from our double-precision\nfloating point constant. This is an extension for gcc that clang does\nnot implement. The third fix is to mark the c1 variable as unused,\nsince it truly is neither read nor written.\n\nChange-Id: I4793352b9d3e58f1f4cac9e7581ef4b2a70b43c7\n"
    },
    {
      "commit": "7248a2d4d03122efc55637ec77692fbc260b6e4f",
      "tree": "0ad0cba4b11119dedc2d419eb6aab656b143a3a5",
      "parents": [
        "759111cadf84f337f98177259d9e3f9d39c9eea9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 24 18:01:33 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 24 18:01:33 2013 -0700"
      },
      "message": "Add a unit test for %n.\n\nChange-Id: I9335e089d66c98d34577f5e1d1a54b8f507b94f6\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": "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": "b6e22482d4fbf62c23707a9096eecd2082a63ef1",
      "tree": "7d6b9ca2c00e54eb9d38a16cd49e2903add83ce4",
      "parents": [
        "809eed1dedb833af1aba56c6a1d059123b43049a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 08 15:28:52 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 08 15:28:52 2013 -0800"
      },
      "message": "Let bionic use the correct definition of ssize_t.\n\nBug: 8253769\nChange-Id: I50c7cc20828fc089b83580e039ce9153a6c5a8cc\n"
    },
    {
      "commit": "6b3f49a5374305ce9690c3c5ca2aadc90f54c521",
      "tree": "7dcd0542e0e59e974bb6aae6a2c861e38f7d5dd1",
      "parents": [
        "db794197cc880e3805bcefbea780476a359066c2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 06 16:20:55 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 06 16:20:55 2013 -0800"
      },
      "message": "Upgrade to current NetBSD popen/pclose.\n\nThis gets us back to using vfork now our ARM vfork assembler stub is\nfixed, and adds the missing thread safety for the \u0027pidlist\u0027.\n\nBug: 5335385\nChange-Id: Ib08bfa65b2cb9fa695717aae629ea14816bf988d\n"
    },
    {
      "commit": "e255642dc1178663860104d9da2590056fae8d0b",
      "tree": "b3e37a52ccb3f6ee74750976cfbab0faedbc8fb5",
      "parents": [
        "f5f906c184677b8295523231cfeead9ed94661ad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 28 10:51:14 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 28 10:51:31 2013 -0800"
      },
      "message": "Avoid changing the C++ ABI with ssize_t.\n\nBug: 8253769\nChange-Id: Ia325003ed6e59da553e2bdde7c43515bc191b8ba\n"
    },
    {
      "commit": "c641cafbc387849510d7f408e85f72fa3608916d",
      "tree": "102909efb095eaa603f94de0617720b5364875b9",
      "parents": [
        "593abb7b593a34d501c90512953a7368add6d185"
      ],
      "author": {
        "name": "Thorsten Glaser",
        "email": "tg@mirbsd.org",
        "time": "Sun Feb 17 16:50:58 2013 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 19 14:12:55 2013 -0800"
      },
      "message": "use architecture-specific ssize_t definition\n\nafter change 32822 was rejected, this is the more light-weight\nversion of the fix: libc/include/sys/types.h already - via\nlibc/kernel/common/linux/posix_types.h - includes a definition\nof __kernel_ssize_t from libc/kernel/arch-*/asm/posix_types.h\nwhich is architecture-specific, toolchain-agnostic and also\ngets rid of the gcc -Wformat warning (which it issues correctly,\nsince this i̲s̲ indeed a bug in bionic)\n\nChange-Id: Ie4503ab16628bc25815a836d07556f665e9795c7\n"
    },
    {
      "commit": "5e3fc43ddeada547a155c6f561a12ff0b16e02d3",
      "tree": "9becf3a8442387f408f7f9ee73ab06ab7f8865d1",
      "parents": [
        "1fea0f258a45d918fe5ae8e9769f45c0348bd095"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 16:36:48 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 16:39:10 2013 -0800"
      },
      "message": "Fix __pthread_clone on ARM to set errno on failure.\n\nMIPS and x86 appear to have been correct already.\n\n(Also fix unit tests that ASSERT_EQ with errno so that the\narguments are in the retarded junit order.)\n\nBug: 3461078\nChange-Id: I2418ea98927b56e15b4ba9cfec97f5e7094c6291\n"
    },
    {
      "commit": "eac9eb462ed6f7fcfb791e7a08b4011fcca47829",
      "tree": "3b436a25d9ff22616ca22919ff9026e4426a9243",
      "parents": [
        "e4030e0bfc427e755477bbea69afe60308a62d91"
      ],
      "author": {
        "name": "Irina Tirdea",
        "email": "irina.tirdea@intel.com",
        "time": "Sat Sep 08 09:28:30 2012 +0300"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 27 11:38:57 2012 -0700"
      },
      "message": "Add getdelim(3) and getline(3) to bionic\n\nSome userspace programs (e.g. perf) need getline.\n\nChanges:\n() add getdelim.c, getline.c from NetBSD (http://netbsd.org/) under the\nNetBSD Foundation\u0027s (TNF) license (\"2 clause\" Berkeley-style license).\n() add stub for reentrant.h header that is needed by getdelim.c\n() add tests for getdelim(3) and getline(3).\n() update NOTICE file.\n\nChange-Id: I22ed82dd5904b9d7a3695535c04f502be3c27c5d\nSigned-off-by: Irina Tirdea \u003cirina.tirdea@intel.com\u003e\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"
    }
  ]
}
