)]}'
{
  "log": [
    {
      "commit": "c1e7f2a81d7f8990b8146230c55954abc4b96320",
      "tree": "cda259d14a26a934712d337a9e9f0b4a6bf57793",
      "parents": [
        "26540d727ea122899086e537f390749845503472"
      ],
      "author": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Thu Apr 13 16:37:37 2017 -0700"
      },
      "committer": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Thu Apr 13 16:39:13 2017 -0700"
      },
      "message": "Recommend building with -disable-job-server\n\nUntil and if we implement a job server scheme for Fuchsia,\nwe should disable it so we can build with -j, even if there\nis no global load balancing.\n\nChange-Id: Iad558e9b5b0850b2d00a6017072586d94016d3c0\n"
    },
    {
      "commit": "26540d727ea122899086e537f390749845503472",
      "tree": "9a60b6abee1cc012bc15a796ca0a52df490f8821",
      "parents": [
        "a174e2f83b9ae3c60968fb200b4b367f4109e8ce"
      ],
      "author": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Thu Feb 23 10:12:13 2017 -0800"
      },
      "committer": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Thu Feb 23 10:12:13 2017 -0800"
      },
      "message": "s/mx_handle_wait_one/mx_object_wait_one/\n\nChange-Id: Ic68c0fa04278ae4ddbd95d2d24103009022c99d9\n"
    },
    {
      "commit": "a174e2f83b9ae3c60968fb200b4b367f4109e8ce",
      "tree": "71c309dcc40c4f2284236f943597f2a14a545e78",
      "parents": [
        "9b0e1d59dd69550c03a41e3461cc22f1fd864fba"
      ],
      "author": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Thu Feb 02 16:53:46 2017 -0800"
      },
      "committer": {
        "name": "Joshua Conner",
        "email": "joshconner@google.com",
        "time": "Fri Feb 03 00:55:28 2017 +0000"
      },
      "message": "Inform make which cmds are dash builtins.\n\nChange-Id: I1aa9d6bc6578c3ebd4247604cf0004ae0edbaf2d\n"
    },
    {
      "commit": "9b0e1d59dd69550c03a41e3461cc22f1fd864fba",
      "tree": "0a78a9b66a75de17732db044723a277951ec5e40",
      "parents": [
        "0cee4c39c3ae2b7d6dd727bbc9cb0aace87f6696"
      ],
      "author": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Wed Feb 01 15:20:47 2017 -0800"
      },
      "committer": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Wed Feb 01 15:20:47 2017 -0800"
      },
      "message": "Migrate to new launchpad API\n\nChange-Id: If8ab10035726e952220fa6d997f8b2689bd36bc0\n"
    },
    {
      "commit": "0cee4c39c3ae2b7d6dd727bbc9cb0aace87f6696",
      "tree": "250574a83378b6624fc71bcc76179ff1234f0c3c",
      "parents": [
        "4946f4c80a604835ab3cd89ca0189180ec2f0229"
      ],
      "author": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Thu Jan 19 09:36:22 2017 -0800"
      },
      "committer": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Thu Jan 19 09:36:22 2017 -0800"
      },
      "message": "Use mx_job_default() to get current job.\n\nChange-Id: Id321ceab7e97af8bf19a29036606993b8ffa3719\n"
    },
    {
      "commit": "4946f4c80a604835ab3cd89ca0189180ec2f0229",
      "tree": "050921e0c3eff62ec2879940f15dec7ee9bd0df3",
      "parents": [
        "e209d32cbe407cee8f0c62a16bae73fc8213c50d"
      ],
      "author": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Thu Jan 12 15:46:14 2017 -0800"
      },
      "committer": {
        "name": "Joshua Conner",
        "email": "joshconner@google.com",
        "time": "Fri Jan 13 00:58:22 2017 +0000"
      },
      "message": "Improve make process management.\n\n- Add support for waiting on a shell function\n- Improve error messages\n- Consider PATH environment variable when finding executables\n\nChange-Id: Icabb69126a824a11ff95d6e2cded80f275e65240\n"
    },
    {
      "commit": "e209d32cbe407cee8f0c62a16bae73fc8213c50d",
      "tree": "af94a717cac320a6bc2d365993dea4537982f8c3",
      "parents": [
        "17f979edee72efcad1a7a8c72e599a9568f1be29"
      ],
      "author": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Thu Jan 12 10:51:50 2017 -0800"
      },
      "committer": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Thu Jan 12 10:51:50 2017 -0800"
      },
      "message": "Don\u0027t use getrlimit/setrlimit\n\nThey aren\u0027t implemented in Fuchsia and result in excess build noise.\n\nChange-Id: I367a2537d25b1e80e0b2b77a73fe641980acc733\n"
    },
    {
      "commit": "17f979edee72efcad1a7a8c72e599a9568f1be29",
      "tree": "e978909cfdf4afbec6e31df7e03ae3907c73e508",
      "parents": [
        "a8c28d3f69322ea6e9d016bca5fb4471fe71a98f"
      ],
      "author": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Tue Jan 10 09:49:52 2017 -0800"
      },
      "committer": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Tue Jan 10 09:49:52 2017 -0800"
      },
      "message": "Add basic job support to make.\n\nChange-Id: I0e5640fe2e717dfdd56300e2aecb171aa6803157\n"
    },
    {
      "commit": "a8c28d3f69322ea6e9d016bca5fb4471fe71a98f",
      "tree": "ce2af07b86c2db46fe7092862e76ff0e7adda52d",
      "parents": [
        "9a3d843f2ded19812dbd646f97728d7cb6268d07"
      ],
      "author": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Wed Jan 04 13:21:12 2017 -0800"
      },
      "committer": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Wed Jan 04 13:21:12 2017 -0800"
      },
      "message": "Pre-configure the make repository\n\nUpdate repo to be in a state where it can be configured/built.\nThis avoids the developer having to install autoconf, automake,\npkg-config.\n\nChange-Id: I5a7ffea17cbd20daee6e7bdf9ee875425fb0fa74\n"
    },
    {
      "commit": "9a3d843f2ded19812dbd646f97728d7cb6268d07",
      "tree": "e427814e5a861de65dcfadabd313796fd1f6c974",
      "parents": [
        "d351c1fef2ec30b69f92163e0572d7d7d7b33db4"
      ],
      "author": {
        "name": "Josh Conner",
        "email": "joshconner@google.com",
        "time": "Tue Jan 03 09:21:55 2017 -0800"
      },
      "committer": {
        "name": "Joshua Conner",
        "email": "joshconner@google.com",
        "time": "Wed Jan 04 01:23:17 2017 +0000"
      },
      "message": "Adjust make build options.\n\nDisable warnings that are triggered by modern versions of gcc.\n\nChange-Id: I1f29caaae86f92f2ba4e652532c2391013b5cf9f\n"
    },
    {
      "commit": "d351c1fef2ec30b69f92163e0572d7d7d7b33db4",
      "tree": "d9bf83d0ee2ae6818421143de634fc4f62571680",
      "parents": [
        "3daaa4dd3e6bb41841d5ec60ba47f7e4220162f5"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Dec 28 00:41:38 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Dec 28 09:25:51 2016 -0500"
      },
      "message": "* main.c (switches): Add -E as an alias for --eval.\n\n* make.1: Document the -E and --eval options.\n* doc/make.texi: Document the -E option.\n* tests/scripts/options/eval: Test the -E option and MAKEFILES.\n* NEWS: Add information about the new option.\n"
    },
    {
      "commit": "3daaa4dd3e6bb41841d5ec60ba47f7e4220162f5",
      "tree": "701a08822559c3a4d9e5789f6d141b73d5e3db64",
      "parents": [
        "a359e32eb5b7e6e24c0eb17e31a0711d47027d75"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Dec 28 00:23:55 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Dec 28 09:25:34 2016 -0500"
      },
      "message": "* main.c (switches): Add --no-silent to undo -s options.\n\n* make.1: Document the new flag.\n* doc/make.texi: Document the new flag.  Remove suggestions that the\n.SILENT special target is deprecated or should not be used.\n* tests/scripts/options/dash-s: Test the -s and --no-silent options.\n* NEWS: Add information about the new option.\n"
    },
    {
      "commit": "a359e32eb5b7e6e24c0eb17e31a0711d47027d75",
      "tree": "37cfaf8d2e65de6b2d5a168a6cb35d1f722b453c",
      "parents": [
        "bee153c7621abd2f757419e6b644c2e2bdbbb758"
      ],
      "author": {
        "name": "Martin Dorey",
        "email": "martin.dorey@hds.com",
        "time": "Mon Dec 26 14:09:38 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Dec 26 14:09:38 2016 -0500"
      },
      "message": "* job.c (child_execute_job): [SV 49938] Avoid spurious GCC warning.\n"
    },
    {
      "commit": "bee153c7621abd2f757419e6b644c2e2bdbbb758",
      "tree": "3d2253f6d03fd6cf80fc93471ac8790761853f5e",
      "parents": [
        "c5ccc4930c3805604813def4455bc2e90635349e"
      ],
      "author": {
        "name": "Martin Dorey",
        "email": "martin.dorey@hds.com",
        "time": "Mon Dec 26 13:26:44 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Dec 26 13:26:44 2016 -0500"
      },
      "message": "* main.c (main): [SV 49935] Fix uninitialized variable.\n"
    },
    {
      "commit": "c5ccc4930c3805604813def4455bc2e90635349e",
      "tree": "f0c2c966e217dc4accfa38c34c7296211dadc93b",
      "parents": [
        "45bf0e3a6757a565dd15050ae46b42a3d534477b"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 25 17:41:50 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Dec 26 09:01:59 2016 -0500"
      },
      "message": "[SV 40236] Handle included file open failures properly.\n\n* read.c (eval_makefile): Set deps-\u003eerror if we discovered any\nerror reading makefiles, and set NONEXISTENT_MTIME so we know\nit needs to be rebuilt.\n* main.c (main): Clean up management of makefile_mtimes.\n* tests/scripts/features/include: Add open failure testcases.\n"
    },
    {
      "commit": "45bf0e3a6757a565dd15050ae46b42a3d534477b",
      "tree": "e76f7472f495c6ae0dd409eaa468a29262382848",
      "parents": [
        "c6966b323811c37acedff05b576b907b06aea5f4"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Dec 23 13:33:58 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Dec 26 09:01:59 2016 -0500"
      },
      "message": "Portability changes for the test suite.\n\n* tests/test_driver.pl: Save error strings for later comparison.\n* tests/run_make_tests.pl: Create portable commands for later use.\n* tests/*: Use these new variables.\n"
    },
    {
      "commit": "c6966b323811c37acedff05b576b907b06aea5f4",
      "tree": "0e448392509d54290f07a1828262e38e62a5a036",
      "parents": [
        "0029ea89412225493fa01c75d193a6336a1717f5"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Thu Dec 22 18:47:26 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Dec 26 09:01:59 2016 -0500"
      },
      "message": "[SV 20513] Un-escaped # are not comments in function invocations\n\n* NEWS: Document the change, as a backward-incompatible change.\n* main.c (main): Add \u0027nocomment\u0027 to the .FEATURES variable.\n* read.c (remove_comments): Skip variable references during remove.\n(find_char_unquote): Fix comments for new STOPMAP support.\n* tests/scripts/features/escape: Test new escape syntax.\n* tests/scripts/functions/guile: Ditto.\n* tests/scripts/functions/shell: Ditto.\n"
    },
    {
      "commit": "0029ea89412225493fa01c75d193a6336a1717f5",
      "tree": "b3c9c75fa83f264d23be3f3187f3771bd00875a8",
      "parents": [
        "053d49367c51bcdaa97f6f22188e5b62070c566c"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Thu Dec 22 16:35:47 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Dec 26 09:01:59 2016 -0500"
      },
      "message": "* main.c (main): [SV 40234] Show correct error message.\n"
    },
    {
      "commit": "053d49367c51bcdaa97f6f22188e5b62070c566c",
      "tree": "85181e35c9a8b820399d6cf9b168584d14aa4a7a",
      "parents": [
        "80861cce431a835c260bf5c7646c86da5e7bf296"
      ],
      "author": {
        "name": "Christoph Schulz",
        "email": "develop@kristov.de",
        "time": "Sun Dec 18 13:54:35 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Dec 26 09:01:59 2016 -0500"
      },
      "message": "* main.c (switches): [SV 48809] Accept obsolete jobserver flag.\n"
    },
    {
      "commit": "80861cce431a835c260bf5c7646c86da5e7bf296",
      "tree": "7775862e29f42bfd83c48c39c2d9487833929d61",
      "parents": [
        "72af7ce8aff003ab81f46d71faab3e51bcb78322"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 18 13:49:14 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Dec 26 09:01:59 2016 -0500"
      },
      "message": "* read.c (get_next_mword): [SV 49865] Make fallthrough explicit.\n"
    },
    {
      "commit": "72af7ce8aff003ab81f46d71faab3e51bcb78322",
      "tree": "1a71f44411303dbb6cb4aa842471c6dc6e6eee4f",
      "parents": [
        "e4a9c9b82583dc62af082f42617775a90a7f6fe8"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 18 12:43:18 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Dec 26 09:01:58 2016 -0500"
      },
      "message": "[SV 49114] Remove support for the NO_FLOAT compile flag.\n\n* makeint.h (max_load_average): Always a double.\n* main.c (max_load_average, default_load_average): Always doubles.\n(switches): -l option is a \"floating\" format.\n(decode_switches, define_makeflags): Support \"floating\" format.\n* remake.c (f_mtime): Show time skew as double.\n* rule.c (print_rule_data_base): Show percentages as double.\n* Makefile.ami, README.DOS.template, SMakefile.template: Remove\nreferences to NO_FLOAT.\n* SCOPTIONS, glob/SCOPTIONS: Remove NO_FLOAT settings.\n"
    },
    {
      "commit": "e4a9c9b82583dc62af082f42617775a90a7f6fe8",
      "tree": "4ab47a2dfad7a95beccbdb68c07ed12df7f4558c",
      "parents": [
        "3d7c17c5a9bc5437968eeeb3a48dd97cb022f264"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 18 12:25:24 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Dec 26 08:59:58 2016 -0500"
      },
      "message": "[SV 45477] [SV 49115] Parse DOS/Windows drivespecs correctly.\n\n* read.c (parse_file_seq) [WINDOWS32]: Only consider a colon part of\na path if it\u0027s in a valid Windows drivespec.\n"
    },
    {
      "commit": "3d7c17c5a9bc5437968eeeb3a48dd97cb022f264",
      "tree": "2f5ac997b97c31cf1a93c298eb6c49ea22343b34",
      "parents": [
        "9c487cc5376b8438d3d4052dedd6bed90f40cd7e"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 18 10:22:43 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 25 18:18:45 2016 -0500"
      },
      "message": "[SV 49116] Check potential null pointer dereference.\n\n* w32/subproc/sub_proc.c (make_command_line): Simplify cygwin shell\ncheck for correctness.\n"
    },
    {
      "commit": "9c487cc5376b8438d3d4052dedd6bed90f40cd7e",
      "tree": "05da2367e3abd608cb48bd1b86cee3090f2ab064",
      "parents": [
        "1c9790e6f5ca26fb1b690b81deb7931726941c09"
      ],
      "author": {
        "name": "Jaak Ristioja",
        "email": "jaak@ristioja.ee",
        "time": "Sun Dec 18 09:48:46 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 25 18:18:45 2016 -0500"
      },
      "message": "* expand.c (variable_append): [SV 49113] Possible null ptr deref\n"
    },
    {
      "commit": "1c9790e6f5ca26fb1b690b81deb7931726941c09",
      "tree": "70a202fcf541993cabe07922278e9975e9534bda",
      "parents": [
        "b13dcfe501ce343ab107c29acc3d334310ebbcd1"
      ],
      "author": {
        "name": "Jaak Ristioja",
        "email": "jaak@ristioja.ee",
        "time": "Sun Dec 18 09:45:47 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 25 18:18:45 2016 -0500"
      },
      "message": "* w32/*/dirent.*: [SV 49111] Remove unused telldir()\n"
    },
    {
      "commit": "b13dcfe501ce343ab107c29acc3d334310ebbcd1",
      "tree": "a70f4838dda237faf3c4b228d77eda9d352c9a2d",
      "parents": [
        "212cb00923606c89a0a00eff445f91405e5e459d"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Dec 17 21:50:50 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 25 18:18:45 2016 -0500"
      },
      "message": "Add more GCC warnings to the maintainer build.\n\n* arscan.c: [SV 49112] Correct TEST printf() formatting.\nRecommended by Jaak Ristioja \u003cjaak@ristioja.ee\u003e\n* hash.c: Correct fprintf() formatting.\n* maintMakefile: Add extra GCC warning flags.\n"
    },
    {
      "commit": "212cb00923606c89a0a00eff445f91405e5e459d",
      "tree": "07631045ae78b7e595e070f55509aabc268dec0d",
      "parents": [
        "ac90d80b2ab42cb2f87a9dadf1e84e26b2adfab6"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Dec 17 13:16:22 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 25 18:18:45 2016 -0500"
      },
      "message": "* po/Makevars, makeint.h, debug.h: Add xgettext C format flags.\n"
    },
    {
      "commit": "ac90d80b2ab42cb2f87a9dadf1e84e26b2adfab6",
      "tree": "d4990b15e00a0d1582b0c14f92ca6875d5bb18bd",
      "parents": [
        "a3f6e49705ded21d87c62f71fb882bd4a9750899"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Dec 17 09:12:00 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 25 18:18:45 2016 -0500"
      },
      "message": "* po/LINGUAS: Added Serbian translation.\n"
    },
    {
      "commit": "a3f6e49705ded21d87c62f71fb882bd4a9750899",
      "tree": "33a77b217df6bcb24aad1d469f45297d6bf5a2ba",
      "parents": [
        "db72ca1b7d01d9621efc982be817c99d7a8a10bd"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Dec 14 17:24:43 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 25 18:18:45 2016 -0500"
      },
      "message": "* README.template: Clarify some items in the README\n"
    },
    {
      "commit": "db72ca1b7d01d9621efc982be817c99d7a8a10bd",
      "tree": "73a52b68aca153268985889866db9b7148e1551d",
      "parents": [
        "8d0aff7e814e02d131050ff1c89e7b3dd332f81e"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Dec 14 17:23:09 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 25 18:18:45 2016 -0500"
      },
      "message": "* doc/make.texi: [SV 48951] Fix documentation typo.\n"
    },
    {
      "commit": "8d0aff7e814e02d131050ff1c89e7b3dd332f81e",
      "tree": "7d49b5fae011fd42f5cbb4b31b0db057bb2e91b2",
      "parents": [
        "bc9d72beb0cb00e73afff1fa386a0ea9e2e32280"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Oct 23 16:34:55 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Dec 25 18:18:03 2016 -0500"
      },
      "message": "* maintMakefile: Update default GPG ID for new key.\n"
    },
    {
      "commit": "bc9d72beb0cb00e73afff1fa386a0ea9e2e32280",
      "tree": "87cd6a405b7fac45be92d027f3e1d650def33c4d",
      "parents": [
        "d3bba301cee84c6e2b150649411a0d649056a75f"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Sep 25 19:06:56 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Dec 14 17:56:24 2016 -0500"
      },
      "message": "Resolve issues discovered by static code analysis.\n\n* maintMakefile: Add a rule to submit code for analysis.\n* configure.ac: Check for availability of the umask() function.\n* output.c (output_tmpfd, output_tmpfile): Use umask on temp files.\n* makeint.h (PATH_VAR): Reserve an extra character for nul bytes.\n* function.c (func_error): Initialize buffer to empty string.\n* job.c (child_execute_job): Verify validity of fdin.\n* main.c (main): Simplify code for makefile updating algorithm.\n* arscan.c (ar_scan): Verify member name length before reading.\n* read.c (readline): Cast pointer arithmetic to avoid warnings.\n* remake.c (update_file): Remove unreachable code.\n(name_mtime): Verify symlink name length.\n"
    },
    {
      "commit": "d3bba301cee84c6e2b150649411a0d649056a75f",
      "tree": "823e892eb5447e57d0689025596db608bb0b1aa9",
      "parents": [
        "15066b73f41b1787e18dc278cea0bec2e5d2173a"
      ],
      "author": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Sat Nov 12 11:03:14 2016 +0200"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Sat Nov 12 11:03:14 2016 +0200"
      },
      "message": "* NEWS: Mention the extended support for -jN on MS-Windows.\n"
    },
    {
      "commit": "15066b73f41b1787e18dc278cea0bec2e5d2173a",
      "tree": "bbf3b4a03c4cb01ab260480743dfe919672c7890",
      "parents": [
        "7ed37f0166b6478837e1a02b8d7ed18fdb85c95e"
      ],
      "author": {
        "name": "Marc Ullman",
        "email": "marc@mathworks.com",
        "time": "Sat Nov 12 10:53:28 2016 +0200"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Sat Nov 12 10:53:28 2016 +0200"
      },
      "message": "Support more than 63 jobs on MS-Windows\n\n* job.c (start_waiting_job, load_too_high):\n* w32/w32os.c (jobserver_setup, jobserver_acquire): Abstracted out\nMAXIMUM_WAIT_OBJECTS.  Call process_table_full instead.\n* w32/include/sub_proc.h: Update and add prototypes.\n* w32/subproc/sub_proc.c (GMAKE_MAXIMUM_WAIT_OBJECTS): New macro.\n(process_wait_for_multiple_objects): Drop-in replacement for Windows\nAPI WaitForMultipleOjects.\n(process_wait_for_any_private): Replaced MAXIMUM_WAIT_OBJECTS with\nGMAKE_MAXIMUM_WAIT_OBJECTS.\n(process_table_full): Replacement for process_used_slots.\n(process_used_slots): Removed, as no longer needed.\n(process_table_usable_size): Returns maximum usable size of process\ntable.\n(process_table_actual_size): Returns actual size of process table.\n(process_register): Added assertion.\n(process_easy): Abstracted out MAXIMUM_WAIT_OBJECTS.\n"
    },
    {
      "commit": "7ed37f0166b6478837e1a02b8d7ed18fdb85c95e",
      "tree": "1e3e3f3ca902ad911eb7f4394acb2b7603d4981c",
      "parents": [
        "912a0df1277872fdd30e63cb0edd7fba9ceeba1b"
      ],
      "author": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Sun Oct 09 16:09:52 2016 +0300"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Sun Oct 09 16:09:52 2016 +0300"
      },
      "message": "Only include strings.h in MinGW builds\n\n* main.c:\n* job.c: Include strings.h only if HAVE_STRINGS_H is defined.\n\n* config.h.W32.template (HAVE_STRINGS_H): Define only for MinGW,\nas MSVC doesn\u0027t have this header.\n"
    },
    {
      "commit": "912a0df1277872fdd30e63cb0edd7fba9ceeba1b",
      "tree": "5aeb9b07c2f150a92ff88c691a77846e1a29e138",
      "parents": [
        "0b413733121b8be7da927830ebe79a9a51249f09"
      ],
      "author": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Thu Oct 06 22:41:47 2016 +0300"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Thu Oct 06 22:41:47 2016 +0300"
      },
      "message": "Update the Guile version tested with the MS-Windows build.\n"
    },
    {
      "commit": "0b413733121b8be7da927830ebe79a9a51249f09",
      "tree": "498740721da7b7567d38fae65fa82bd5adf2e268",
      "parents": [
        "6f339b22eb87dc80d1037ccb04c787d156db0e8f"
      ],
      "author": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Thu Oct 06 22:39:14 2016 +0300"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Thu Oct 06 22:39:14 2016 +0300"
      },
      "message": "Avoid compiler warnings with MinGW runtime 3.22.2\n\n* main.c:\n* job.c: Include strings.h, to get the prototypes of strcasecmp\nand strncasecmp with latest MinGW runtime versions.\n* config.h.W32.template (HAVE_STRINGS_H): Define.\n"
    },
    {
      "commit": "6f339b22eb87dc80d1037ccb04c787d156db0e8f",
      "tree": "61452d6e58995da53db75c4b21b997fd9812de68",
      "parents": [
        "e26560508c5fb9e803c100a6e79c9a6a1bf8c161"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Jun 19 10:52:17 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jun 24 20:50:42 2016 -0400"
      },
      "message": "* README.W32.template: Update the build documentation.\n\n* build_w32.bat: Fix issues with Visual Studio builds.  Fix an error\nthat always created Debug builds.  Support 32bit and 64bit builds.\n"
    },
    {
      "commit": "e26560508c5fb9e803c100a6e79c9a6a1bf8c161",
      "tree": "0e004bb71c3911cd41be372a2520287589fb700f",
      "parents": [
        "9ab8af7cd8aaac587787d9df7e34758951d7c470"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jun 24 20:49:32 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jun 24 20:50:40 2016 -0400"
      },
      "message": "* Update to pre-release version 4.2.90.\n"
    },
    {
      "commit": "9ab8af7cd8aaac587787d9df7e34758951d7c470",
      "tree": "b22ca6cbe5b4bc8916943abab0747ae1e1175637",
      "parents": [
        "f522852f07d390823776d48d42332d02b658db01"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Jun 06 08:32:45 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Fri Jun 10 19:02:10 2016 -0400"
      },
      "message": "GNU Make release 4.2.1.\n"
    },
    {
      "commit": "f522852f07d390823776d48d42332d02b658db01",
      "tree": "b8a1be9aa02bbe1c84856be2e55e9be28f0e721f",
      "parents": [
        "a3d8c086d54c112fecfa2b9026a32a14f741f5f5"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Jun 06 08:32:00 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Jun 06 08:32:00 2016 -0400"
      },
      "message": "* maintMakefile: TP recommends rsync for retrieving PO files.\n"
    },
    {
      "commit": "a3d8c086d54c112fecfa2b9026a32a14f741f5f5",
      "tree": "508a41ece8353ccc38404bc2701c957a9bc3bfc0",
      "parents": [
        "4762480ae9cb8df4878286411f178d32db14eff0"
      ],
      "author": {
        "name": "Jeremy Devenport",
        "email": "jeremy.devenport@gmail.com",
        "time": "Tue May 31 03:09:24 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue May 31 03:17:26 2016 -0400"
      },
      "message": "* main.c (main): [SV 48009] Reset stack limit for make re-exec.\n\nCopyright-paperwork-exempt: yes\n"
    },
    {
      "commit": "4762480ae9cb8df4878286411f178d32db14eff0",
      "tree": "97a04dc5edf9f5cd73198e8d38cbcf84c15c01cc",
      "parents": [
        "ef6c059e1e4ff119aef48f3ce164bef4cbf467e6"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue May 31 02:56:51 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue May 31 03:17:26 2016 -0400"
      },
      "message": "[SV 47995] Ensure forced double-colon rules work with -j.\n\nThe fix for SV 44742 had a side-effect that some double-colon targets\nwere skipped.  This happens because the \"considered\" facility assumed\nthat all targets would be visited on each walk through the dependency\ngraph: we used a bit for considered and toggled it on each pass; if\nwe didn\u0027t walk the entire graph on every pass the bit would get out\nof sync.  The new behavior after SV 44742 might return early without\nwalking the entire graph.  To fix this I changed the considered value\nto an integer which is monotonically increasing: it is then never\npossible to incorrectly determine that a previous pass through the\ngraph already considered the current target.\n\n* filedef.h (struct file): make CONSIDERED an unsigned int.\n* main.c (main): No longer need to reset CONSIDERED.\n* remake.c (update_goal_chain): increment CONSIDERED rather than\ninverting it between 0\u003c-\u003e1.\n(update_file_1): Reset CONSIDERED to 0 so it\u0027s re-considered.\n(check_dep): Ditto.\n* tests/scripts/features/double_colon: Add a regression test.\n"
    },
    {
      "commit": "ef6c059e1e4ff119aef48f3ce164bef4cbf467e6",
      "tree": "fa7f266a383ccb99b4e0bb04f4e11fa55b7d5ba3",
      "parents": [
        "cf4ed2ebe81c3188610cd76c113840bb2bc6197e"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue May 31 02:26:26 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue May 31 03:17:26 2016 -0400"
      },
      "message": "* DELETE_ON_ERROR: [SV 48061] Use \"exit 1\" for portability.\n\nReported by Joel Fredrikson \u003cJoel.Fredrikson@it.uu.se\u003e\n"
    },
    {
      "commit": "cf4ed2ebe81c3188610cd76c113840bb2bc6197e",
      "tree": "beff5ff302de0826729bd9340f2d41e044883038",
      "parents": [
        "5a4f9a67a3b4ada5447baf2c36dad00ffa924399"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed May 25 17:25:25 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue May 31 03:17:26 2016 -0400"
      },
      "message": "* w32/pathstuff.c: [SV 47996] Use ISBLANK() not isblank().\n"
    },
    {
      "commit": "5a4f9a67a3b4ada5447baf2c36dad00ffa924399",
      "tree": "7cbaae4e9ce783fab27875112f311ddfb3cce58e",
      "parents": [
        "2987163ac419a13e199b43f96b2622407e22729d"
      ],
      "author": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Sat May 28 12:53:02 2016 +0300"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Sat May 28 12:53:02 2016 +0300"
      },
      "message": "Fix printing time stamps on MS-Windows\n\n* dir.c (print_dir_data_base) [WINDOWS32]: Use %I64u format for\nprinting unsigned 64-bit data types, as %ull is not universally\nsupported.\n"
    },
    {
      "commit": "2987163ac419a13e199b43f96b2622407e22729d",
      "tree": "326d2565eb4dc76cea5c2d68ee50f317c37e2b0f",
      "parents": [
        "ec6198012261e11b72bd5a95bd9e5c4d895c5f22"
      ],
      "author": {
        "name": "Luke Allardyce",
        "email": "lukeallardyce@gmail.com",
        "time": "Fri May 27 22:39:55 2016 +0300"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Fri May 27 22:39:55 2016 +0300"
      },
      "message": "[SV 48037] Fix MinGW build with Posix configury tools\n\n* w32/Makefile.am (libw32_a_CPPFLAGS): Add -I$(srcdir)/glob.\n\nCopyright-paperwork-exempt: yes\n"
    },
    {
      "commit": "ec6198012261e11b72bd5a95bd9e5c4d895c5f22",
      "tree": "a33c12e2a0ce327fcb409ccf4e234e05e3d67e96",
      "parents": [
        "9bb994e8319c2b153cd3d6d61e2c2882895e7c3a"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat May 21 15:23:54 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun May 22 09:25:55 2016 -0400"
      },
      "message": "GNU Make release 4.2.\n"
    },
    {
      "commit": "9bb994e8319c2b153cd3d6d61e2c2882895e7c3a",
      "tree": "f8cb15ced283497f0b012dc70b33e71b5f881f1e",
      "parents": [
        "e2ebea35f11059e888b2fe2bfc8b24fda48c1f88"
      ],
      "author": {
        "name": "Joe Crayne",
        "email": "oh.hello.joe@gmail.com",
        "time": "Sat May 21 17:26:00 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat May 21 17:34:45 2016 -0400"
      },
      "message": "[SV 44742] Fix double-colon rules plus parallel builds.\n\n* remake.c (update_file): Don\u0027t update double-colon target status\nif we\u0027re still building targets.\n(ftime_t): Don\u0027t propagate timestamps for double-colon targets that\nwe\u0027ve not examined yet.\n* tests/scripts/features/double_colon: Add parallel build tests.\n\nCopyright-paperwork-exempt: yes\n"
    },
    {
      "commit": "e2ebea35f11059e888b2fe2bfc8b24fda48c1f88",
      "tree": "e79a36cc4c885fcad80b240edd878604648bdd2e",
      "parents": [
        "c73ed7dd1cda65463e9ed8b99bcd4a7d9195d7fa"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat May 21 13:08:34 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat May 21 16:22:32 2016 -0400"
      },
      "message": "* read.c (eval): [SV 47960] Skip record waiting files when ignoring.\n\n* tests/scripts/features/conditionals: Test this scenario.\n"
    },
    {
      "commit": "c73ed7dd1cda65463e9ed8b99bcd4a7d9195d7fa",
      "tree": "391eec685e146acf94af83ea30c388cd14216b0e",
      "parents": [
        "ba8383efd8b1fded117f2587c78c40b28fe4e016"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun May 01 19:24:20 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat May 21 16:22:32 2016 -0400"
      },
      "message": "Separate the GNU make load ABI from internal types.\n\nCreate an internal type \"floc\" and convert all users to that type.\n* gnumake.h (gmk_floc): Remove the offset field from this type.\n* loadapi.c (gmk_eval): Convert gmk_floc to internal floc.\n"
    },
    {
      "commit": "ba8383efd8b1fded117f2587c78c40b28fe4e016",
      "tree": "2aabe327f94e1b9a7b3ff1fb6fc6629775d543b9",
      "parents": [
        "6f7fb050b4af7335de259f570b75bf6c217eb1cd"
      ],
      "author": {
        "name": "Paul Eggert",
        "email": "eggert@cs.ucla.edu",
        "time": "Sun May 01 15:52:58 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat May 21 16:22:25 2016 -0400"
      },
      "message": "Fixes for enhanced GCC warnings.\n\nMove function prototypes into header files and out of .c files.\nUse void argument lists for functions that accept no args.\nRemove unused macros.  Make private functions static.  Align\ntypes with printf format characters.\n"
    },
    {
      "commit": "6f7fb050b4af7335de259f570b75bf6c217eb1cd",
      "tree": "21cfcad4bfb2d24b0966b742d9141e0323de501d",
      "parents": [
        "45200a42d3de9a022584f98200ec141f46dcdf95"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun May 01 15:34:42 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat May 21 16:21:31 2016 -0400"
      },
      "message": "Fix compile issues with Windows and VMS.\n\n* main.c (initialize_stopchar_map): isblank() is not part of C89.\nInstall bits for space and tab directly.\n* makeint.h: Don\u0027t define vfork; autoconf handles this for us.\n* vmsjobs.c: Rename NEXT_TOKEN to V_NEXT_TOKEN to avoid conflicts.\n* dir.c (print_dir_data_base): Visual Studio C doesn\u0027t have int64_t.\n* w32/subproc/sub_proc.c (process_begin): Missing arg to memset().\n* build_w32.bat: Don\u0027t use obsolete Visual Studio flags.\n"
    },
    {
      "commit": "45200a42d3de9a022584f98200ec141f46dcdf95",
      "tree": "41a8ca9806bf701935ecc9bd26b657bcd27aea95",
      "parents": [
        "4c9e10fd94718c130e5186faa27d56b4a3713153"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Apr 24 11:27:57 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat May 21 14:30:37 2016 -0400"
      },
      "message": "Allow compiling with an ISO C 1989/1990 compiler.\n\n* posixos.c (jobserver_post_child): Use C89 for loop syntax.\n* remake.c (update_goal_chain): Ditto.\n* variable.c (parse_variable_definition): Ditto.\n"
    },
    {
      "commit": "4c9e10fd94718c130e5186faa27d56b4a3713153",
      "tree": "aa58d29dc82825012fba1154afed46617a44c422",
      "parents": [
        "6e640321fdef276ae500c3263eab9962dbc625fd"
      ],
      "author": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Tue May 17 18:15:26 2016 +0300"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Tue May 17 18:15:26 2016 +0300"
      },
      "message": "[SV 47942] Avoid random crashes in subordinate programs on MS-Windows\n\n* w32/subproc/sub_proc.c (process_begin): Zero out startInfo\nbefore using it.  Fixes crashes in Intel Fortran compiler invoked\nby Make.\n"
    },
    {
      "commit": "6e640321fdef276ae500c3263eab9962dbc625fd",
      "tree": "441551fab636a19b26061e0b08cff1d4b11e4078",
      "parents": [
        "7241d136f4c249aa100af2da8a4f56b977b3d761"
      ],
      "author": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Sun Apr 24 09:53:38 2016 +0300"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Sun Apr 24 09:53:38 2016 +0300"
      },
      "message": "Fix the MS-Windows MinGW build\n\n* build_w32.bat (GccCompile): Use -std\u003dgnu99, as some code uses\nC99 features (\u0027for\u0027 loop initial declarations).\n\n* dir.c (print_dir_data_base) [WINDOWS32]: Cast \u0027mtime\u0027 to\n\u0027int64_t\u0027, and use %I64d to print it, to avoid compile-time\nwarning about printing a \u0027time_t\u0027 value, which could be either\na 32-bit or a 64 bit integral type.\n"
    },
    {
      "commit": "7241d136f4c249aa100af2da8a4f56b977b3d761",
      "tree": "7f9b3878c3875570eabbaf1943a2d3f23a5cff38",
      "parents": [
        "c2be1df8804c9b3cb25f12cf6979ec20f5a0ba24"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Apr 23 11:21:36 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Apr 23 11:21:36 2016 -0400"
      },
      "message": "* tests/scripts/features/output-sync: increase test timeout.\n\nI\u0027m getting random failures with a timeout of 10s; increase to 30s.\n"
    },
    {
      "commit": "c2be1df8804c9b3cb25f12cf6979ec20f5a0ba24",
      "tree": "14289f015375564381ffa4d3476d89be806ee4d1",
      "parents": [
        "f1a9625001e88240af5f51a298adee01715f2dd0"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 11 07:50:11 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 11 07:51:05 2016 -0400"
      },
      "message": "* NEWS: Update for pre-release\n"
    },
    {
      "commit": "f1a9625001e88240af5f51a298adee01715f2dd0",
      "tree": "5df0fc5b0762fa3171adc7c82a72438061173320",
      "parents": [
        "047bd5a16f5ba39e778d3438777147e583e3f3b2"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Apr 10 17:22:57 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 11 07:51:05 2016 -0400"
      },
      "message": "* dep.h, makeint.h (show_goal_error): Move to makeint.h.\n"
    },
    {
      "commit": "047bd5a16f5ba39e778d3438777147e583e3f3b2",
      "tree": "755273bf46dd7780422748c7eb3c5dfee26e1439",
      "parents": [
        "3fc99a48e14b3f61d7103d93eb7159f3b980a086"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Apr 10 17:12:48 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 11 07:51:05 2016 -0400"
      },
      "message": "[SV 46433] Show recipe line offsets in line number messages.\n\nWhile displaying line numbers, show the relevant line number inside\nthe recipe not just the first line of the entire recipe.\nSample changes suggested by Brian Vandenberg \u003cphantall@gmail.com\u003e\n\n* gnumake.h (gmk_floc): Add an \u0027offset\u0027 to track the recipe offset.\n* read.c (eval, eval_makefile, eval_buffer): Initialize \u0027offset\u0027.\n(record_files, install_pattern_rule): Ditto.\n* job.c (new_job, job_next_command): Update \u0027offset\u0027 based on the\nline of the recipe we\u0027re expanding or invoking.\n(child_error): Add \u0027offset\u0027 when showing the line number.\n* function.c (func_shell_base): Ditto.\n* output.c (error, fatal): Ditto.\n* NEWS: Mention the new ability.\n* tests/scripts/features/errors: Check the line number on errors.\n* tests/scripts/functions/warning: Check the line number on warnings.\n* tests/scripts/features/output-sync,\ntests/scripts/features/parallelism, tests/scripts/functions/shell,\ntests/scripts/functions/error: Update line numbers.\n"
    },
    {
      "commit": "3fc99a48e14b3f61d7103d93eb7159f3b980a086",
      "tree": "146ed1979a3782dc4e5871ae53b0c01176f8fd15",
      "parents": [
        "87a5f98d248fe63fe6e3e53ee3e1b1b1fa5e49dc"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Apr 09 20:06:06 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Apr 09 20:06:46 2016 -0400"
      },
      "message": "* maintMakefile: Add a rule for storing preprocessor output.\n"
    },
    {
      "commit": "87a5f98d248fe63fe6e3e53ee3e1b1b1fa5e49dc",
      "tree": "e97a49d65b0cf7901eb6b551a7d5085353e6f04a",
      "parents": [
        "53554e41e8ab9ba4d70787881d0a57b94eda1c63"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Apr 09 19:49:27 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Apr 09 20:06:46 2016 -0400"
      },
      "message": "[SV 102] Don\u0027t show unnecessary include file errors.\n\nDelay the generation of error messages for included files until we\nare sure that we can\u0027t rebuild that included file.\n* dep.h (struct dep): Don\u0027t reuse \"changed\"; make a separate field\nto keep \"flags\".  Get rid of dontcare and use the flag.\n(struct goaldep): Create a new structure for goal prereqs\nthat tracks an errno value and the floc where the include happened.\nRework the structures to ensure they are supersets as expected.\nIn maintainer mode with GCC, use inline to get type checking.\n* read.c (eval_makefile): Return a struct goaldep for the new\nmakefile.  Ensure errno is set properly to denote a failure.\n(read_all_makefiles): Switch to goaldep and check errno.\n(eval): Don\u0027t show included file errors; instead remember them.\n* remake.c (update_goal_chain): Set global variables to the current\ngoaldep we\u0027re building, and the entire chain.\n(show_goal_error): Check if the current failure is a consequence\nof building an included makefile and if so print an error.\n(complain): Call show_goal_error() on rule failure.\n* job.c (child_error): Call show_goal_error() on child error.\n* main.c (main): Switch from struct dep to goaldep.\n* misc.c (free_dep_chain): Not used; make into a macro.\n* tests/scripts/features/include: Update and include new tests.\n* tests/scripts/options/dash-B, tests/scripts/options/dash-W,\ntests/scripts/options/print-directory,\ntests/scripts/variables/MAKE_RESTARTS: Update known-good-output.\n"
    },
    {
      "commit": "53554e41e8ab9ba4d70787881d0a57b94eda1c63",
      "tree": "0c30ddf8a9237b1070da397be9e9fcbc4c35cef1",
      "parents": [
        "5bd7ad2b225bf9229ca96ba63b90f8094a2becde"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Apr 09 09:25:50 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Apr 09 09:25:50 2016 -0400"
      },
      "message": "* job.c (child_error): Add filename length to output length.\n\nReported by Dale Stimson \u003cdale@riyescott.com\u003e\n"
    },
    {
      "commit": "5bd7ad2b225bf9229ca96ba63b90f8094a2becde",
      "tree": "8ed6e632aa28ee2b56f6d8366f69d1f37c8c71c5",
      "parents": [
        "65115e7095e1232e590c8920e7f828706a67fa4a"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 04 01:23:04 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 04 01:38:37 2016 -0400"
      },
      "message": "Preserve the real value of -jN in MAKEFLAGS using jobserver.\n\nPreviously if the jobserver was active, MAKEFLAGS would contain only\nthe -j option but not the number (not -j5 or whatever) so users\ncould not discover that value.  Allow that value to be provided in\nMAKEFLAGS without error but still give warnings if -jN is provided\non the command line if the jobserver is already activated.\n\n* NEWS: Discuss the new behavior.\n* os.h, posixos.c, w32/w32os.c: Return success/failure from\njobserver_setup() and jobserver_parse_auth().\n* main.c (main): Separate the command line storage of job slots (now\nin arg_job_slots) from the control storage (in job_slots).  Make a\ndistinction between -jN flags read from MAKEFLAGS and those seen\non the command line: for the latter if the jobserver is enabled then\nwarn and disable it, as before.\n* tests/scripts/features/jobserver: Add new testing.\n"
    },
    {
      "commit": "65115e7095e1232e590c8920e7f828706a67fa4a",
      "tree": "413a8dc1df268f4d1f636c649ceca47f9de1e4d6",
      "parents": [
        "75dd0bd8bc045493550841d540992049458b81c3"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 04 01:16:13 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 04 01:38:37 2016 -0400"
      },
      "message": "* tests/run_make_tests.pl: Add file/lineno info to .run file.\n"
    },
    {
      "commit": "75dd0bd8bc045493550841d540992049458b81c3",
      "tree": "62cffd83be9bc7949c0255a81c182e623da67eb8",
      "parents": [
        "8b54c5cff98cd4b4533f4b4f10e82faca36c6880"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 04 01:15:17 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 04 01:38:37 2016 -0400"
      },
      "message": "* maintMakefile: Fix logging of check-alt-config target.\n"
    },
    {
      "commit": "8b54c5cff98cd4b4533f4b4f10e82faca36c6880",
      "tree": "0051d40a3f0bbf1c76cbf365f090697753d0cf67",
      "parents": [
        "65c447289e863dfc3e6cdcf9ec0be00e284decc3"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 04 01:13:43 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 04 01:38:32 2016 -0400"
      },
      "message": "* job.c (child_execute_job): Fix $(shell...) under NO_OUTPUT_SYNC.\n\n* main.c (decode_output_sync_flags): Use NONE for NO_OUTPUT_SYNC.\n"
    },
    {
      "commit": "65c447289e863dfc3e6cdcf9ec0be00e284decc3",
      "tree": "6bf85027f5b6551d31eef87b9a8400ea81d230a9",
      "parents": [
        "86b20728fedfc7275f2aa2a47ca3c881b958562d"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Apr 03 16:54:04 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 04 01:36:08 2016 -0400"
      },
      "message": "* main.c (main): Restrict disabling debugging for MAKEFILES.\n"
    },
    {
      "commit": "86b20728fedfc7275f2aa2a47ca3c881b958562d",
      "tree": "f5e4ec323895ef6f30d9cec1fc6374fcdcb992c5",
      "parents": [
        "b8a8af655035ce06ca2b3e94ca763e6a89fa85a8"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Apr 02 17:18:40 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 04 01:36:08 2016 -0400"
      },
      "message": "* Makefile.am, w32/Makefile.am: Fix *os.c for Windows builds.\n\nOriginal change provided by Luke Allardyce \u003clukeallardyce@gmail.com\u003e\n"
    },
    {
      "commit": "b8a8af655035ce06ca2b3e94ca763e6a89fa85a8",
      "tree": "9a49a1aaf71cfdfea8511b6fa67be00f6e93b257",
      "parents": [
        "360b76af842d47927ad4f28289e43602bf18b62a"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Apr 02 17:18:14 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 04 01:36:08 2016 -0400"
      },
      "message": "* make.texi: Confirm that CURDIR contains an absolute path.\n"
    },
    {
      "commit": "360b76af842d47927ad4f28289e43602bf18b62a",
      "tree": "318b92d6fbce12cb2d69c7690241e1ea2e916555",
      "parents": [
        "c9e6ab9ac731b4281f05eb06be4eb641ec28a879"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Apr 02 16:33:41 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 04 01:36:08 2016 -0400"
      },
      "message": "* docs/make.texi: [SV 47392] Add \"Integrating make\" chapter.\n"
    },
    {
      "commit": "c9e6ab9ac731b4281f05eb06be4eb641ec28a879",
      "tree": "a98e5e1409233abc548b127d0e7e8b39cd146d5b",
      "parents": [
        "40277b885082bd62e1e312bc1226a383df899802"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Apr 02 16:29:48 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Apr 04 01:36:08 2016 -0400"
      },
      "message": "Change --jobserver-fds to more generic --jobserver-auth.\n\n* NEWS: Mention the change.\n* main.c: Rename jobserver_fds variable to jobserver_auth and\n--jobserver-fds option to --jobserver-auth.\n* os.h, posixos.c, w32/w32os.c: Rename jobserver_parse_arg() and\njobserver_get_arg() to jobserver_parse_auth()/jobserver_get_auth().\n"
    },
    {
      "commit": "40277b885082bd62e1e312bc1226a383df899802",
      "tree": "31528491366ff6cf45e0cfce91803a6aba0a5467",
      "parents": [
        "35047f824aaa655cb5ff0adec6478db688f277a9"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Mar 23 01:26:55 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Mar 23 01:26:55 2016 -0400"
      },
      "message": "* tests/run_make_tests.pl: Preserve $make_command\n\n* tests/scripts/options/dash-n: Use $make_command.  This fixes\na spurious failure when running tests with valgrind enabled.\n"
    },
    {
      "commit": "35047f824aaa655cb5ff0adec6478db688f277a9",
      "tree": "d800b24af2a69414112e241a5f6ade9cbbca1940",
      "parents": [
        "e97159745d3359285cef535af780cd8e2b6b0791"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Mar 23 01:26:04 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Mar 23 01:26:04 2016 -0400"
      },
      "message": "* variable.c: Clean up some memory leaks.\n"
    },
    {
      "commit": "e97159745d3359285cef535af780cd8e2b6b0791",
      "tree": "756e580294134631855d7a689453aecee1ce3d3d",
      "parents": [
        "2b9dd215d588a1b9aa8eaa398e567414afaafce8"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Mar 21 00:36:55 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Mar 23 01:25:51 2016 -0400"
      },
      "message": "[SV 46995] Strip leading/trailing space from variable names\n\n* makeint.h: Change MAP_SPACE to MAP_NEWLINE, and add MAP_PATHSEP\nand MAP_SPACE which is now MAP_BLANK|MAP_NEWLINE.  Create\nNEW_TOKEN(), END_OF_TOKEN(), ISBLANK(), ISSPACE() macros.\n* main.c (initialize_stopchar_map): Set MAP_NEWLINE only for\nnewline characters.\n* Convert all uses of isblank() and isspace() to macros.\n* Examine all uses of isblank() (doesn\u0027t accept newlines) and\nchange them wherever possible to ISSPACE() (does accept newlines).\n* function.c (func_foreach): Strip leading/trailing space.\n* variable.c (parse_variable_definition): Clean up.\n* tests/scripts/functions/foreach: Test settings and errors.\n* tests/scripts/functions/call: Rewrite to new-style.\n* tests/scripts/misc/bs-nl: Add many more tests for newlines.\n"
    },
    {
      "commit": "2b9dd215d588a1b9aa8eaa398e567414afaafce8",
      "tree": "5fa7dd34968fe6c63ef78bcc83aaa795cf1144e5",
      "parents": [
        "fc2ddebdae087dbdd4b0db7654696e1a0e53ebc3"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Mar 19 17:26:08 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Mar 21 00:44:53 2016 -0400"
      },
      "message": "* function.c (func_file): Support reading from files.\n\n* NEWS: Add information about reading files.\n* make.texi (File Function): Describe reading files.\n* tests/scripts/functions/file: Test new features for $(file ...)\n"
    },
    {
      "commit": "fc2ddebdae087dbdd4b0db7654696e1a0e53ebc3",
      "tree": "da30ced9d462d1e6ccbdb977d72bbf1a57e3cbeb",
      "parents": [
        "b4682cb4797b25b7f5d3e05feb95ed4d01dfb393"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Mar 19 17:25:21 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Mar 20 14:23:46 2016 -0400"
      },
      "message": "* doc/make.texi (Setting Variables): Fix typo (add comma).\n"
    },
    {
      "commit": "b4682cb4797b25b7f5d3e05feb95ed4d01dfb393",
      "tree": "f229922000cf213766c6e2f91e46d0ecbc3f78bf",
      "parents": [
        "09202bc880b1cb40bdf5035b7cefebc74d4c552e"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Mar 19 17:24:00 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Mar 20 14:23:22 2016 -0400"
      },
      "message": "* job.c (child_error): Combine file info with error message.\n\n* tests/scripts/...: Update error message matches.\n"
    },
    {
      "commit": "09202bc880b1cb40bdf5035b7cefebc74d4c552e",
      "tree": "c195f1ce47cf8b466cd17dfa1d9fe9282511868d",
      "parents": [
        "9ae02b79167e66311d23979cf1433d76054b86f8"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Mar 19 17:23:19 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Mar 19 17:23:19 2016 -0400"
      },
      "message": "* variable.c: Align type of variable_changenum.\n"
    },
    {
      "commit": "9ae02b79167e66311d23979cf1433d76054b86f8",
      "tree": "bc04b60148e5918a5126689bc060d960f61a04e6",
      "parents": [
        "247b71e690708a529cf639e196815cbbbee077d7"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Mar 13 18:13:00 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Mar 13 18:23:20 2016 -0400"
      },
      "message": "[SV 45728] Detect changes in .VARIABLES more accurately.\n\nFor performance, we only recompute .VARIABLES when (a) it\u0027s expanded\nand (b) when its value will change from a previous expansion.  To\ndetermine (b) we were checking the number of entries in the hash\ntable which used to work until we started undefining entries: now if\nyou undefine and redefine the same number of entries in between\nexpanding .VARIABLES, it doesn\u0027t detect any change.  Instead, keep\nan increasing change number.\n* variables.c: Add variable_changenum.\n(define_variable_in_set, merge_variable_sets): Increment\nvariable_changenum if adding a new variable to the global set.\n(undefine_variable_in_set): Increment variable_changenum if\nundefining a variable from the global set.\n(lookup_special_var): Test variable_changenum not the hash table.\n* tests/scripts/variables/special: Test undefining variables.\n"
    },
    {
      "commit": "247b71e690708a529cf639e196815cbbbee077d7",
      "tree": "90146f51bf1d48fcf6d52fbcd3f3d036d38395cb",
      "parents": [
        "e33f3d72bf2b7bd142ac60646ddbfb471890d486"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Mar 13 15:59:12 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Mar 13 15:59:12 2016 -0400"
      },
      "message": "* main.c(main): Disable output sync without parallel builds.\n"
    },
    {
      "commit": "e33f3d72bf2b7bd142ac60646ddbfb471890d486",
      "tree": "99e30d1f61eeb9a8712313b94d30705fb299d506",
      "parents": [
        "fd1dd7c398974b05950735a724838c09eb72ad1e"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Mar 13 03:02:00 2016 -0400"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Mar 13 03:02:00 2016 -0400"
      },
      "message": "[SV 46581] Pre-define .LOADED to avoid warnings.\n\n* main.c (main): Pre-define .LOADED as a default-level variable.\n* load.c (load_file): Set the value rather than append it.  Avoid\nadding an extra initial whitespace.\n* tests/scripts/features/load: Run with --warn-undefined-variables.\n"
    },
    {
      "commit": "fd1dd7c398974b05950735a724838c09eb72ad1e",
      "tree": "3ab124b56dfb7eb29597fcbb9b4393ad960143fb",
      "parents": [
        "14b2d7effb0afd75dfd1ed2534e331784f7d2977"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Mar 13 01:12:07 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Mar 13 01:12:07 2016 -0500"
      },
      "message": "[SV 44555] Use vfork() instead of fork() where available.\n\nTesting has shown that vfork() is actually significantly\nmore efficient on systems where it\u0027s supported, even for\ncopy-on-write implementations.  If make is big enough,\nduplicating the page tables is significant overhead.\n\n* configure.ac: Check for fork/vfork.\n* makeint.h: Include vfork.h and set up #define for it.\n* os.h, posixos.c (get_bad_stdin): For children who can\u0027t use\nthe normal stdin file descriptor, get a broken one.\n* job.c (start_job_command): Avoid so many ifdefs and simplify\nthe invocation of child_execute_job()\n(child_execute_job): move the fork operation here so it can\nreturn early for the parent process.  Switch to use vfork().\n* function.c (func_shell_base): Use new child_execute_job() and\nsimplify ifdefs.\n* job.h, main.c, remote-cstms.c, vmsjobs.c, w32os.c: Update\ndeclarations and calls.\n"
    },
    {
      "commit": "14b2d7effb0afd75dfd1ed2534e331784f7d2977",
      "tree": "15b74aa2f30eba723902b0b7b3e21c5aec722bca",
      "parents": [
        "85c788572d054bc2c41b84007875edbd37ad3ed5"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Mar 09 00:18:57 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Wed Mar 09 00:18:57 2016 -0500"
      },
      "message": "* job.c (exec_command): [SV 47365] Show error on exec failure.\n"
    },
    {
      "commit": "85c788572d054bc2c41b84007875edbd37ad3ed5",
      "tree": "0e6f3a19d6f438528803a394f1df1000065d27c4",
      "parents": [
        "8164c8ab3da4026f16b7a8d343b136ebfaeaed8e"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Mar 08 23:07:14 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Mar 08 23:40:46 2016 -0500"
      },
      "message": "[SV 46261] Use pselect() for jobserver where supported.\n\n* Makefile.am, configure.ac: Check for pselect() and sys/select.h.\n* main.c (main): Block SIGCHLD if we have pselect() support.\n* posixos.c (jobserver_acquire): If we support pselect() then use\nit to query the jobserver pipe, while also listening for SIGCHLD.\nAlso pselect() supports a timeout so avoid alarm() calls.\n"
    },
    {
      "commit": "8164c8ab3da4026f16b7a8d343b136ebfaeaed8e",
      "tree": "74c355d973ad578dbcd117a3219ad83bfbdb90a8",
      "parents": [
        "fb7a7adc8a54bfd33ca939f7ab6e039a3b2c3355"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Mar 07 01:30:21 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Mar 08 23:40:46 2016 -0500"
      },
      "message": "Clean up some compiler warnings.\n\n* commands.c, commands.h: Use unsigned char for flags.\n* dir.c: Use time_t and size_t, and char for a boolean value.\n* job.c: Use unsigned and char.\n* read.c: Return a signed type since -1 is a valid return code.\n"
    },
    {
      "commit": "fb7a7adc8a54bfd33ca939f7ab6e039a3b2c3355",
      "tree": "e861773723747ed35bd09b9fd6347fa8b7b7fb18",
      "parents": [
        "4f8be4bb28594756b994d6a55e23416570a9a1ed"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Mar 06 13:29:43 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Mar 08 23:40:46 2016 -0500"
      },
      "message": "Extract jobserver implementation into OS-specific files.\n\n* os.h, posixos.c, w32/w32os.c: New files implementing jobserver.\n* job.c, job.h, main.c, makeint.h: Move content to new files.\n* w32/include/sub_proc.h, w32/subproc/sub_proc.c: Ditto.\n* Makefile.am: Build and package OS-specific files.\n* build_w32.bat, make_msvc_net2003.vcproj, README.W32.template:\nUpdate for new files, and clean up the build.\n* POTFILES.in, maintMakefile, NMakefile.template: Ditto.\n* w32/subproc/build.bat: Delete as unused.\n"
    },
    {
      "commit": "4f8be4bb28594756b994d6a55e23416570a9a1ed",
      "tree": "03eab999abc7625f31fc9a135475211f12598460",
      "parents": [
        "e2b39edc22f527de3bbbea30dd756cb1f1f876cf"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sat Mar 05 15:21:59 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Tue Mar 08 00:31:47 2016 -0500"
      },
      "message": "[SV 46261] Add more EINTRLOOP wrappers.\n\nThis cannot be a perfect solution because there are always other\npossible places EINTR can happen, including external libraries\nsuch as gettext, Guile etc.\n"
    },
    {
      "commit": "e2b39edc22f527de3bbbea30dd756cb1f1f876cf",
      "tree": "915a578f2c98959aa940e9b865c73728b2b3bf94",
      "parents": [
        "8530d77c68cf772cd5d3455574c7973232df846c"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Feb 28 22:07:50 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Feb 29 01:35:02 2016 -0500"
      },
      "message": "* strcache.c (add_hugestring): [SV 46832] Support huge strings.\n\nThe strcache was limited to strings of length 65535 or less,\nbecause the length is kept in an unsigned short.  To support\nhuge strings add a new simple linked list, which we don\u0027t try\nto hash.\n"
    },
    {
      "commit": "8530d77c68cf772cd5d3455574c7973232df846c",
      "tree": "627d24e2a5ad08be347b1e67acd8188b4d23d340",
      "parents": [
        "89e18c12ebbd4245b8600af0b3fdbffe0d73bffe"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Feb 28 21:32:18 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Feb 29 01:35:02 2016 -0500"
      },
      "message": "* strcache.c (add_string): [SV 47071] Handle huge initial string.\n\nIf the very first string added to the string cache is more than\nhalf the maximum size, we failed when moving the only strcache\nbuffer to the full list.\n"
    },
    {
      "commit": "89e18c12ebbd4245b8600af0b3fdbffe0d73bffe",
      "tree": "f68037ee3e9cd383ae8531be170a7c77de3fbf79",
      "parents": [
        "bccd01354b7e8f75f3e86cefb34f8a7f908bc360"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Feb 28 20:20:18 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Feb 29 01:33:50 2016 -0500"
      },
      "message": "[SV 47151] Exit with 1 when checking recursive make -q\n\n* job.h (struct child): New bit to mark recursive command lines.\n* job.c (start_job_command): Set the recursive command line bit.\n(reap_children): If the child is a recursive command and it exits\nwith 1 during question mode, don\u0027t print an error and exit with 1.\n* tests/scripts/options/dash-q: Add a regression test.\n"
    },
    {
      "commit": "bccd01354b7e8f75f3e86cefb34f8a7f908bc360",
      "tree": "bc8cb7f2197cd20295b9f70751a47078baf24b75",
      "parents": [
        "5f9d3411601a3f8a7cc0147a6b7fb2b03068ff65"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Feb 28 20:19:24 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Feb 29 01:32:12 2016 -0500"
      },
      "message": "* main.c (define_makeflags): Add parens to avoid GCC warning.\n"
    },
    {
      "commit": "5f9d3411601a3f8a7cc0147a6b7fb2b03068ff65",
      "tree": "106a49f65d593003bc596f2cb599cf82f3867ce3",
      "parents": [
        "798ebd241ba348748b9e9b302b9d07dbfec64e42"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Feb 28 20:11:45 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Mon Feb 29 01:31:16 2016 -0500"
      },
      "message": "* tests/scripts/features/archives: Handle deterministic archives.\n\nNewer versions of binutils allow ar to be compiled to generate\n\"deterministic archives\" by default: in this mode no timestamp\ninformation is generated in the static archive, which utterly\nbreaks GNU make\u0027s archive updating capability.  Debian and Ubuntu\nhave turned this feature on by default in their distributions\nwhich causes the regression tests to fail.\n\nUpdate the regression tests to check for the availability of the\n\"U\" option to ar which disables deterministic archives and allows\nGNU make\u0027s archive support to work properly again.\n"
    },
    {
      "commit": "798ebd241ba348748b9e9b302b9d07dbfec64e42",
      "tree": "ea589ceb574b812f631f83587b257726c26cd1e6",
      "parents": [
        "4db6d0c694fba2463521caf9e46567f17b42ff5f"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Feb 28 12:55:20 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Feb 28 12:55:20 2016 -0500"
      },
      "message": "Update Copyright statements for the new year.\n"
    },
    {
      "commit": "4db6d0c694fba2463521caf9e46567f17b42ff5f",
      "tree": "cca6bffd5d44511421fba3ff1c65bbb99076f51c",
      "parents": [
        "b754a35df7a5bd8bffd08fde0a7dfb599cbdc235"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Feb 28 12:41:41 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Feb 28 12:41:41 2016 -0500"
      },
      "message": "* doc/make.texi: [SV 47163] Fix typo in \u0027ifdef\u0027 documentation.\n"
    },
    {
      "commit": "b754a35df7a5bd8bffd08fde0a7dfb599cbdc235",
      "tree": "d725f25a66b6f23695dd72e3ea0906929e2874d2",
      "parents": [
        "168f12375dacd54e8dede3f94d2eec6a7ab5ac17"
      ],
      "author": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Feb 28 12:35:15 2016 -0500"
      },
      "committer": {
        "name": "Paul Smith",
        "email": "psmith@gnu.org",
        "time": "Sun Feb 28 12:35:15 2016 -0500"
      },
      "message": "* doc/make.texi: [SV 35455] Add more uses for Empty Recipes.\n"
    },
    {
      "commit": "168f12375dacd54e8dede3f94d2eec6a7ab5ac17",
      "tree": "297d5da4aee2b1b470dc411979c85f9ba7a78921",
      "parents": [
        "83443c706a831c4dd607c8411f7975d98d8ee144"
      ],
      "author": {
        "name": "Gisle Vanem",
        "email": "gvanem@yahoo.no",
        "time": "Sat Nov 07 11:27:03 2015 +0200"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Sat Nov 07 11:27:03 2015 +0200"
      },
      "message": "Fix diagnostics on MS-Windows when environment is too large\n\n\t* w32/subproc/sub_proc.c (process_begin): Fix test of the error\n\tcause when the environment block is too large.\n\nCopyright-paperwork-exempt: yes.\n"
    },
    {
      "commit": "83443c706a831c4dd607c8411f7975d98d8ee144",
      "tree": "1ae385541da61d9cda57035baecc56dd53ac194b",
      "parents": [
        "4a5377aef7a6093a8cc4ab76d5ad37ca3592b44c"
      ],
      "author": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Tue Oct 27 20:51:43 2015 +0200"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Tue Oct 27 20:51:43 2015 +0200"
      },
      "message": "Update README.W32.template\n\n* README.W32.template: Update for latest developments.  Make it\nclear we don\u0027t recommend using HAVE_CASE_INSENSITIVE_FS in\ngeneral.\n"
    },
    {
      "commit": "4a5377aef7a6093a8cc4ab76d5ad37ca3592b44c",
      "tree": "aee71a1f563dd26d91f4f0dedd81eb7cd12960ad",
      "parents": [
        "48391c28179be3dad3d9634a728fd0f5484b1cb7"
      ],
      "author": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Tue Oct 27 20:47:27 2015 +0200"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Tue Oct 27 20:47:27 2015 +0200"
      },
      "message": "[SV 46304] Don\u0027t invoke C++ compiler on C sources on MS-Windows\n\n* default.c (default_variables) [HAVE_CASE_INSENSITIVE_FS]: Make\nCOMPILE.C and LINK.C be synonyms for COMPILE.c and LINK.c,\nrespectively.\n"
    },
    {
      "commit": "48391c28179be3dad3d9634a728fd0f5484b1cb7",
      "tree": "d5f101d8fb605b77f93d6ed8a33d335eaa3bf991",
      "parents": [
        "42745a900f191f67637c5c819a0672dd30b45b50"
      ],
      "author": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Wed Sep 23 11:42:53 2015 +0300"
      },
      "committer": {
        "name": "Eli Zaretskii",
        "email": "eliz@gnu.org",
        "time": "Wed Sep 23 11:42:53 2015 +0300"
      },
      "message": "[SV 45838] When invoking w32 programs, don\u0027t use free\u0027d memory.\n\n* w32/subproc/sub_proc.c (process_begin): Freeing argv[0] makes\nthe other argv[i] pointers invalid, so need to allocate a new\narray and copy argv[i] for i !\u003d 0 first, replacing argv[0] with\nthe batch file name, before we can free argv[0].\n"
    }
  ],
  "next": "42745a900f191f67637c5c819a0672dd30b45b50"
}
