)]}'
{
  "log": [
    {
      "commit": "d065c0489ed053fab047c88edde3335f7a5e961a",
      "tree": "742aceb1105a46504f739f4a4594e5ecce6321af",
      "parents": [
        "984b4e9ae1d99c86785c7e98a3fa28a60ca46962"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 01 19:02:44 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 01 19:11:28 2020 -0700"
      },
      "message": "Incorporate upstream\u0027s strptime %Z/%z support.\n\nI made toybox use strptime %Z recently (so that it can parse the default\nPOSIX date(1) output), forgetting that bionic\u0027s strptime(3) doesn\u0027t\nsupport %Z. Neither does glibc, for that matter; the toybox change works\non glibc effectively by accident --- glibc just ignores the next word\nwhen parsing %Z and assumes that the current time zone ($TZ) is\nappropriate. Which it is for the only obvious use case of \"round trip\ndate(1) output\".\n\nThe related %z is potentially quite a bit more useful in general (parsing\nany valid RFC822 time zone), though sadly not useful for the toybox case\nthat prompted.\n\nEvery time I touch this file I promise that I\u0027ll actually get us back in\nsync with upstream, and every time I fail to get round to it. Maybe\n2020 or 2021 will finally be the year...\n\nAlso add corresponding tests.\n\nBug: https://b/167455975\nTest: treehugger\nChange-Id: I13a7fb7e3ad01ae855750b9314d2eec661fe034f\n"
    },
    {
      "commit": "9b7338c6bbf58c0e3dfb35d1808d348ea08cf936",
      "tree": "5c9c56085ccf91ca8c46ddeb9d031db701d31fb0",
      "parents": [
        "4378ced55dbb8112e06a152d857eb7a58b962585",
        "2b76a94c6883bca5aa117f4a882c2b53e0b40e2e"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Jul 22 09:50:10 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 22 09:50:10 2020 +0000"
      },
      "message": "Merge \"Track name changes in the tzdata format\""
    },
    {
      "commit": "528e29d91cbe07df64a744643bd5f418aa861ad5",
      "tree": "3dbbdc3f8eee6a1f0de0189faed673d06447dc25",
      "parents": [
        "c17236ee78e49af1266783fb55c91f69f053689f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 22 12:55:12 2020 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 22 12:55:12 2020 -0700"
      },
      "message": "Simplify tzdata fallback logic.\n\nIt\u0027s a historical accident that we try all the other files even if a\nhigher-priority file doesn\u0027t contain the sought-for olson id. Stop\ndoing that.\n\nAlso remove a TODO that has never been warranted, and add one that it\nwill be many years before anyone can do anything about it, but by that\ntime the historical knowledge may have been lost.\n\nBug: http://b/159613340\nTest: treehugger\nChange-Id: I873579268753c84b0bb721ea56f71ba64506d45a\n"
    },
    {
      "commit": "2b76a94c6883bca5aa117f4a882c2b53e0b40e2e",
      "tree": "04b331df3d57c805bd9cb3c19fc8b778aeb8ad4d",
      "parents": [
        "867b46a2ca6d8ebd9477878ce55c81de020b74cd"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu May 21 14:53:58 2020 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu May 21 14:59:19 2020 +0100"
      },
      "message": "Track name changes in the tzdata format\n\nThe tzdata format has changed:\n\nFirstly, there is now a \"final_offset\", which serves as a pointer to the\nbeginning of the section after the last known section. The pointer means\nthat file size is no longer a factor when reading the last section and\nnew sections could be added to the end of the file in future in a\nbackwards compatible way.\n\nSecondly, since nothing uses zone.tab on Android it is being removed and\nthe zonetab_offset is replaced by final_offset.\n\nThe net effect for bionic is zero besides some comment / name changes.\n\nTest: build only\nChange-Id: Ia315083879c891f2d3fc84cf48e304c323ca89f2\n"
    },
    {
      "commit": "41636ca1ac511e0c478017e5812511aa518bca58",
      "tree": "5cb686b3291a041a18b0c5518cffeff50e6e9625",
      "parents": [
        "1069236349eb7a730fcc4aebd14a579cfe49f661"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Mon Jun 10 12:20:21 2019 +0100"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Mon Jun 10 15:09:15 2019 +0100"
      },
      "message": "Remove bionic refs to runtime module tz files\n\nThe tzdata file is being removed from the runtime mainline module\nin an upcoming commit. This commit removes the bionic references\nto it.\n\nThis commit also contains general comment tidy-ups.\n\nBug: 132168458\nTest: build only\nChange-Id: I83cd9ff756b36e1d1222b7830f97c8bde2885ce4\n"
    },
    {
      "commit": "a1fb15bb67bcdf426c012919c096e7235b551f40",
      "tree": "0410e1c0d036b886cb97c315a67ebc828a5b64fb",
      "parents": [
        "e08288465ece24860d61788b975a8267a4594379"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 26 19:07:40 2019 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 26 19:07:40 2019 -0700"
      },
      "message": "strptime: support everything that strftime supports.\n\nOur strptime was missing `%F`, `%G`, `%g`, `%P`, `%u`, `%V`, and\n`%v`. Most of these are already supported upstream (and I\u0027ve just pulled\ntheir current implementation), but some aren\u0027t. We\u0027re horribly out of\nsync anyway, so I\u0027ll upstream the missing pieces and then try to get us\nback in sync later.\n\nTest: new tests, but originally found by toybox trying to use %F\nChange-Id: Ib1a10801a7a3b9c9189440c3b300109bde535fd9\n"
    },
    {
      "commit": "81b3bdd6815b7a4c9b2c7638ce2ab61796bfae93",
      "tree": "c29e4cd069966a780620610d06d37cb198cdce6b",
      "parents": [
        "432db6cfafae810f94edcfa1b311b14a6e9a8407"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Mar 13 15:22:47 2019 +0000"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Mar 13 15:22:47 2019 +0000"
      },
      "message": "Use the ANDROID_TZDATA_ROOT environment variable\n\nTo mirror device code more closely, look for time zone data using\nANDROID_TZDATA_ROOT on host. For device usecases the path is still\nhardcoded.\n\nBug: 128422035\nTest: build only\nChange-Id: I5762745349338bcc3e3a173c1c9b18ea5a3324dd\n"
    },
    {
      "commit": "2e967fcbab846cb21412ab0a72b3bcc6ad0ce482",
      "tree": "a4181b96bcdf2e64583caa61bdf531d3121b9c9e",
      "parents": [
        "c975355066daf0b3012d236aa4e726b0d3d7e06a"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Fri Dec 14 16:02:07 2018 +0000"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Mon Jan 07 21:08:37 2019 +0000"
      },
      "message": "Update the \"host\" bionic code tzdata lookup logic\n\nThe \"if defined(__ANDROID__)\" else branch is there to support\nbionic when running on host environments.\n\nThe code now checks the\n${ANDROID_RUNTIME_ROOT}/etc/tz/tzdata path as well.\n\nThis is similar to the current on-device expectations.\n\nEventually, we may remove the /system / ANDROID_ROOT cases.\n\nBug: 119293618\nTest: build only\nChange-Id: I8310f7b5a1c14567a648673970c636c7c84ff818\n"
    },
    {
      "commit": "a50e51ac966579a384c72e3b2ed680e5c9f8fed1",
      "tree": "449c8157060a023e98e765fc14f82fc855362b87",
      "parents": [
        "9268977f2d4e553342dffc9f1a20d72bd813821c"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Mon Nov 12 18:45:57 2018 +0000"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Fri Dec 07 09:14:03 2018 +0000"
      },
      "message": "Find tzdata in the runtime module before /system\n\nLook for the tzdata file in the runtime module before looking\nin /system. It is still an open question how the removal of\ntzdata will be handled, if at all. Until it is worked out it\nwill be duplicated.\n\nBug: 119293618\nBug: 119390260\nTest: build / boot\nChange-Id: I7e14ef41d0ec226caa595c56be61df5ecf50c382\n"
    },
    {
      "commit": "9268977f2d4e553342dffc9f1a20d72bd813821c",
      "tree": "1b717cfb4fbdb5867160d72d06f97e4486df2dda",
      "parents": [
        "31105c8dd8f4b57b3244aca23ba377c1190f3a6b"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Dec 06 14:33:12 2018 +0000"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Thu Dec 06 14:33:12 2018 +0000"
      },
      "message": "Track move of APEX module tz files under etc/tz\n\nThe same prebuilts will be used in both runtime and time zone\nmodules. Having the rules put the files in etc/tz/ will make\nthem more appropriate for the runtime module.\n\nBug: 119026403\nTest: build /boot only\nChange-Id: Ia1370457e9d1547b35ed56bb385213d3727c8b9a\n"
    },
    {
      "commit": "fd522d01321df225c5e376063dd5154d1e7bc8c5",
      "tree": "9291f83cf39f696cf9cbd89d80c9581ae7cf8ccf",
      "parents": [
        "0c39bd468d3aa19b3e27937b36b101cc4aa65dab"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Nov 07 15:42:43 2018 +0000"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Nov 07 15:42:43 2018 +0000"
      },
      "message": "Finalize the name of the apex package\n\nThe package name in the manifest.json is changing to\nremove apex so the hardcoded path must change.\n\nBug: 119026403\nTest: build\nChange-Id: I906b595a1325b40f8af8c37d7d08cd543c988cc8\n"
    },
    {
      "commit": "7dfeaf896d598f823eda79a238fc9902ba7d4c06",
      "tree": "ff60ccd8afccda2a11152affb576d6a7136d9bb7",
      "parents": [
        "e898a17e8f2bf30506642be8106b1f8a6de61151"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Tue Oct 30 20:19:35 2018 +0000"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Tue Oct 30 20:19:35 2018 +0000"
      },
      "message": "Changes to support loading tz data from APEX\n\nThe changes needed to pick up time zone data files from\na mounted APEX directory. Code that looks for time zone\ndata now looks in a new location after checking for\ndata installed by the time zone updates via APK feature.\n\nThis hasn\u0027t been tested in combination with a real APEX but\nit shouldn\u0027t do anything bad if the new path does not exist.\n\nBug: 115612964\nTest: CTS: run cts-dev -m CtsBionicTests\nTest: Build / boot without APEX support\nChange-Id: I56ae50e26f2cbfa0e537029a0e6f679fa2394327\n"
    },
    {
      "commit": "81baaf272cb79c69ca9b0969466f5f946c923a2b",
      "tree": "2d9d27f9d151bc6cc9d55b1fb5d14c990a4dced6",
      "parents": [
        "bf6c0c8eaf755f5d1686b5022ee4c6d9eaf68686"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 28 15:22:48 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 28 16:29:40 2018 -0800"
      },
      "message": "Add strptime %s.\n\nBug: https://issuetracker.google.com/37128336\nTest: ran tests\nChange-Id: I1a660dbdb5f008e42226f26489f0f01b6db18025\n"
    },
    {
      "commit": "3376c23daceddd603478347c00163f39e7c9e1ee",
      "tree": "d8a6f5383a285783630af07f03e11a5a06677b10",
      "parents": [
        "3374d0cabb973ff2b73ad8cd909389bdeed18658"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 23:14:12 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 23:14:12 2018 -0800"
      },
      "message": "Add remaining _l function stubs.\n\nBug: http://b/65595804\nTest: ran tests\nChange-Id: I3bea3af20b354d1f0d3e05fd35421a9045f29020\n"
    },
    {
      "commit": "1c78cb0fee257cdee13acceaee3de88e40d77e1b",
      "tree": "c6bf25c41c4e4d863871f4a7cc191542ffbe89f1",
      "parents": [
        "983c2da84cdcd0171b7f726b78990cabd0a58f49"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 11 11:25:25 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 11 11:25:52 2017 -0700"
      },
      "message": "Add missing includes.\n\nTest: mma\nBug: None\nChange-Id: I0221b213e08d07cc5ac0b704a86e98ae8c0f456f\n"
    },
    {
      "commit": "35dfaa89de65fdd8ca35ad818c24d80611c60a50",
      "tree": "4d152373102ed5a234b148d0c3fc8dc3d0b89046",
      "parents": [
        "da08de89b4bef0eb065ae4736cf68d35dba5cf06"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 14 12:58:24 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 14 12:58:56 2017 -0700"
      },
      "message": "Fix incorrect check.\n\nBug: 37347846\n\nTest: No error on data +%s\nChange-Id: I7e88ea842af29ce4a366c25a3f79c09b63a25004\n"
    },
    {
      "commit": "a01cbaa87d5126a7757ecf96dd6b691a60bce283",
      "tree": "e4397e58740ad719c5068c75aebb184c37186dd8",
      "parents": [
        "735f41afc43bb83ed738be569b50c6039069e611"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 12 12:03:44 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 12 14:06:29 2017 -0700"
      },
      "message": "Address review comments on the bionic tzdata loader.\n\nBug: N/A\nTest: ran tests\nChange-Id: Ia7e27a2f93fe814e46b0912ce358b72651192173\n"
    },
    {
      "commit": "0e8616a37ab3af8567c130de8e83b968ffca79a6",
      "tree": "a7d0ce44b22d59d19c6ffe22882598b5b1402d67",
      "parents": [
        "2d389ffee98b6f480f4340ec408d37457e02fbd7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 11 14:44:51 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 11 14:44:51 2017 -0700"
      },
      "message": "Move localtime.c over to CachedProperty.\n\nSince localtime.c is C, this entails pulling our code out into its own\nC++ file, which we should probably have done years ago anyway.\n\nBug: N/A\nTest: ran tests, and manually tested via Settings\nChange-Id: Ifc787a553e8f739a87641a2d35321aca40a47286\n"
    },
    {
      "commit": "14eb5abc20038acfbba1c199641c10dc84ee251e",
      "tree": "8375e56068427fa6c85ca131abcb3010c9582571",
      "parents": [
        "7cf467bd23cec1ee04713aa7f520fd1414011d24"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 31 15:35:21 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 31 23:23:29 2017 -0700"
      },
      "message": "Only use environment variables on the host.\n\nIt\u0027s faster and safer to skip them on the device, where we know where\neverything is anyway.\n\n(cherrypick of cf6365690cc68bdd7e16648fb7881ba0b5cae93d.)\n\nBug: http://b/36807787\nTest: ran tests\nChange-Id: I0bb7879cc46f194152c67ddaf072cbebb424f789\n"
    },
    {
      "commit": "ea87716696bf635706b6f3fa56b8a145add83aff",
      "tree": "9d8552a565789486c9d0f7e9057815924c946b90",
      "parents": [
        "940d460f59e566f2d84ea3e114074a50996e76b3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 11 14:34:16 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 11 14:56:04 2017 -0800"
      },
      "message": "localtime_r(3) should act as if it calls tzset(3).\n\nSee code comment.\n\nBug: http://b/31339449\nTest: ran tests \u0026 benchmarks\nChange-Id: I6b6a63750ef41664dc4698207e6a53e77cc28cdf\n"
    },
    {
      "commit": "4edd651ed32ba3f09ace7529b5fb85f46cae508f",
      "tree": "46020283bf96ea0bae2e3cb1cc4181a6520197cc",
      "parents": [
        "0bee605aab0668083824473819f0ef2a5a5a45ee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 03 16:46:33 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 03 16:46:33 2016 -0700"
      },
      "message": "Add missing O_CLOEXEC and TEMP_FAILURE_RETRY to localtime.c.\n\nFollow-on change from http://b/31848040.\n\nTest: *time* tests.\nChange-Id: I3f1c9ce19b90f6f8c1ac6e0753e3fed0ff63c0b4\n"
    },
    {
      "commit": "81c46fc10fa60fd341f11024d8d3f26ff2c69082",
      "tree": "3d7ab14836caafda998bbd584d1c26c01858276f",
      "parents": [
        "d6096307991c3bae2b3fcfbab8632e406cc84669"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 03 12:29:30 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 03 12:45:13 2016 -0700"
      },
      "message": "Fix tzdata loading.\n\nAndroid uses one large file of tzdata, so the \"read up to the maximum\npossible length of a valid tzfile\" code in upstream localtime.c is\nbroken: there is always data after the current tzfile (even the\nlast tzfile is followed by the zone.tab data). This patch passes the\nexact length through to the read(2) call so we don\u0027t over-read, rather\nthan have to rewrite upstream code that measures back from the \"end\" of\nthe tzfile.\n\nThe old code failed the existing time.strftime_null_tm_zone test after\nupdating to tzdata2016g.\n\nBug: http://b/31848040\nTest: time.strftime_null_tm_zone\nChange-Id: Iee059b5a8c051bd4952cfd80f02b00d83e489d5e\n"
    },
    {
      "commit": "a9209d7a0ee7ef40f9a14cab2b6756d7e6f8b919",
      "tree": "7bfb6dd09e8ae5b353d512fde83d14053dedec06",
      "parents": [
        "56228373014e5ee0a3ff32930df9cfa05fef7389"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 18:16:47 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 18:27:07 2016 -0700"
      },
      "message": "Fix some easy cases of __ANDROID__ versus __BIONIC__.\n\nWe need to make a clearer distinction for bionic on the host. This patch\ndoesn\u0027t fully address things like \"should host bionic try to talk to netd?\"\nfor now, but is a step in the right direction.\n\nBug: http://b/31559095\nTest: bionic tests.\nChange-Id: I49812f8b75d9d78c4fd8a8ddf5df1201d63771d6\n"
    },
    {
      "commit": "f8ebaa498562cfb199a9b28da5eae2770f9b3163",
      "tree": "de04a55521fac877356a92a925b3b5487d39d46c",
      "parents": [
        "cea5c8a6099cff4f3ceccb3309a522bb1cf377b4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 16:28:36 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 12 16:28:36 2016 -0700"
      },
      "message": "Fix mktime\u0027s errno behavior.\n\nDon\u0027t touch errno on success, do set it to EOVERFLOW (the only allowed errno\nvalue according to POSIX: http://pubs.opengroup.org/onlinepubs/9699919799/functions/mktime.html)\non failure.\n\nBug: http://b/30477946\nChange-Id: Ia915c7b9c3bfcd2f9025530cf5b068fe4dd4fd9e\n"
    },
    {
      "commit": "0a610d00fee344f804d3338c880d73d2de5db143",
      "tree": "9f7c63a66f0fdf057b5b78d4c250ab80152e0659",
      "parents": [
        "4bc6eea83e127a50d4763f067486ec79ed4e61a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 29 14:04:17 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 29 14:04:17 2016 -0700"
      },
      "message": "Upgrade to tzcode-2016f.\n\nNo significant changes other than a default implementation of strftime_l.\n\nChange-Id: I6edd2c03e5e7559f012c0c87d43f7109d641d3ca\n"
    },
    {
      "commit": "3e3f4a51b8a846ce6ae010795892addf9e428137",
      "tree": "986bf55557cca5267141c10c4f8087c9e3773a6f",
      "parents": [
        "a9fbaee593242b3257819c1603cdd157604247e7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 20 17:23:54 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 20 17:23:54 2016 -0700"
      },
      "message": "Treat \"persist.sys.timezone\" as being a Java-format timezone.\n\nPOSIX and Java disagree about the sign in a timezone string like \"GMT+3\".\nThis means that if you set \"persist.sys.timezone\" to such a string, native\ncode and Java code disagree about what time it is. Resolve this by\ntranslating to POSIX form for native code.\n\nBug: http://b/25463955\nChange-Id: I7c08c459dd8514348a12ce419edcbfbfe8f6d327\nTest: manually tested with setprop and date.\n"
    },
    {
      "commit": "76dfa6e351952e60893e236022df54a23a558b65",
      "tree": "7b5232d291adc3bea128abef57bf78e930a970ad",
      "parents": [
        "74d7aa1c341055474e03d2cc9af0aea01bfb5758"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 06 09:15:02 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 06 09:15:02 2016 -0800"
      },
      "message": "Remove mktime_tz.\n\nBug: http://b/15765976\nChange-Id: Ifc8cd19ae621e611d66173ae927ef9a0445965c1\n"
    },
    {
      "commit": "d1c28a361b66f8a131fc277df455cb6835a5327e",
      "tree": "b71291bf89809dba252f4a9f17f797884dda2e5a",
      "parents": [
        "5780f9d80963fbe7b93f501dd3dd7edc7fab46b0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 13 08:38:48 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 13 08:38:48 2015 -0800"
      },
      "message": "Improve libc time zone fallback behavior.\n\nWe should fall back to GMT if neither the environment variable nor the\nsystem property is set. This is the case if you wipe a WiFi-only device,\nbecause we currently only take the time zone from cell networks.\n\nBug: http://b/24773112\nChange-Id: I90d236d4d492b6562d75021bd312030b91c1e298\n"
    },
    {
      "commit": "a9cac4c87a4ea3e6d1c0a1159909bf0e209a61a7",
      "tree": "1e70197326b7eed795ce0f4be2785ce2361836d4",
      "parents": [
        "7c10ee9473b5c46da733b2d3d24cf90fb8ac7672"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 12 16:51:31 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 12 16:51:31 2015 -0800"
      },
      "message": "Fix strftime if tm_zone is null.\n\nUpstream tzcode said \"On platforms with tm_zone, strftime.c now assumes it\nis not NULL\". Which is fine for any struct tm generated by tzcode, but not\nnecessarily true of a struct tm constructed by arbitrary code. In particular,\nNetflix on Nexus Player was failing to start because they format \"%Z\" with\na struct tm whose tm_zone is null (the other fields are valid, but, yeah,\nthat\u0027s probably not intentional).\n\nglibc takes a null tm_zone to mean \"the current time zone\", so let\u0027s do that\ntoo. (Historically Android would use the empty string, and POSIX doesn\u0027t\nclarify which of this is the appropriate behavior when tm_zone is null.)\n\nBug: http://b/25170306\nChange-Id: Idbf68bfe90d143aca7dada8607742905188b1d33\n"
    },
    {
      "commit": "384ffe34638c91158465e143ddd867479c89cd52",
      "tree": "c201e3bf320f46dd21b235d8e7d627280fcb8649",
      "parents": [
        "75dd3710e72e819ce6710e93672f937550ed3818"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Nov 02 12:56:37 2015 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Nov 02 12:56:37 2015 -0800"
      },
      "message": "Fix comment to reflect the actual reality.\n\nThe original comment implied that Android 32 bit was the only one\nusing a bad time_t, but it turns out 32 bit glibc has the same time_t\nas Android. Update the comment to reflect this reality.\n\nChange-Id: I72cdd2c677a6521f7b43d4695a52fd8fdc3305bd\n"
    },
    {
      "commit": "9fb22a3ec4ec5217fc29bb3ee3a0f1076098151f",
      "tree": "f5dabc7347b8aaa83675e4468edbccc657ae2fca",
      "parents": [
        "cc56abbb007e090b830f510df6cb300ae12e1a89"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 07 17:13:40 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 09 15:15:39 2015 -0700"
      },
      "message": "Sync with upstream tzcode (2015g).\n\nThis is quite a large patch because we haven\u0027t updated for some time,\nbut the good news is that upstream is now thread-safe so a lot of our\nchanges go away in this update and the remaining diff is a lot smaller.\n\n(Note that our whitespace still doesn\u0027t match upstream. I use diff -wub\nto compare. Upstream doesn\u0027t even really have a consistent style. New\ncode seems to be two spaces, old code tabs.)\n\nFrom the intervening changelogs (eliding the changes that only affected\nthe tools, which we don\u0027t use):\n\n2014a:\n     An uninitialized-storage bug in \u0027localtime\u0027 has been fixed.\n     (Thanks to Logan Chien.)\n\n2014b:\n     \u0027zic\u0027 and \u0027localtime\u0027 no longer reject locations needing four\n     transitions per year for the forseeable future.  (Thanks to Andrew\n     Main (Zefram).)\n\n2014c:\n     \u003cNone\u003e\n\n2014d:\n     \u003cNone\u003e\n\n2014e:\n     \u003cNone\u003e\n\n2014f:\n     \u0027localtime\u0027, \u0027mktime\u0027, etc. now use much less stack space if\n     ALL_STATE is defined.  (Thanks to Elliott Hughes for reporting the\n     problem.)\n\n     Some lint has been removed when using GCC_DEBUG_FLAGS with GCC\n     4.9.0.\n\n2014g:\n     Unless NETBSD_INSPIRED is defined to 0, the tz library now\n     supplies functions for creating and using objects that represent\n     time zones. The new functions are tzalloc, tzfree, localtime_rz,\n     mktime_z, and (if STD_INSPIRED is also defined) posix2time_z and\n     time2posix_z.  They are intended for performance: for example,\n     localtime_rz (unlike localtime_r) is trivially thread-safe without\n     locking.  (Thanks to Christos Zoulas for proposing NetBSD-inspired\n     functions, and to Alan Barrett and Jonathan Lennox for helping to\n     debug the change.)\n\n     If THREAD_SAFE is defined to 1, the tz library is now thread-safe.\n     Although not needed for tz\u0027s own applications, which are single-threaded,\n     this supports POSIX better if the tz library is used in multithreaded apps.\n\n     Some crashes have been fixed when zdump or the tz library is given\n     invalid or outlandish input.\n\n     The tz library no longer mishandles leap seconds on platforms with\n     unsigned time_t in time zones that lack ordinary transitions after 1970.\n\n     The tz code now attempts to infer TM_GMTOFF and TM_ZONE if not\n     already defined, to make it easier to configure on common platforms.\n     Define NO_TM_GMTOFF and NO_TM_ZONE to suppress this.\n\n     Unless the new macro UNINIT_TRAP is defined to 1, the tz code now\n     assumes that reading uninitialized memory yields garbage values\n     but does not cause other problems such as traps.\n\n     If TM_GMTOFF is defined and UNINIT_TRAP is 0, mktime is now\n     more likely to guess right for ambiguous time stamps near\n     transitions where tm_isdst does not change.\n\n     If HAVE_STRFTIME_L is defined to 1, the tz library now defines\n     strftime_l for compatibility with recent versions of POSIX.\n     Only the C locale is supported, though.  HAVE_STRFTIME_L defaults\n     to 1 on recent POSIX versions, and to 0 otherwise.\n\n     tzselect -c now uses a hybrid distance measure that works better\n     in Africa.  (Thanks to Alan Barrett for noting the problem.)\n\n     The C source code now ports to NetBSD when GCC_DEBUG_FLAGS is used,\n     or when time_tz is defined.\n\n     When HAVE_UTMPX_H is set the \u0027date\u0027 command now builds on systems\n     whose \u003cutmpx.h\u003e file does not define WTMPX_FILE, and when setting\n     the date it updates the wtmpx file if _PATH_WTMPX is defined.\n     This affects GNU/Linux and similar systems.\n\n     For easier maintenance later, some C code has been simplified,\n     some lint has been removed, and the code has been tweaked so that\n     plain \u0027make\u0027 is more likely to work.\n\n     The C type \u0027bool\u0027 is now used for boolean values, instead of \u0027int\u0027.\n\n     The long-obsolete LOCALE_HOME code has been removed.\n\n     The long-obsolete \u0027gtime\u0027 function has been removed.\n\n2014h:\n     The tz library\u0027s localtime and mktime functions now set tzname to a value\n     appropriate for the requested time stamp, and zdump now uses this\n     on platforms not defining TM_ZONE, fixing a 2014g regression.\n     (Thanks to Tim Parenti for reporting the problem.)\n\n     The tz library no longer sets tzname if localtime or mktime fails.\n\n     An access to uninitalized data has been fixed.\n     (Thanks to Jörg Richter for reporting the problem.)\n\n     When THREAD_SAFE is defined, the code ports to the C11 memory model.\n     A memory leak has been fixed if ALL_STATE and THREAD_SAFE are defined\n     and two threads race to initialize data used by gmtime-like functions.\n     (Thanks to Andy Heninger for reporting the problems.)\n\n2014i:\n     The time-related library functions now set errno on failure,\n     and some crashes in the new tzalloc-related library functions\n     have been fixed.  (Thanks to Christos Zoulas for reporting\n     most of these problems and for suggesting fixes.)\n\n     If USG_COMPAT is defined and the requested time stamp is\n     standard time, the tz library\u0027s localtime and mktime functions\n     now set the extern variable timezone to a value appropriate\n     for that time stamp; and similarly for ALTZONE, daylight\n     saving time, and the altzone variable.  This change is a\n     companion to the tzname change in 2014h, and is designed to\n     make timezone and altzone more compatible with tzname.\n\n     The tz library\u0027s functions now set errno to EOVERFLOW if they\n     fail because the result cannot be represented.  ctime and\n     ctime_r now return NULL and set errno when a time stamp is out\n     of range, rather than having undefined behavior.\n\n     Some bugs associated with the new 2014g functions have been\n     fixed.  This includes a bug that largely incapacitated the new\n     functions time2posix_z and posix2time_z.  (Thanks to Christos\n     Zoulas.)  It also includes some uses of uninitialized\n     variables after tzalloc.  The new code uses the standard type\n     \u0027ssize_t\u0027, which the Makefile now gives porting advice about.\n\n2014j:\n     \u003cNone\u003e\n\n2015a:\n     tzalloc now scrubs time zone abbreviations compatibly with the way\n     that tzset always has, by replacing invalid bytes with \u0027_\u0027 and by\n     shortening too-long abbreviations.\n\n2015b:\n     Fix integer overflow bug in reference \u0027mktime\u0027 implementation.\n     (Problem reported by Jörg Richter.)\n\n     Allow -Dtime_tz\u003dtime_t compilations, and allow -Dtime_tz\u003d... libraries\n     to be used in the same executable as standard-library time_t functions.\n     (Problems reported by Bradley White.)\n\n2015c:\n     \u003cNone\u003e\n\n2015d:\n     \u003cNone\u003e\n\n2015e:\n     \u003cNone\u003e\n\n2015f:\n     \u003cNone\u003e\n\n2015g:\n    localtime no longer mishandles America/Anchorage after 2037.\n    (Thanks to Bradley White for reporting the bug.)\n\n    On hosts with signed 32-bit time_t, localtime no longer mishandles\n    Pacific/Fiji after 2038-01-16 14:00 UTC.\n\n    The localtime module allows the variables \u0027timezone\u0027, \u0027daylight\u0027,\n    and \u0027altzone\u0027 to be in common storage shared with other modules,\n    and declares them in case the system \u003ctime.h\u003e does not.\n    (Problems reported by Kees Dekker.)\n\n    On platforms with tm_zone, strftime.c now assumes it is not NULL.\n    This simplifies the code and is consistent with zdump.c.\n    (Problem reported by Christos Zoulas.)\n\nChange-Id: I9eb0a8323cb8bd9968fcfe612dc14f45aa3b59d2\n"
    },
    {
      "commit": "d0578949ace9444e07e254f5baa592283baba304",
      "tree": "b8ff7f069442c04b7853acb41fb0bac73269ec55",
      "parents": [
        "4a65557d0ebd167e557958687f50510742cb238a"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 02 13:15:07 2015 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Oct 02 13:30:34 2015 -0700"
      },
      "message": "bionic: tzset running hot\n\nlogd makes a non-insignificant number of calls to localtime, 3% of\nthe time in logd is spent performing __system_property_get within the\ncontext of tzset_locked().\n\nBug: 23685592\nChange-Id: I75f8c2d436b60374e92c166b87393abda9487af7\n"
    },
    {
      "commit": "23360cc4980213d375718b7c124ecc0a21a1b1b7",
      "tree": "c633c09e1e5e99f9abfd7d68fc4f13b7bb74a744",
      "parents": [
        "8b279eadd3a635c31df9c570ab2144212bfd07cc"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Tue Sep 29 09:28:41 2015 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Tue Sep 29 10:04:54 2015 -0700"
      },
      "message": "Remove invalid left shifts of -1.\n\nBug: 24492248\n\nShifting sign bits left is considered undefined behavior, so we need to\nswitch these uses to unsigned equivalents. The time_t-related code is\nupdated relative to upstream sources.\n\nChange-Id: I226e5a929a10f5c57dfcb90c748fdac34eb377c2\n"
    },
    {
      "commit": "1f95ffecc22995abe6ac8cdd6dbb74f6f9a42b2f",
      "tree": "e316bbe9ea202ff9099d3dead7f4e68dd11c15e9",
      "parents": [
        "dd5c92d4b0cb6c43002112ab50c1df73d06ab2aa"
      ],
      "author": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Mon Mar 02 17:43:42 2015 +0000"
      },
      "committer": {
        "name": "Neil Fuller",
        "email": "nfuller@google.com",
        "time": "Wed Mar 25 16:08:37 2015 +0000"
      },
      "message": "Changes to re-enable overrides for tz data\n\nBug: 10637303\nChange-Id: I5d525b66cf30d34b421803b876445596bed8d64d\n"
    },
    {
      "commit": "154e2026c83575eb17101df3a8d1192e305588d4",
      "tree": "754fa359b8acbe2be4049c45d8976056dc7c95cd",
      "parents": [
        "38569312bc5a3a4688d45997d81b59abb0a60825"
      ],
      "author": {
        "name": "Satoru Takeuchi",
        "email": "satoru.x.takeuchi@sonymobile.com",
        "time": "Tue May 27 17:04:04 2014 +0900"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 14 18:13:07 2014 -0800"
      },
      "message": "libc: Fix mktime returns an uncorrect time in empty TZ case\n\nThe mktime API returned an uncorrect time when TZ is set as empty.\nA timezone UTC/GMT+0 should be implied in the empty case. However\nmktime keeps previous information about timezone. If mktime was called\nwith a timezone which has DST before, the \"defaulttype\" member of\n\"state\" structure wouldn\u0027t be 0. Then it would be used next time,\neven though UTC/GMT+0 doesn\u0027t have DST.\n\nAdded initialization of the \"defaulttype\" in the empty TZ case.\n\nChange-Id: Ic480c63c548c05444134e0aefb30a7b380e3f40b\n"
    },
    {
      "commit": "e24bf5d7b972597ba5b7b38ca777d8eae98332dd",
      "tree": "5e289f6e3f4b679029f425a73fab0704f03425d6",
      "parents": [
        "f96eaf6202351a1b5153cfaad3137e4b63846f8f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 27 13:38:21 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 28 09:34:09 2014 -0700"
      },
      "message": "Disable tzdata in $ANDROID_DATA.\n\n(cherry picked from 4c30130a2155c37e80af4c3b53bf4f6ce832e760.)\n\nBug: 18139284\nChange-Id: I2670dc1791d635139a5d39a438dc08777439476b\n"
    },
    {
      "commit": "ca75f9cdeb57d02108924f0ca4043956039e8eaf",
      "tree": "8bd5664123e19184cb5b90aea57407cc007344ed",
      "parents": [
        "72d72d91262fabe6bc169618ef3acb0721441cf0"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 08 17:10:26 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Oct 08 17:10:26 2014 -0700"
      },
      "message": "Use snprintf(3) instead of sprintf(3).\n\nThis change should probably be made upstream as well, but they have a\nnote about not using it because it isn\u0027t available on all systems.\n\nChange-Id: I6d8404c031bd2f486532ced55d94bbb4a4cd2e71\n"
    },
    {
      "commit": "13bab43337242094663d6f699ad996ddc99ec582",
      "tree": "d6d1c009d71464edc399a0a4c74c08a4998cab43",
      "parents": [
        "3a238ae7620298608e1d463901051c397e4f8a2f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 06 15:23:11 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 06 17:31:48 2014 -0700"
      },
      "message": "Fix the tzdata update tools.\n\nThe recent libcore ZoneInfo changes mean that we can no longer\ncompile libcore\u0027s ZoneInfo against the RI. Luckily, the field in\nour data file that we needed ZoneInfo for isn\u0027t actually used.\nThis change removes our dependence on libcore.\n\nI\u0027ve left the field in to avoid a file format change. We can remove\nthe field if/when we next have a real need to bump the file format.\n\n(cherry-pick of 90cb5ffb85a9bc2e725824b3ca8db932d02c45db.)\n\nBug: 16168653\nChange-Id: Iedad2252c2b49f4d8bb2c7d9078b39b622444ca7\n"
    },
    {
      "commit": "39d903aea901cd29a4eef3a82c2dbda59b5bc292",
      "tree": "0bc1734cb02f86b03c7749e8dfd86af62fa5a59b",
      "parents": [
        "50a9630cc26cbc1e38e3ddc589f04fa5cd91697b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 25 15:50:31 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 25 15:50:31 2014 -0700"
      },
      "message": "Remove localtime_tz and strftime_tz.\n\nThis also brings our copy of strftime.c much closer to upstream, though\nwe still have several GNU extensions and hacks to deal with Android32\u0027s\nbroken time_t.\n\nBug: 15765976\nChange-Id: Ic9ef36e8acd3619504ecc4d73feec2b61fd4dfa1\n"
    },
    {
      "commit": "905e6d58aaf515bf237e62078f8a321920fe4c6b",
      "tree": "07ee9fad11490db7e30bc27e359d5d1adf950cef",
      "parents": [
        "123172ae370fe51e2d1fc26fe0aafa095af52919"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 25 11:55:59 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 25 12:03:51 2014 -0700"
      },
      "message": "Start hiding \"private/bionic_time.h\".\n\nBug: 15765976\nChange-Id: Ibd9cf07067ec8dffe9fda6c3d498d4ab90708220\n"
    },
    {
      "commit": "d10db8261949e4d84b65f5c369153d0ca86ab22c",
      "tree": "f3ec0b9a4e08a39492c86e49f17f1ba192b6182f",
      "parents": [
        "29e3a0e312b7a76b91adfd77a399a390ffaed11d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 19 14:49:30 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 19 14:49:30 2014 -0700"
      },
      "message": "Build tzcode with hidden visibility.\n\nBug: 11156955\nChange-Id: Ib98d837b56cbbdfd01687cb3054fe3103eec0da9\n"
    },
    {
      "commit": "2cb752664bbde379c20931fa330563d775b60033",
      "tree": "edde6cf7ab480d0a9423451a018beeb37c5017f4",
      "parents": [
        "477b45b89d84c9efec95c49a76cacbc9b2d5104c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 19 14:19:24 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 19 14:19:24 2014 -0700"
      },
      "message": "Fix arm64 localtime.c build.\n\nI\u0027m sick of having so many different compilers.\n\nChange-Id: I9088c38df2504e2b827d0ce5ba0fa551ae48f8f9\n"
    },
    {
      "commit": "5f564540a953a670925e058dabc521f68ffb997c",
      "tree": "0269b23ca27a57f847e39f59a6dc439928c4d410",
      "parents": [
        "942fa486f669da8bb5db724d5c4fdc93b4fb65d9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 19 13:54:10 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 19 13:54:10 2014 -0700"
      },
      "message": "Build tzcode with -Werror.\n\nParts of this are just getting us in sync with upstream, but the\n\u0027const\u0027 stuff is our own mess. We should kill the *_tz functions\nand lose this difference from upstream.\n\nChange-Id: I17d26534ed3f54667143d78147a8c53be56d7b33\n"
    },
    {
      "commit": "906eb9999b39edc0d09cd19ae94523e92ed5ad2e",
      "tree": "8a974074c92ba0c372eac8c0c47276fa6bea1c45",
      "parents": [
        "0b09153c12915c6d17434cf9fed2389f6fe4e713"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 18 19:46:25 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 18 19:48:14 2014 -0700"
      },
      "message": "Update localtime.c.\n\nThis brings us closer to upstream\u0027s ToT localtime.c; our main interest\nbeing their alternative fix for the stack usage we addressed in commit\n8a8b0c9bfcd80c67154ed2aca1e60d815c822acb.\n\nBug: 14468519\nChange-Id: Ic28600115afda7f3158d91255edf422678bac082\n"
    },
    {
      "commit": "5204a9e8ca1ca7304db9998dcf3fc5a2d6087662",
      "tree": "af11fa34fe7eb8c84e33c8ce635d19d582a5b98c",
      "parents": [
        "2c02d0057c93bfa6db4b30d8646baeb55d076062"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 11 17:15:56 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 11 17:15:56 2014 -0700"
      },
      "message": "Fix most of the tzcode warnings.\n\nThere\u0027s one left, but that\u0027s not fixed upstream yet.\n\nChange-Id: Iba920cb7b156357c7f5e8220eb55ff1637ff48a1\n"
    },
    {
      "commit": "8a8b0c9bfcd80c67154ed2aca1e60d815c822acb",
      "tree": "01bf8d67716660354043b9521a24cb857167456c",
      "parents": [
        "6897b7b8b95beae120fd53e6fd15921d6420bea7"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 14 16:06:17 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 14 16:50:41 2014 -0700"
      },
      "message": "Do not keep struct state on the stack.\n\nThis structure is huge (~18000 bytes on arm64) and can blow out\nthe stack very easily.\nModify the code to allocate these structures instead of leaving them\non the stack.\n\nBug: 14468519\nChange-Id: I774f71235d896d32a14ab1af06f95ca9ef819f52\n"
    },
    {
      "commit": "1728b2396591853345507a063ed6075dfd251706",
      "tree": "7083cd234073afa5179b94b3d978550c890af90c",
      "parents": [
        "bac795586bbc5dcbe886d8d781710f60c4c19d9b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 10:02:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 10:02:03 2014 -0700"
      },
      "message": "Switch to g_ for globals.\n\nThat\u0027s what the Google style guide recommends, and we\u0027re starting\nto get a mix.\n\nChange-Id: Ib0c53a890bb5deed5c679e887541a715faea91fc\n"
    },
    {
      "commit": "9a5a3e8e74e2c6d7850ab29711189acf0f7378a2",
      "tree": "54310a7a9d342c88ce8f8073b6b90e675641af19",
      "parents": [
        "185dd72a2c487502717903065e46d14039f17826"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 05 20:28:28 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 05 21:19:47 2014 -0700"
      },
      "message": "Fix \u003cmath.h\u003e to quieten most of our warnings.\n\nI\u0027ve reported the wcsftime bug upstream, but we really just want to use -D\nto ensure the buggy code isn\u0027t built. (I\u0027ve also brought our strftime a bit\ncloser to upstream now we have the right define.)\n\nI don\u0027t think upstream is likely to fix all their sign-compare and\nuninitialized warnings, so let\u0027s just silence them.\n\nAs for libm, again upstream isn\u0027t likely to fix all their warnings, and\nsilencing those made the ones that were our fault stand out. I\u0027ve fixed\nour \u003cmath.h\u003e to fix the warnings caused by our lack of definitions for\nthe non-imprecise long-double functions. I checked the C99 standard, and\nall these functions are there.\n\nChange-Id: Iee8e1182c1db375058fb2c451eceb212bab47a37\n"
    },
    {
      "commit": "52defb7c702306d4e81c7089cbadd7a6da1d7b6b",
      "tree": "f392cbb7cee51948dabbebc8baf3793600f9b61a",
      "parents": [
        "629d892d0b5ec061b5260453d72fa54ab3d7ce37"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 05 17:14:02 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 05 17:14:02 2014 -0700"
      },
      "message": "Remove the non-standard time64 stuff for LP64.\n\nWe need a workaround in strftime as long as we still need to support\n64-bit times on LP32.\n\nChange-Id: I8ffb616f6312d4063fb9ea3c36b52653e8f4c5f8\n"
    },
    {
      "commit": "329103d3e2f42d3e35a060c3e0d326d6476eb2ef",
      "tree": "0624fa58c29f43ffe405be7fa47a73f85ad29fae",
      "parents": [
        "f2dc7d17196de9904df67f21aad1525b8568a705"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 25 16:55:04 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 25 21:51:26 2014 -0700"
      },
      "message": "Don\u0027t use so much stack in tzcode.\n\nBug: 14313703\nBug: https://code.google.com/p/android/issues/detail?id\u003d61130\nChange-Id: Id9b240fce20d4a6f2660792070e02b2b5f287655\n"
    },
    {
      "commit": "d51db86aafb988aea04355f2b6a6c925d67e5976",
      "tree": "cb05ec02899511f49e3cdb33913bc4c9f6895a7a",
      "parents": [
        "4ab29a3e4a797cff05a3a1a6fea3db5a800ac5ba",
        "d892892e8e185b9b948dec6a576f6202b186dc9d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 28 18:02:22 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 28 18:02:22 2014 +0000"
      },
      "message": "Merge \"Fix locatime.c indentation after sync\""
    },
    {
      "commit": "4ab29a3e4a797cff05a3a1a6fea3db5a800ac5ba",
      "tree": "7fb8baaf040b129db4ae1dccb0a0df975cf196e3",
      "parents": [
        "e9db4a976f864ef180340fe37c58af93a03daf46",
        "627d37cd1f7bb6680f611dbe5f28b74a086567a7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 28 17:40:08 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 28 17:40:09 2014 +0000"
      },
      "message": "Merge \"Update tzcode to 2013i\""
    },
    {
      "commit": "d892892e8e185b9b948dec6a576f6202b186dc9d",
      "tree": "da597eea02595f5e5af171ef665f0d911522c81f",
      "parents": [
        "627d37cd1f7bb6680f611dbe5f28b74a086567a7"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 28 12:18:53 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 28 17:15:00 2014 +0000"
      },
      "message": "Fix locatime.c indentation after sync\n\nBug: 12246757\nChange-Id: I8186e75f4899161af48cbf66e8f907dac0a326a2\n"
    },
    {
      "commit": "627d37cd1f7bb6680f611dbe5f28b74a086567a7",
      "tree": "9a34c5794b969ec043edbf4a9994618df483376e",
      "parents": [
        "e33454051677cd8953af558b67e525dda2231501"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 28 11:46:03 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Feb 28 14:38:14 2014 +0000"
      },
      "message": "Update tzcode to 2013i\n\nBug: 12246757\nChange-Id: I3d5d2318155b1f54ef80afd58b1e5ca9a6d7018e\n"
    },
    {
      "commit": "fd3a9fb0c3b555d2fc93a6436da840ab4ea2fac1",
      "tree": "b8ddb1c1295a097cc884edc21cfef37c4cb79d30",
      "parents": [
        "e33454051677cd8953af558b67e525dda2231501"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 27 18:18:25 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 27 18:18:25 2014 -0800"
      },
      "message": "Vastly reduce the number of read(2)s done in tzload.\n\nThis costs us about 1000 fewer syscalls, which makes \"adb shell strace date\"\na lot more readable (which is the reason I\u0027ve been meaning to fix this for a\nlong time now), but also actually saves a measurable amount of time.\n\nLonger-term we should try to keep the tzdata mmap(2)ed in like libcore\ndoes.\n\nChange-Id: I1dd9c81968a13d3a6a55ba17f8a7d5c1f38cd103\n"
    },
    {
      "commit": "3073f90b17b1d2899b036e2c45ba5324f8c34298",
      "tree": "30e8014759965fdef25ea659c3418ae3adcf38f0",
      "parents": [
        "000ffd8ab0b4112173ce319869f4111f08fbe975"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 27 17:04:38 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 27 17:04:38 2014 -0800"
      },
      "message": "Fix a leak on error in tzload.\n\nChange-Id: Ib5d9aaa7a618e478ce8e5e82f967cf535bb1a5a3\n"
    },
    {
      "commit": "eb847bc8666842a3cfc9c06e8458ad1abebebaf0",
      "tree": "15e070fb706ba7599d5f402a8f934a7399541a6a",
      "parents": [
        "0c17099a71cb5d1b36b7aab66fd7341b3fc9106d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 15:50:50 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 16:00:17 2013 -0700"
      },
      "message": "Fix x86_64 build, clean up intermediate libraries.\n\nThe x86_64 build was failing because clone.S had a call to __thread_entry which\nwas being added to a different intermediate .a on the way to making libc.so,\nand the linker couldn\u0027t guarantee statically that such a relocation would be\npossible.\n\n  ld: error: out/target/product/generic_x86_64/obj/STATIC_LIBRARIES/libc_common_intermediates/libc_common.a(clone.o): requires dynamic R_X86_64_PC32 reloc against \u0027__thread_entry\u0027 which may overflow at runtime; recompile with -fPIC\n\nThis patch addresses that by ensuring that the caller and callee end up in the\nsame intermediate .a. While I\u0027m here, I\u0027ve tried to clean up some of the mess\nthat led to this situation too. In particular, this removes libc/private/ from\nthe default include path (except for the DNS code), and splits out the DNS\ncode into its own library (since it\u0027s a weird special case of upstream NetBSD\ncode that\u0027s diverged so heavily it\u0027s unlikely ever to get back in sync).\n\nThere\u0027s more cleanup of the DNS situation possible, but this is definitely a\nstep in the right direction, and it\u0027s more than enough to get x86_64 building\ncleanly.\n\nChange-Id: I00425a7245b7a2573df16cc38798187d0729e7c4\n"
    },
    {
      "commit": "51aeff70218e18a7213fc6b7b9a4112be488bf58",
      "tree": "b80a3ef2f759de26684a120f14d770327ce27b07",
      "parents": [
        "14b66bffb08d23ad16d69b62d1fbfda769db1c12"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 18:30:44 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 18:30:44 2013 -0700"
      },
      "message": "Fix 32-bit build.\n\n  libc/tzcode/localtime.c: In function \u0027differ_by_repeat\u0027:\n  libc/tzcode/localtime.c:338:2: error: comparison is always false due to limited range of data type [-Werror\u003dtype-limits]\n\nChange-Id: Ic84be6391a66e9d50ed98f41d865387c77a60ffa\n"
    },
    {
      "commit": "e0d0b15de6eaee6c3975e13ad2b0e1238d0fdd8f",
      "tree": "85161ae4639426e08b7804976f4e9910bde68dbb",
      "parents": [
        "ad1244b2e7588df2f4e66747e1355016d6d014bc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 27 00:04:30 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 27 00:04:30 2013 -0700"
      },
      "message": "Upgrade to tzcode2013f plus Android modifications (from tzcode2013d plus Android modifications).\n\nlocaltime.c and strftime.c are still quite different from upstream because of\nour extensions, but the other files continue to be identical, and the two\nexceptions should be otherwise identical.\n\nFrom the tzcode2013e release notes:\n\n  Changes affecting Godthab time stamps after 2037 if version mismatch\n\n    Allow POSIX-like TZ strings where the transition time\u0027s hour can\n    range from -167 through 167, instead of the POSIX-required 0\n    through 24.  E.g., TZ\u003d\u0027FJT-12FJST,M10.3.1/146,M1.3.4/75\u0027 for the\n    new Fiji rules.  This is a more-compact way to represent\n    far-future time stamps for America/Godthab, America/Santiago,\n    Antarctica/Palmer, Asia/Gaza, Asia/Hebron, Asia/Jerusalem,\n    Pacific/Easter, and Pacific/Fiji.  Other zones are unaffected by\n    this change.  (Derived from a suggestion by Arthur David Olson.)\n\n    Allow POSIX-like TZ strings where daylight saving time is in\n    effect all year.  E.g., TZ\u003d\u0027WART4WARST,J1/0,J365/25\u0027 for Western\n    Argentina Summer Time all year.  This supports a more-compact way\n    to represent the 2013d data for America/Argentina/San_Luis.\n    Because of the change for San Luis noted above this change does not\n    affect the current data.  (Thanks to Andrew Main (Zefram) for\n    suggestions that improved this change.)\n\n    Where these two TZ changes take effect, there is a minor extension\n    to the tz file format in that it allows new values for the\n    embedded TZ-format string, and the tz file format version number\n    has therefore been increased from 2 to 3 as a precaution.\n    Version-2-based client code should continue to work as before for\n    all time stamps before 2038.  Existing version-2-based client code\n    (tzcode, GNU/Linux, Solaris) has been tested on version-3-format\n    files, and typically works in practice even for time stamps after\n    2037; the only known exception is America/Godthab.\n\n  Changes affecting API\n\n    Support for floating-point time_t has been removed.\n    It was always dicey, and POSIX no longer requires it.\n    (Thanks to Eric Blake for suggesting to the POSIX committee to\n    remove it, and thanks to Alan Barrett, Clive D.W. Feather, Andy\n    Heninger, Arthur David Olson, and Alois Treindl, for reporting\n    bugs and elucidating some of the corners of the old floating-point\n    implementation.)\n\n    The signatures of \u0027offtime\u0027, \u0027timeoff\u0027, and \u0027gtime\u0027 have been\n    changed back to the old practice of using \u0027long\u0027 to represent UT\n    offsets.  This had been inadvertently and mistakenly changed to\n    \u0027int_fast32_t\u0027.  (Thanks to Christos Zoulos.)\n\n    The code avoids undefined behavior on integer overflow in some\n    more places, including gmtime, localtime, mktime and zdump.\n\n  Changes affecting code internals\n\n    Minor changes pacify GCC 4.7.3 and GCC 4.8.1.\n\n  Changes affecting documentation and commentary\n\n    Documentation and commentary is more careful to distinguish UT in\n    general from UTC in particular.  (Thanks to Steve Allen.)\n\nFrom the tzcode2013f release notes:\n\n  Changes affecting API\n\n    The types of the global variables \u0027timezone\u0027 and \u0027altzone\u0027 (if present)\n    have been changed back to \u0027long\u0027.  This is required for \u0027timezone\u0027\n    by POSIX, and for \u0027altzone\u0027 by common practice, e.g., Solaris 11.\n    These variables were originally \u0027long\u0027 in the tz code, but were\n    mistakenly changed to \u0027time_t\u0027 in 1987; nobody reported the\n    incompatibility until now.  The difference matters on x32, where\n    \u0027long\u0027 is 32 bits and \u0027time_t\u0027 is 64.  (Thanks to Elliott Hughes.)\n\nChange-Id: I14937c42a391ddb865e4d89f0783961bcc6baa21\n"
    },
    {
      "commit": "cf178bf7d0300edfeec31528a744aa38a7177c0e",
      "tree": "84fc277fa849dbd5e6af543a70c8fce1d1544d88",
      "parents": [
        "4a509d898e24cefe0f7f0edf927b11ce7c304c81"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 18 19:25:28 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 19 11:17:42 2013 -0700"
      },
      "message": "Use $ANDROID_DATA and $ANDROID_ROOT to find the tzdata.\n\nThis lets us run binaries linked against bionic on an x86 host.\n\nChange-Id: Icd60cf99a90d747c77304c05b4f764e4d26af985\n"
    },
    {
      "commit": "713fe6463e6ff8cb9689aa8ead88c885d25d03aa",
      "tree": "76decfb3114af9fbcf85ca6f1c99c94177642023",
      "parents": [
        "c44205cf717fc8ab8ccaf3631032fa236ba61a86"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 22 14:13:50 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 22 14:18:04 2013 -0700"
      },
      "message": "Apply upstream commit 943a6621866e9d6e654f5cfe1494378c1fb8957a.\n\nAuthor: Paul Eggert \u003ceggert@cs.ucla.edu\u003e\nDate:   Thu Aug 22 12:47:51 2013 -0700\n\n    * localtime.c: Fix another integer overflow bug in mktime.\n\n    (time2sub): Avoid undefined behavior on time_t overflow.\n    Reported by Elliott Hughes in\n    \u003chttp://mm.icann.org/pipermail/tz/2013-August/019580.html\u003e.\n\nBug: 10310929\nChange-Id: I3bf26f1f91371552e0a3828457d27e22af55acb2\n"
    },
    {
      "commit": "ce4783ce76a4ef888466e02e4c6f3a0a3910bce8",
      "tree": "4bc51cd70edd4df6d6489d1ff8b4472f293f27b4",
      "parents": [
        "3db1f359e9f218f5f73a7a9f4d80e4be362a526e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 12 17:31:11 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 12 17:52:44 2013 -0700"
      },
      "message": "Upgrade to tzcode2013d.\n\nWell, kinda... localtime.c still contains a bunch of Android-specific\nhacks, as does strftime.c. But the other files are now exactly the same\nas upstream.\n\nThis catches up with several years of bug fixes, and fixes most of the\ncompiler warnings that were in this code. (Just two remain.)\n\nBug: 1744909\nChange-Id: I2ddfecb6fd408c847397c17afb0fff859e27feef\n"
    },
    {
      "commit": "e7aaad8b832bdff3b88aa62b5c7597e5fd3db520",
      "tree": "7dcdc00044d95dfaca5dd4f0a87ba2050a050b50",
      "parents": [
        "87efcd2e63c9f218f476ef88f21e660f9bce633f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 25 14:02:59 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 25 14:02:59 2013 -0700"
      },
      "message": "Improve diagnostics in the face of bad tzdata.\n\nBug: 8373554\nChange-Id: If8df5e956105e01cce95221ff0a7fa9d2b474db3\n"
    },
    {
      "commit": "e0175ca7e440a87e9d03f249fc8f210063df7908",
      "tree": "982e64580d19fc846cd7f2a1fa1dee2fbe2274d8",
      "parents": [
        "ec706c24acb4d1db6a583a57b76adfb9250d39eb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 14 14:38:08 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 14 14:38:08 2013 -0700"
      },
      "message": "Don\u0027t search off the end of the index for bad Olson ids.\n\nIn the old code, the index was a file to itself, so it made sense to\nread until you hit the end of the file. In the new code, the index is\nfollowed by hundreds of KiB of data, so we need to just search the\nindex.\n\nBug: 8368791\nChange-Id: Icf5f8b5516cf3a93679fa849c9f6cd1cb100e0f1\n"
    },
    {
      "commit": "4a05bef4c06dac05f1c9aa8cfc5b7e7dd6642385",
      "tree": "493815df9e9ddc9b5ce10780ef416eda8d7bb6e2",
      "parents": [
        "62c5cd0781e95c1c50b63c37a9a87bc158e64d38"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 11 17:17:02 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 11 17:17:02 2013 -0700"
      },
      "message": "Cache the most-recently used timezone for mktime_tz and localtime_tz.\n\nNormally, the C library implicitly caches your timezone by virtue\nof the fact that the prehistoric API assumes a single timezone for\nthe entire process.\n\nThe unfortunate mktime_tz and localtime_tz extensions work around\nthis, but represent timezones as strings to their callers, so code\nthat makes heavy use of these needs a cache to be able to perform\nacceptably until it can hopefully one day be rewritten to use\njava.util.Calendar or icu4c.\n\nBug: 8270865\nChange-Id: I92e3964e86dc33ceac925f819cc5e26ff4203f50\n"
    },
    {
      "commit": "b989c9ceda71f6f75112645b5c45af341275cbab",
      "tree": "125cd5001f161f503700580e142af5e4f7f20d2b",
      "parents": [
        "e05709b1df7dba98c37e83f84dcbd2ad8429bcfc"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 16 10:34:33 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 16 10:34:33 2013 -0800"
      },
      "message": "Revert \"DO NOT MERGE Revert \"Add the libcutils localtime_tz and mktime_t extensions to bionic.\"\"\n\nThis reverts commit f4b34b6c3942be273ad7298a40be0d312b183aab.\n"
    },
    {
      "commit": "85819efe8f771759d12ab86f0bd47ede621dbb7d",
      "tree": "b2f39bf6014bbe47db864114cc670981f0dfca98",
      "parents": [
        "df7f24f310ee3ceb1dc9413d59d5a8816eb584ef",
        "f2b3ac9502e08ef53d4eedd7e93ea9a00d185055"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 25 15:09:29 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 25 15:09:29 2012 -0700"
      },
      "message": "am f2b3ac95: Merge \"Fix recovery: don\\\u0027t assert if there\\\u0027s no tzdata.\"\n\n* commit \u0027f2b3ac9502e08ef53d4eedd7e93ea9a00d185055\u0027:\n  Fix recovery: don\u0027t assert if there\u0027s no tzdata.\n"
    },
    {
      "commit": "49271d89dabae182f5614c0d5fb232dac3c16067",
      "tree": "47a1bb592168d9015caaec999d625196727ceca9",
      "parents": [
        "7b68e3f799d87e84c56687033326924fd8fec84c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 25 14:38:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 25 14:56:08 2012 -0700"
      },
      "message": "Fix recovery: don\u0027t assert if there\u0027s no tzdata.\n\nChange-Id: I4d808b57c63ec1ccc024da7fd6a65691e0d455c5\n"
    },
    {
      "commit": "008744cedaa7e3be533bbedb51dd986c6dfea987",
      "tree": "ed3f372cfb1e3af8765d607123aee098bddda64d",
      "parents": [
        "417834b17ee00a6b1cd4e816f632c3596f3f51c3",
        "df92635a57e8093d9cbffc38bbf513f3361ee91e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 22 15:08:38 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 22 15:08:38 2012 -0700"
      },
      "message": "am df92635a: Merge \"Support zone.tab in bionic, and remove the file format version.\"\n\n* commit \u0027df92635a57e8093d9cbffc38bbf513f3361ee91e\u0027:\n  Support zone.tab in bionic, and remove the file format version.\n"
    },
    {
      "commit": "2393535f0d7df55dae3b4fbf5dbcfa7f87192762",
      "tree": "2785a19d597c8c24449de0b225aae3737982bc03",
      "parents": [
        "eb370aa31dd549ad7a7a2044dedab1140a7aeda9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 22 14:47:58 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 22 14:47:58 2012 -0700"
      },
      "message": "Support zone.tab in bionic, and remove the file format version.\n\nBug: 7012465\nChange-Id: I6335c91ebadc609fae85bad94db972be7574b6e4\n"
    },
    {
      "commit": "417834b17ee00a6b1cd4e816f632c3596f3f51c3",
      "tree": "44703f1a50b6d38bcb0ca53d422fe81387b849ec",
      "parents": [
        "629a28cdf384d83a4d433de8e1299b01e42cc75e",
        "eb370aa31dd549ad7a7a2044dedab1140a7aeda9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 22 11:53:22 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 22 11:53:22 2012 -0700"
      },
      "message": "am eb370aa3: Merge \"Make bionic look in /data/misc for tzdata updates.\"\n\n* commit \u0027eb370aa31dd549ad7a7a2044dedab1140a7aeda9\u0027:\n  Make bionic look in /data/misc for tzdata updates.\n"
    },
    {
      "commit": "1c295720343009a7393706f2285a4d026e97eebf",
      "tree": "c8684a0ea3bb68ea0f76c57537e97429987888f3",
      "parents": [
        "dc595d830898e5859bf98d7436af2a777a11f810"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 19 18:13:15 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 22 11:34:05 2012 -0700"
      },
      "message": "Make bionic look in /data/misc for tzdata updates.\n\nBug: 7012465\nChange-Id: I4d1018f686f2409600fdb6630732cae33efe8f02\n"
    },
    {
      "commit": "4d71adbc0d12e5153f537f84cce8d9686762e5b9",
      "tree": "f881ce665bbd4e4e8c07f2e84cd6bed471d2aa9d",
      "parents": [
        "79c6a8d2b163e40eb6f19bbf8f59eb85fb7996e6",
        "102250719f8aff443741e54ba5633c7722544620"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 18 13:56:02 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 18 13:56:02 2012 -0700"
      },
      "message": "am 10225071: Merge \"Fixes x86 build.\"\n\n* commit \u0027102250719f8aff443741e54ba5633c7722544620\u0027:\n  Fixes x86 build.\n"
    },
    {
      "commit": "8b95404d001b285220ae7cbef661b0446a02858b",
      "tree": "dec001e83c36b9e39c278975f28868398b863e35",
      "parents": [
        "ca7466d2b8ee6baad86afc82fa18cda4d931b6d3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 18 13:42:59 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 18 13:42:59 2012 -0700"
      },
      "message": "Fixes x86 build.\n\nChange-Id: I0e576784b2224668d58ebea03986d534ee0e43b4\n"
    },
    {
      "commit": "1b315363c22fdf53d77fc83ec0bbada32e73ccc7",
      "tree": "1b9cca13108d197c7cd87c7bca0d7c481ad512a0",
      "parents": [
        "e5c8ced4f95e97b2fadc0c64fbdbeeb023677035",
        "5ae762a393168932602eb7269a7d30a53de1c83c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 18 10:59:27 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 18 10:59:27 2012 -0700"
      },
      "message": "am 5ae762a3: Merge \"Pull bionic\\\u0027s time zone data from the new single \\\u0027tzdata\\\u0027 file.\"\n\n* commit \u00275ae762a393168932602eb7269a7d30a53de1c83c\u0027:\n  Pull bionic\u0027s time zone data from the new single \u0027tzdata\u0027 file.\n"
    },
    {
      "commit": "d23af232688bf6980e4503cda6b12ed739292931",
      "tree": "aa21ca14ec869226e3035b82b0c43746b6788cab",
      "parents": [
        "32ea9fe5783e3cc9756205c0ac46482afc700a3d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 17 16:30:47 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 17 16:30:47 2012 -0700"
      },
      "message": "Pull bionic\u0027s time zone data from the new single \u0027tzdata\u0027 file.\n\nBug: 7012465\nChange-Id: Iec71e448bf7a40af30ca89150b3c336e67a44a43\n"
    },
    {
      "commit": "f4b34b6c3942be273ad7298a40be0d312b183aab",
      "tree": "b8af5b4cc52763f738afc5d3665696968e96d4a5",
      "parents": [
        "6c0e373d38a9cb424bd6d9c4d5d6168960846aa5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 24 10:13:12 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 24 10:13:12 2012 -0700"
      },
      "message": "DO NOT MERGE Revert \"Add the libcutils localtime_tz and mktime_t extensions to bionic.\"\n\nThis reverts commit 3a936a4980046a7eeb8d53a3296058d8f3a1f770.\n\nWe don\u0027t want this in jb-mr1.\n"
    },
    {
      "commit": "3a936a4980046a7eeb8d53a3296058d8f3a1f770",
      "tree": "774b22cc48683ad5044c4d8046e8ea4679da2f13",
      "parents": [
        "59726beda5bec7e3db9d0c403a0ef11d0a7f182f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 11 11:15:53 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 11 11:15:53 2012 -0700"
      },
      "message": "Add the libcutils localtime_tz and mktime_t extensions to bionic.\n\nBug: 7012465\nChange-Id: Ib66f061e29199ba134545111dc79f9b50c8f4a21\n"
    },
    {
      "commit": "208898ee776117f42815c2fcb15903b2781bf0aa",
      "tree": "ad3cf092397fa7e398e37c65312e4675016a1da3",
      "parents": [
        "11f3d5a4319e6e37e5280cf187b3d173e1ac0adb"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jan 13 14:24:08 2012 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jan 13 14:24:08 2012 +0100"
      },
      "message": "libc: remove private declarations from \u003ctime.h\u003e and \u003cresolv.h\u003e\n\nThis patch is used to remove private C library declarations from the\npublic headers (that are exported to the NDK). It should *only* be\nsubmitted after all other patches modifying the users of said\nprivate functions have been submitted to the tree, to avoid\nbreakages.\n\nChange-Id: I0a5e3014f8e3ac9ed8df86a5cdae506337c23252\n"
    },
    {
      "commit": "cd9f1f0b2726fbaac75b47231eb80a91841231f9",
      "tree": "d367dd243c481bf169de36f327964d5191d619be",
      "parents": [
        "b489666086265eb756f11fd224137c7e3a03a707",
        "ac56f5ca2f4c54ddbd37b033f9465d89542c2cbe"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Thu Jun 23 06:13:53 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 23 06:13:53 2011 -0700"
      },
      "message": "am ac56f5ca: Merge \"strftime: Use snprintf() instead of sprintf()\"\n\n* commit \u0027ac56f5ca2f4c54ddbd37b033f9465d89542c2cbe\u0027:\n  strftime: Use snprintf() instead of sprintf()\n"
    },
    {
      "commit": "e6cff939e603e445c2576958c3777d7b7f5d84fa",
      "tree": "20c05656625ed249d451ef2b730b1c90575a9464",
      "parents": [
        "4d9b75a9b08c19cef81b22f889edba61257fb356"
      ],
      "author": {
        "name": "Jim Huang",
        "email": "jim.huang@linaro.org",
        "time": "Thu Jun 16 22:35:16 2011 +0800"
      },
      "committer": {
        "name": "Jim Huang",
        "email": "jserv@0xlab.org",
        "time": "Thu Jun 23 11:10:32 2011 +0800"
      },
      "message": "strftime: Use snprintf() instead of sprintf()\n\nChange-Id: I112ac012894eddc96e5f3e77cb87bb300596e3ce\nSigned-off-by: Jim Huang \u003cjserv@0xlab.org\u003e\n"
    },
    {
      "commit": "b138e4f90ffec34b4cc903cffbe18f9ea2d903d4",
      "tree": "75296497af7ac3e9b15f2626f5d1d0e41d1c2b95",
      "parents": [
        "015610e64eb728dd031c6b1730b70460d9d298b8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Sun Jan 09 10:33:23 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 11 09:33:04 2011 -0800"
      },
      "message": "Bug 3330205 Thread safe strptime implementation\n\nChange-Id: I03e72b0253a7a2e015455ab81dbf155ed1e574d2\n"
    },
    {
      "commit": "6481b91520150e9664a3c4abc5d2aebdce422f93",
      "tree": "8fadb7aadcc6002a7053da60d50b49704423a5f9",
      "parents": [
        "23d24394e72715ddf580726655c8ba3fbcf11bfe"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 12:23:16 2010 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Dec 06 12:25:52 2010 +0100"
      },
      "message": "\u003ctime.h\u003e: Add timegm(), timelocal() and others.\n\nAdd timegm(), timelocal(), time2posix() and posix2time() to the\nC library.\n\nChange-Id: I34d5771ed83dd994870a5ca58a511d01898b1ffb\n"
    },
    {
      "commit": "50ace4fec5e8cb5afcbc656a4556fa528adfd760",
      "tree": "04647e039a457f69ba48a8301bebdd605fda7fca",
      "parents": [
        "6a9b888d7c4b246f6f66360789c72b754ff85021"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jun 16 16:36:41 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jun 22 17:51:41 2010 -0700"
      },
      "message": "Remove compiler warnings when building Bionic.\n\nAlso add missing declarations to misc. functions.\nFix clearerr() implementation (previous was broken).\nHandle feature test macros like _POSIX_C_SOURCE properly.\n\nChange-Id: Icdc973a6b9d550a166fc2545f727ea837fe800c4\n"
    },
    {
      "commit": "2093d350be21ff086f9e145404877941b9a42c5c",
      "tree": "7fcb6a68bb996c3c62d0dfdf54a08b8e50adb970",
      "parents": [
        "b4423ff7dfd8c97688cbf87ba8ce22f5b54fa89c"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Sep 09 17:41:59 2009 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Sep 09 17:45:00 2009 -0700"
      },
      "message": "Fix an infinite loop in time2sub.\n\nThe problem is that time_t is signed, and the original code relied on the\nfact that (X + c \u003c X) in case of overflow for c \u003e\u003d 0. Unfortunately, this\ncondition is only guaranteed by the standard for unsigned arithmetic, and\nthe gcc 4.4.0 optimizer did completely remove the corresponding test from\nthe code. This resulted in a missing boundary check, and an infinite loop.\n\nThe problem is solved by testing explicitely for TIME_T_MIN and TIME_T_MAX\nin the loop that uses this.\n\nAlso fix increment_overflow and long_increment_overflow which were buggy\nfor exactly the same reasons.\n\nNote: a similar fix is needed for system/core/libcutils\n"
    },
    {
      "commit": "d5f72afd4984744a7198c8ec80341a6d2602d02f",
      "tree": "2673f88232054cb5bbb97ef2acaad39e07f96948",
      "parents": [
        "8b09aa39c3ab7bf17384082728001550c072e8c7"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Mon Aug 03 15:43:18 2009 -0700"
      },
      "committer": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Mon Aug 03 15:43:18 2009 -0700"
      },
      "message": "Fix strftime to use localized month names.\n\nIt was using the default locale (capital L) instead of the\ncurrent locale (lowercase l).\n\nBug 2030864\n"
    },
    {
      "commit": "a48fa7f4deb6ba703e1da55143771476d4e668ce",
      "tree": "ef345673adaec0cc65724ca430af240244e225c8",
      "parents": [
        "a0508577c9b1fcf89d120ece88fe2080463d4d4d"
      ],
      "author": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Fri May 15 13:33:20 2009 -0700"
      },
      "committer": {
        "name": "Eric Fischer",
        "email": "enf@google.com",
        "time": "Fri May 15 13:46:55 2009 -0700"
      },
      "message": "Add standalone_months field to libc strftime().\n\nReplicate my change 722a5c0462f38827f4097065bfc3826b9e0e9fb4 into\nbionic in an attempt to fix the build.\n"
    },
    {
      "commit": "edbe7fc97bab7ff0684053d1be564330689bf3ad",
      "tree": "271db0992a091d68f17f073ba9573c4698f97ce1",
      "parents": [
        "78bf5fc677a2d25d50598b01781eafacdb5e6afe"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 18 22:20:24 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 18 22:20:24 2009 -0700"
      },
      "message": "auto import //branches/master/...@140412\n"
    },
    {
      "commit": "1dc9e472e19acfe6dc7f41e429236e7eef7ceda1",
      "tree": "3be0c520fae17689bbf5584e1136fb820caef26f",
      "parents": [
        "1767f908af327fa388b1c66883760ad851267013"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "1767f908af327fa388b1c66883760ad851267013",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "a799b53f10e5a6fd51fef4436cfb7ec99836a516"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349",
      "tree": "defd1cc07d16ad2f3b21154114e092d11c94c5bb",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
