)]}'
{
  "log": [
    {
      "commit": "141b917018048c5fda567785740dfaaf38e66f1e",
      "tree": "144416c96d8e3d1406ed78d8221a72a174317d80",
      "parents": [
        "999d82e51d8b96c622ecb63c69b56e7e7753e47d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 09 17:13:09 2021 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 12 10:01:20 2021 -0700"
      },
      "message": "Switch to libbase SilentDeathTest.\n\nBug: http://b/184955378\nTest: treehugger\nChange-Id: Ie0849224074da92203340a741a86a24a4a3702c2\n"
    },
    {
      "commit": "e657eb4f8abc2bb21571df1c0d0e0cbfaadce1c1",
      "tree": "ece8247ab16072e2fd1fca786be9050562bb3f60",
      "parents": [
        "332065d57e734b65f56474d136d22d767e36cbcd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 18 17:11:56 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 18 17:23:04 2021 -0800"
      },
      "message": "Fix some bionic death tests.\n\nThese were creating tombstones and spewing to the log.\n\nYou need TEST_F() rather than TEST(), and the modern style is apparently\nto use `using` rather than an empty subclass.\n\nBug: http://b/180605583\nTest: run tests, check logcat\nChange-Id: I1e639d34854aeff6f042c24643b769a6bcfab877\n"
    },
    {
      "commit": "f9cfecf3d4d848e247dc8bdc486ed227bff7315f",
      "tree": "00f1b5a19b7acaa16783ea14361d156a38a98989",
      "parents": [
        "15ade069b10f7f5291e48c01db2da4852dae04b7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 04 16:58:13 2021 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 04 17:01:55 2021 -0800"
      },
      "message": "Fix freopen() where the path is null.\n\nThis has been in the standard since C99, but we\u0027ve never supported it\nbefore. It\u0027s apparently used by SPIRV-Tools.\n\nI tried implementing this the other way (with fcntl(2)) first, but\neventually realized that that\u0027s more complicated and gives worse\nresults. This implementation assumes that /proc is mounted, but so much\nof libc relies on that at this point that I don\u0027t think there\u0027s any\nrealistic case where the fcntl(2) implementation would be preferable,\nand there are many where it\u0027s not.\n\nThe fact that no-one\u0027s mentioned this until now suggests that it\u0027s not a\nheavily used feature anyway.\n\nI\u0027ve also replaced AssertCloseOnExec() with a CloseOnExec()\nboolean-valued function instead, because it\u0027s really annoying getting\nassertion failures that don\u0027t point you at the test line in question,\nand instead point to some common helper code.\n\nTest: treehugger\nChange-Id: Ia2e53bf2664a4f782581042054ecd492830e2aed\n"
    },
    {
      "commit": "439ebbd3492ad3a8b8398fa80b0860baeb50a40e",
      "tree": "5bcaa629808b35484cefbcda47d91c1dcbc21171",
      "parents": [
        "925431a072737d4c1bbf18f3da7ab24a25486870"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 04 18:51:42 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 08 22:26:06 2020 -0800"
      },
      "message": "Simplify and improve tempnam() and tmpnam().\n\nThey\u0027re both obsolescent in POSIX.1-2008, and you really shouldn\u0027t be\nusing them, but since we can\u0027t actually delete them...\n\nThis change makes them both obey $TMPDIR if set, and fall back to\n/data/local/tmp otherwise. That\u0027s as good as we\u0027ve managed for anything\nelse such as tmpfile(3).\n\nAlso add some tests.\n\nBug: http://b/174682340\nTest: treehugger\nChange-Id: Ieef99dcc2062f84b2b7cbae046787fdfe975e772\n"
    },
    {
      "commit": "7cebf835f310650f67b254295a685918681656fc",
      "tree": "daf485447fccb691750149c465b2c629adf6e305",
      "parents": [
        "a4110def5cec22306313a34fff64b5810c9b1792"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 14:25:41 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 12 15:52:14 2020 -0700"
      },
      "message": "Various coverage improvements.\n\nMostly from extra test cases, but also:\n\n* Move the fgets size \u003c 0 assertion into fgets.\n\n* Use ELF aliases for strtoq/strtouq rather than duplicating code.\n\n* Don\u0027t check uname() succeeded, since it can\u0027t fail.\n\nTest: treehugger\nChange-Id: I2e6b3b88b0a3eb16bd68be68b9bc9f40d8043291\n"
    },
    {
      "commit": "cdb4a26d29fce473261dceaf4610372fb26d5e64",
      "tree": "804c0c127e949749ada67b410c9acfc65f13e120",
      "parents": [
        "86a8696cfb7813964df988d0f4bf278bf3344a6c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 05 16:56:53 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 11 12:57:37 2020 -0700"
      },
      "message": "Update upstream OpenBSD gdtoa.\n\nAlso add a test for the bug that this fixes.\n\nBug: http://b/152588929\nTest: treehugger\nChange-Id: I58055b3ebaef457721bb4f5d8a8710025122b2e7\n"
    },
    {
      "commit": "5dc31300ff926c7ffdd56f95c080e9b0d6122666",
      "tree": "ad74f1b195684a8afc71b2c1e0e1946db7efd348",
      "parents": [
        "7bc71075eabaf037397065c0374a536c7eba52e2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 07 08:48:10 2020 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 07 08:48:10 2020 -0800"
      },
      "message": "Explicitly test printf %s with nullptr.\n\nI haven\u0027t found a bug, but tests are good.\n\nBug: https://github.com/landley/toybox/issues/163\nChange-Id: I57149800099abc699cc841b69a5a72aeac7c2bcc\n"
    },
    {
      "commit": "05b675e8bfec6e33138fd2e1b2e0e16afe745b37",
      "tree": "2de2c98f748581531eaa6b0bb92adbe30f891f36",
      "parents": [
        "c2a722f5d77911afd199f452b03d9c15fbe645f8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 17 13:01:06 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 02 09:09:59 2019 -0700"
      },
      "message": "Add renameat2.\n\nBug: http://b/127675384\nTest: new tests\nChange-Id: Ia2e3d5679180391ca98e62fa429fa11cbf167507\n"
    },
    {
      "commit": "31c7309dc6d4385f120ec30dae3c0adcb5a7db1d",
      "tree": "aa78473ec4f6af2e1c5cb34848806a11ec98e8dc",
      "parents": [
        "78e42d81ec89d3cd73ed4e8613947c8bdf8341fc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 07 10:03:02 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 07 10:03:02 2019 -0700"
      },
      "message": "Add SEEK_DATA and SEEK_HOLE constants.\n\nWithout pulling in \u003clinux/fs.h\u003e, the UAPI source of these constants,\nbecause it\u0027s full of pollution, in particular a macro called BLOCK_SIZE\nthat breaks a lot of stuff.\n\nTest: treehugger\nChange-Id: I7258ec57e91c67645c2b4d0ce44850d757c4bb12\n"
    },
    {
      "commit": "c485cdb0249415b8aee5968b2b8854921e152854",
      "tree": "160af7094ea713aa83b280f594e4c834c4316bb3",
      "parents": [
        "0cd818a377157326ce326e8a48ea00882d1d1d06"
      ],
      "author": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Tue Apr 30 14:47:34 2019 -0700"
      },
      "committer": {
        "name": "Ryan Prichard",
        "email": "rprichard@google.com",
        "time": "Sat May 04 00:28:00 2019 -0700"
      },
      "message": "Revert fwalk/sfp locking to fix concurrent reads\n\nThe locking can fail in a couple of ways:\n\n - A concurrent fread from an unbuffered or line-buffered file flushes\n   the output of other line-buffered files, and if _fwalk locks every\n   file, then the fread blocks until other file reads have completed.\n\n - __sfp can initialize a file lock while _fwalk is locking/unlocking it.\n\nFor now, revert to the behavior Bionic had in previous releases. This\ncommit reverts the file locking parts of commit\n468efc80da2504f4ae7de8b5e137426d44dda9d7.\n\nBug: http://b/131251441\nBug: http://b/130189834\nTest: bionic unit tests\nChange-Id: I9e20b9cd8ccd14e7962f7308e174f08af72b56c6\n"
    },
    {
      "commit": "bcaa454d32e1b4ccf92467bb263d627695ac9a5b",
      "tree": "65d7d4c493242ecb51bfe1796f133b32538de514",
      "parents": [
        "ff16c0b89b7297bc70353f60afac9bb93d6b0087"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 08 15:20:23 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 12 10:26:39 2019 -0700"
      },
      "message": "bionic tests: use GTEST_SKIP.\n\nAlso be a bit more to the point in our messages, focusing on \"why\" not\n\"what\".\n\nTest: ran tests\nChange-Id: I297806c7a102bd52602dcd2fcf7a2cd34aba3a11\n"
    },
    {
      "commit": "288465d6e908a4a2b9f8ed27834fc5861bae0ed3",
      "tree": "60ed2b0f19354c21223fd8539c68a32568fe3c42",
      "parents": [
        "5c45c4efb28f103112ed8765386184d802afea73"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 05 15:00:13 2019 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 05 15:00:13 2019 -0800"
      },
      "message": "Avoid writing to a zero-capacity buffer.\n\nBug: http://b/120752721\nTest: ran tests\nChange-Id: I3f03ae204ab5de40fd4402a5562c50ffe51ef998\n"
    },
    {
      "commit": "c2edae3f863f7c04d3b543c608319584527f2435",
      "tree": "cc1107f059e84a994d83a99fe1ffd1380ac0863b",
      "parents": [
        "913f808c0f502d64ca542ceab984c9d40eb97eed"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 15:16:24 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue Dec 11 15:16:24 2018 -0800"
      },
      "message": "Fix cert-dcl16-c clang-tidy warnings in tests.\n\nBug: 120614316\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,cert-dcl16-c\nChange-Id: I2606dc4cdfff9c2691ed60d529971e16adb3a9ae\n"
    },
    {
      "commit": "68a3bcc249b04394b73991c5272aa0ae4bde7676",
      "tree": "1198b5a3d89086b82223d8ee7271d215643c03a3",
      "parents": [
        "c2d3e67a77fe284e8f8f1ae4dd4a67a669bfd644"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 13 07:35:21 2018 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Nov 13 10:57:28 2018 -0800"
      },
      "message": "bionic tests: switch to using android-base/file.h for TemporaryFile\n\nA matching definition of TemporaryFile exists in libbase now.\n\nTest: compile\nBug: 119313545\nChange-Id: I6f84dbf3af9a9c4b270a2532a36c9cb4c0f6bb8f\n"
    },
    {
      "commit": "f340a56d1c7aa469ccb4150521aba19f5c73dcf0",
      "tree": "cc41e09773b753e85fb7a503cd257cf808fea7c0",
      "parents": [
        "74934aaf10d629de477095f0b92c467849f89638"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 06 10:42:40 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 06 10:42:40 2018 -0700"
      },
      "message": "Use strerror_r(3) for the printf family %m.\n\nThere\u0027s TLS space used for unknown errno values, and a call to printf\nshouldn\u0027t clobber that. No-one will ever hit this in real life, but\nsince it\u0027s easily fixed...\n\nBug: http://b/112776560\nTest: ran tests\nChange-Id: I8c2437f2e5214e652119791d4e162a197b049d5b\n"
    },
    {
      "commit": "654cd8331b3dafb2027a3062104c6e9934af1935",
      "tree": "82562a68054fbcbe65259cd594290278ca94f8fc",
      "parents": [
        "003521af4760215c9c3b8ba80c88dd3b3c87ab67"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 30 16:00:42 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 30 16:00:42 2018 -0700"
      },
      "message": "Add the %m GNU extension to printf/wprintf.\n\nAnd remove the local hack from syslog(3).\n\nBug: http://b/112776560\nTest: ran tests\nChange-Id: I5807e729a978df26187ea0ee255bba4ca74220c8\n"
    },
    {
      "commit": "2c4ec7e109a2d9804bff50b7477bfd4df7b4e1b1",
      "tree": "040709fe01139d6dc8a69a3c9fee15e0e7179a1d",
      "parents": [
        "05ee196c0a6367b5f07e2f9de502457c3299ecc6"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 23 11:17:55 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 23 11:30:56 2018 -0700"
      },
      "message": "Fix uses of readlink in tests.\n\nreadlink does not append a terminator, and a few tests assumed it did.\n\nTest: Unit tests pass.\nChange-Id: I3ccea4e7895cd919b45e1ca0c90aa6f0031de320\n"
    },
    {
      "commit": "f1a38386b77c7d67c96e9da4ba97770be3780455",
      "tree": "ca252fd88408959f6c735674b35c9bad54043cef",
      "parents": [
        "5c18e6a153291951fea6ae9c9a074246c7bad373"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 22 15:38:07 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 22 15:38:07 2018 -0700"
      },
      "message": "Test that /dev/stdin, /dev/stdout, and /dev/stderr are all present.\n\nBug: http://b/31824379\nTest: ran tests\nChange-Id: I16034106eb61b9f32c9afef512c75f0b73c179b5\n"
    },
    {
      "commit": "32bc0fcf69dfccb3726fe572833a38b01179580e",
      "tree": "abca656f500087493e0997d5cf38cbcc9ec98eb8",
      "parents": [
        "65f82092a17518080178ff7004cc6db362ebfbcd"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 17:31:13 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 18:09:44 2018 -0700"
      },
      "message": "Modernize codebase by replacing NULL with nullptr\n\nFixes -Wzero-as-null-pointer-constant warning.\n\nTest: m\nBug: 68236239\nChange-Id: I5b4123bc6709641315120a191e36cc57541349b2\n"
    },
    {
      "commit": "f6e5b582604715729b09db3e36a7aeb8c24b36a4",
      "tree": "1d68c449355f88a0652d3c1e2d6679b54fce1b20",
      "parents": [
        "ad596bf4fc406c0940d0f76f6b7c4ff22ecee7ac"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 01 15:30:54 2018 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jul 19 14:28:54 2018 -0700"
      },
      "message": "Introduce api to track fd ownership in libc.\n\nAdd two functions to allow objects that own a file descriptor to\nenforce that only they can close their file descriptor.\n\nUse them in FILE* and DIR*.\n\nBug: http://b/110100358\nTest: bionic_unit_tests\nTest: aosp/master boots without errors\nTest: treehugger\nChange-Id: Iecd6e8b26c62217271e0822dc3d2d7888b091a45\n"
    },
    {
      "commit": "468efc80da2504f4ae7de8b5e137426d44dda9d7",
      "tree": "464d20ef3a5ae493a9728ddc53629764b59f300d",
      "parents": [
        "f0296f35f67cf4c112b3ed407858999bdc2f33b0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 10 14:39:49 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 11 12:15:26 2018 -0700"
      },
      "message": "Reimplement popen(3)/pclose(3).\n\npclose(3) is now an alias for fclose(3). We could add a FORTIFY check\nthat you use pclose(3) if and only if you used popen(3), but there seems\nlittle value to that when we can just do the right thing.\n\nThis patch also adds the missing locking to _fwalk --- we need to lock\nboth the global list of FILE*s and also each FILE* we touch. POSIX says\nthat \"The popen() function shall ensure that any streams from previous\npopen() calls that remain open in the parent process are closed in the\nnew child process\", which we implement via _fwalk(fclose) in the child,\nbut we might want to just make *all* popen(3) file descriptors O_CLOEXEC\nin all cases.\n\nIgnore fewer errors in popen(3) failure cases.\n\nImprove popen(3) test coverage.\n\nBug: http://b/72470344\nTest: ran tests\nChange-Id: Ic937594bf28ec88b375f7e5825b9c05f500af438\n"
    },
    {
      "commit": "41398d03b7e8e0dfb951660ae713e682e9fc0336",
      "tree": "802d6cf0350264fffe41021f70dbd8fe1d7c35d4",
      "parents": [
        "0a8d5f3eb8f4087b307f237943a19ae36b094ced"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 07 13:32:58 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 07 13:32:58 2018 -0800"
      },
      "message": "Call __fortify_fatal if printf sees %n.\n\nWe\u0027ve ignored %n for a long time, but that\u0027s dangerous too because it\nmakes it unclear whether the corresponding pointer argument should be\nsupplied or not.\n\nRemove the ambiguity by just rejecting %n outright.\n\nBug: http://b/31832608\nTest: ran tests\nChange-Id: Ic046ad3436a30c6f8f580ea738bdcaeb01c858f8\n"
    },
    {
      "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"
    }
  ],
  "next": "eac9eb462ed6f7fcfb791e7a08b4011fcca47829"
}
