)]}'
{
  "log": [
    {
      "commit": "53de874c3cd5b8aa243546bb1c206f5a709db1fd",
      "tree": "982316adf0c878fb85bf7c4579a04c4f631424dc",
      "parents": [
        "bd839d100d1c4802cf53f3d27bb73e6032719762"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 14:50:31 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 24 14:50:31 2016 -0700"
      },
      "message": "The default locale \"\" should be a UTF-8 locale.\n\n\"ls -q\" (or \"adb shell -tt ls\") was mangling non-ASCII because mbrtowc\nwas returning multibyte characters as their individual bytes. This was\nbecause toybox asks for \"\" rather than \"C.UTF-8\", and for some reason\nwe were interpreting that as \"C\" rather than \"C.UTF-8\".\n\nTest: bionic tests, ls\nChange-Id: Ic60e3b90cd5fe689e5489fad0d5d91062b9594ed\n"
    },
    {
      "commit": "89e29ee485253ad39b8bfd514f1c3b5c3e52f98d",
      "tree": "e12e4cb724035f506308849fac970a11887db661",
      "parents": [
        "cc9e9933e1b85592f96d04962b20e5051dc8ec28"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 29 17:21:43 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 29 17:26:13 2016 -0700"
      },
      "message": "Fix mbsnrtowcs where `dst` is null.\n\nPOSIX is its usual unintelligible self\n(http://pubs.opengroup.org/onlinepubs/9699919799/functions/mbsrtowcs.html),\nbut the ISO C11 standard (7.29.6.4.1 paragraph 2) is pretty clear: *src\nshould change if and only if dst is non-null.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d166381\nTest: bionic tests\nChange-Id: Ibc631cfa5b1bf4a6f56963feba9f0eea27b07984\n"
    },
    {
      "commit": "3c5037f1b3b747e79d17a5f717d9f9c365132d33",
      "tree": "73805e82ebef155bd7ffb45cf826f9624c47799b",
      "parents": [
        "87b6906f6e0c17b2541535be8e054324cc2fef4a"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Sep 23 15:32:24 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Sep 23 15:32:24 2014 -0700"
      },
      "message": "Fix incorrect parameter types for locale funcs.\n\nstrtoll(3), strtoull(3), wcstoll(3), and wcstoull(3) all take an _int_\nas a base, not a size_t. This is an ABI compatibility issue.\n\nBug: 17628622\nChange-Id: I17f8eead34ce2112005899fc30162067573023ec\n"
    },
    {
      "commit": "b6cc8e00cd562bd0f81fe44a6bc646540a862f32",
      "tree": "f4630dd8581b62020996f5f30636e593ac79c9b4",
      "parents": [
        "36bacd237de931c48714d1a8aa4aa9522283e407"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jul 31 11:31:03 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Jul 31 11:31:03 2014 -0700"
      },
      "message": "Fix mbsrtowcs(3) src param for finished string.\n\nA mistake I made while cleaning this up the first time through.\nmbstrtowcs(3) sets the src param to null if it finishes the string.\n\nChange-Id: I6263646e25d9537043b7025fd1dd6ae195f365e2\n"
    },
    {
      "commit": "6b55ba54eff4657cffe053b71e1c9cce2944a8a9",
      "tree": "cec574487f5fe5c039a9b2acd90ea4dbe22e8066",
      "parents": [
        "7dd126a38ca501818b07927f310dcc0f531c0f1f"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sun Jul 20 11:51:26 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jul 21 11:45:48 2014 -0700"
      },
      "message": "Fix mbsrtowcs(3)\u0027s handling of len parameter.\n\nThe len parameter is a _maximum_ length. The previous code was treating\nit as an exact length, causing the following typical call to fail:\n\n    mbsrtowcs(out, \u0026in, sizeof(out), state); // sizeof(out) \u003e strlen(in)\n\nChange-Id: I48e474fd54ea5f122bc168a4d74bfe08704f28cc\n"
    },
    {
      "commit": "dfb5ce42bcc5a275af49211c0bbe64c5ec3d2668",
      "tree": "4ff3d2f96f0c5e00edac99cd86119f2ecc5cfa73",
      "parents": [
        "76df69d1f5cbbc8a2c1e899bc1ad5ada8b083e1e"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 09 22:51:34 2014 +0000"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Fri Jul 11 16:21:31 2014 +0000"
      },
      "message": "Revert \"Revert \"Add locale aware APIs.\"\"\n\nThis reverts commit 063e20c26943ec82ef1d53a544545e79054e93d3.\n\nChange-Id: Ib8c9004efefe75a5346b3af50dfe37952d91eb21\n"
    },
    {
      "commit": "063e20c26943ec82ef1d53a544545e79054e93d3",
      "tree": "486076b9e0dd6439cea5f0108ecf6154df6e4aab",
      "parents": [
        "e087eac404b0e30de427392065e2750acf92bd4a"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 09 22:50:43 2014 +0000"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 09 22:50:43 2014 +0000"
      },
      "message": "Revert \"Add locale aware APIs.\"\n\nAccidentally verified against a dirty tree. Needs the companion change to libc++ to land upstream before I can submit this.\n\nThis reverts commit e087eac404b0e30de427392065e2750acf92bd4a.\n\nChange-Id: I317ecd0923114f415eaad7603002f77feffb5e3f\n"
    },
    {
      "commit": "e087eac404b0e30de427392065e2750acf92bd4a",
      "tree": "c547e35ffc82ee9afd441d2e3739a87de73103fd",
      "parents": [
        "6cdd0cfd2f279dfb20b9f7cccc963eb9ee91c666"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 09 10:09:04 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 09 15:41:53 2014 -0700"
      },
      "message": "Add locale aware APIs.\n\nSince we only support the C locale, we can just forward all of these to\ntheir non-locale equivalents for correct behavior.\n\nChange-Id: Ib7be71b7f636309c0cc3be1096a4c1f693f04fbb\n"
    },
    {
      "commit": "7a7f9952c12b216fbf91fc4cdbb97045e8861115",
      "tree": "eeb9b78c9f548f65e913a9e2d184590b35cb3e42",
      "parents": [
        "831405b749d15a11fb947a40d61fd858e952d860"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon Jun 02 11:33:04 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jun 04 08:39:24 2014 -0700"
      },
      "message": "Adds functionality specified by uchar.h\n\nmbrtoc32 and c32rtomb get their implementations from mbrtowc and wcrtomb. The\nwc functions now simply call the c32 functions.\n\nBug: 14646575\nChange-Id: I49d4b95fed0f9d790260c996c4d0f8bfd1686324\n"
    },
    {
      "commit": "15a6310e4b745add324b07a5d3d297aa95a56f59",
      "tree": "7de30694638043bf19cd6218747922364a9fc528",
      "parents": [
        "8b307e0e9843aad7e1816eb631208117df2e787b"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 08 14:38:35 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 13 00:24:25 2014 +0100"
      },
      "message": "Support mb sequences across calls to mb*to*wcs* functions\n\nBug: 13077905\nChange-Id: I5abdc7cc3c27c109b7900c94b112f18a95c35763\n"
    },
    {
      "commit": "0d0ccfe2ce32e3669c66fe7575fedbd5ab0db410",
      "tree": "ad2bbf91e5804f8d5da79d0bb425fac94fc5dd68",
      "parents": [
        "296f17af0a630550f980dab85363093e4be55eb0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 01 19:03:18 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 01 19:03:18 2014 -0700"
      },
      "message": "Fix wchar_t signedness problems found on x86-64.\n\nThe existing tests caught this.\n\nChange-Id: I6269844ae4301fd2c596241a59e97eb67ef166fa\n"
    },
    {
      "commit": "568c86a48955fd5479db53b68d59be04df633ec5",
      "tree": "b99199dcfabfce21af9abda88cfa79c163c58835",
      "parents": [
        "f0291ca6b7d0ef42a31ae76a18a99c81d6e6d345"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 01 16:49:55 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 01 16:49:55 2014 -0700"
      },
      "message": "Fix wchar.cpp signed/unsigned comparison build failure.\n\nChange-Id: Id20b91f3d57c4430987b5cc88ac99c245801d73b\n"
    },
    {
      "commit": "5a0aa3dee247a313f04252cf45608097695d5953",
      "tree": "1bbc0d1e4e60717285b17b40ab155bdfbace5e37",
      "parents": [
        "9fb53dd4dbaa7633c234d9da8417827fa3d3c32f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 30 22:03:12 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 01 14:46:54 2014 -0700"
      },
      "message": "Switch to a working UTF-8 mb/wc implementation.\n\nAlthough glibc gets by with an 8-byte mbstate_t, OpenBSD uses 12 bytes (of\nthe 128 bytes it reserves!).\n\nWe can actually implement UTF-8 encoding/decoding with a 0-byte mbstate_t\nwhich means we can make things work on LP32 too, as long as we accept the\nlimitation that the caller needs to present us with a complete sequence\nbefore we\u0027ll process it.\n\nOur behavior is fine when going from characters to bytes; we just\nupdate the source wchar_t** to say how far through the input we got.\n\nI\u0027ll come back and use the 4 bytes we do have to cope with byte sequences\nsplit across multiple input buffers. The fact that we don\u0027t support\nUTF-8 sequences longer than 4 bytes plus the fact that the first byte of\na UTF-8 sequence encodes the length means we shouldn\u0027t need the other\nfields OpenBSD used (at the cost of some recomputation in cases where a\nsequence is split across buffers).\n\nThis patch also makes the minimal changes necessary to setlocale(3) to\nmake us behave like glibc when an app requests UTF-8. (The difference\nbeing that our \"C\" locale is the same as our \"C.UTF-8\" locale.)\n\nChange-Id: Ied327a8c4643744b3611bf6bb005a9b389ba4c2f\n"
    },
    {
      "commit": "94336d8ecf795cfdde874a1e15977d68cfc7afc1",
      "tree": "771d43bae670d516b6c90bef2fd39eb7df443dfa",
      "parents": [
        "85e780d0557643a81c4a33b3bc5d3806ef9d78e3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 17:39:29 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 17:39:29 2014 -0700"
      },
      "message": "Switch to OpenBSD stdio wide printf functions.\n\nChange-Id: Icf4f8685d021ec6b7482ca1cc021ce8184098e4a\n"
    },
    {
      "commit": "c932225e1061dc57fc4bf2d6203d9737f4f989fa",
      "tree": "706ee20cd230b2f278e0756ef3d4500cbe8039e2",
      "parents": [
        "c19c8e6f7125984d04c9e4e05ac130b43d1cd13c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 17:08:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 17:08:03 2014 -0700"
      },
      "message": "Switch to OpenBSD stdio wide get/put functions.\n\nChange-Id: I71f8769cdea874e55d397ca7682d9d4e659d3dcb\n"
    },
    {
      "commit": "01ae00f3170ad0e36c1657f6ff8c89dfa730fd37",
      "tree": "ad9cd6e6b1ee5b01dcc03f09495ee786ea0a12ec",
      "parents": [
        "c6e563c87a7d8329607bccbc5c4a61c4e1180507"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 16:28:56 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 16:28:56 2014 -0700"
      },
      "message": "Switch to the OpenBSD implementations of the wide scanf functions.\n\nThis also gets us the C99 wcstoimax and wcstoumax, and a working fgetwc and\nungetwc, all of which are needed in the implementation.\n\nThis also brings several other files closer to upstream.\n\nChange-Id: I23b025a8237a6dbb9aa50d2a96765ea729a85579\n"
    },
    {
      "commit": "770491fb4ff85891bbe71aaf4dcec7f22e53abdb",
      "tree": "26785c0a2a0116b48dbab002c915e26a7dc4c113",
      "parents": [
        "55cd82762f3173247dc7e0eae2826aa24d22213a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 16:05:58 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 16:05:58 2014 -0700"
      },
      "message": "Fix build (signed char issue).\n\nChange-Id: I05d78f4c1599ed9a0c1285f9eb1e89bc2f55c24d\n"
    },
    {
      "commit": "3d7a0d9b08ecab054b2dff8332507644de3690b0",
      "tree": "b6c4f27e3abdd6590a452c978048ae21d934da09",
      "parents": [
        "07bab525e24725aaacd71e7cc63dfc31d48ba8a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 14:46:56 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 29 14:53:11 2014 -0700"
      },
      "message": "Switch to the OpenBSD wcsto* functions.\n\nThis replaces a partial set of non-functional functions with a complete\nset of functions, all of which actually work.\n\nThis requires us to implement mbsnrtowcs and wcsnrtombs which completes\nthe set of what we need for libc++.\n\nThe mbsnrtowcs is basically a copy \u0026 paste of wcsnrtombs, but I\u0027m going\nto go straight to looking at using the OpenBSD UTF-8 implementation rather\nthan keep polishing our home-grown turd.\n\n(This patch also opportunistically switches us over to upstream btowc,\nmbrlen, and wctob, since they\u0027re all trivially expressed in terms of\nother functions.)\n\nChange-Id: I0f81443840de0f1aa73b96f0b51988976793a323\n"
    },
    {
      "commit": "0a5e26da1eae6b75a89695faf2e057c5c4717721",
      "tree": "6acf926417ef08935bfc581dc9ebadffaccdc0e8",
      "parents": [
        "0fd2e87a0cac56f772fe6fac4cd32de8a656a406"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 28 17:51:13 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 28 17:51:13 2014 -0700"
      },
      "message": "Add mbtowc and fix mbrtowc.\n\nChange-Id: I48786cd82587e61188d40f6fd6e11ac05e857ae9\n"
    },
    {
      "commit": "d299bcfdad959a3a0adf1683605b15a1c3b3ab66",
      "tree": "64549438175087f42b296e1b3143847666eb309c",
      "parents": [
        "3ac3f3fd0cab7b4ace8e15fd90ea869b26449df5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 28 16:28:51 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 28 16:46:24 2014 -0700"
      },
      "message": "Replace our broken wcswcs with the working upstream one.\n\nChange-Id: I2952684df5674d10f0564d92c2cd42597725c0e3\n"
    },
    {
      "commit": "1b836ee6f8e5c0f61d67c1f014819a066366ab6f",
      "tree": "95b0a2f8862ab866a65b78d7da9fe411011b79c8",
      "parents": [
        "b88da06580a22d9a1ee5a1c573c49e89207bc71b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 18 13:32:33 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 18 13:32:33 2014 -0700"
      },
      "message": "Fix a wchar.wcstombs_wcrtombs test failure.\n\nLooks like I screwed up a last-minute refactor and didn\u0027t re-run the tests.\n\nChange-Id: I90a710ae66a313a9812859650aa0b4e8c6bc57f9\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": "40b05791278f9ac6ff842670e80899c7cd15276f",
      "tree": "ebd30077b1653e03543662c2c6986a681c2eea72",
      "parents": [
        "a13c7fd3b34c1deb6592a75e79df9fe44dbf4d88"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 15 12:04:05 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 15 12:04:05 2014 -0700"
      },
      "message": "Add iswblank for libcxx.\n\nWe have similar degenerate implementations for all the other isw* functions,\nso it\u0027s weird to exclude just one.\n\nChange-Id: I659b97930e68598826c4882bb59f4146870fb6a0\n"
    },
    {
      "commit": "77e944fd46728075fe632bcb5211da9daf5b7e68",
      "tree": "078c4ed4dcd4a8d857aa948de76dec223c588e0d",
      "parents": [
        "dc5fcf3620bfc221954b3d42f459bfdcf8f48216"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 04 17:34:51 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 07 14:29:28 2014 -0700"
      },
      "message": "Implement wctomb(3) for ltrace.\n\nThis is an implementation in the style of the rest: char \u003d\u003d byte.\n\nWe might want to come back and implement UTF-8, but this is enough for ltrace.\n\nBug: 13747066\nChange-Id: Ib2b63609c9014fdef9a8491e067467c4fc5ae3cc\n"
    },
    {
      "commit": "29c7f0b4d18f812267c2194b85204e19e41d0387",
      "tree": "e915e00f3bd7c3e0a05fe3e0109b412dfc501d5d",
      "parents": [
        "5a9911e94086a15a7f2d5a7c9173847f123a46ea"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 22 17:05:27 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 22 17:05:27 2012 -0700"
      },
      "message": "Move setlocale(3) and the wchar stubs over to .cpp.\n\nAlso separate out the C++ files so we can use -Werror on them. I\u0027d\nrather wait for LOCAL_CPPFLAGS to be in AOSP, but this also lets us\nsee which files still need to be sorted into one bucket or the other.\n\nChange-Id: I6acc1f7c043935c70a3b089f705d218b9aaaba0a\n"
    }
  ]
}
