)]}'
{
  "log": [
    {
      "commit": "7e49a4f99273858887806c6251d958e1e664bedf",
      "tree": "35279e730589b0a460211eeb73279bdff1978102",
      "parents": [
        "a3b161bb72d7fdb58e79afd0f706849601f77fe2"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Aug 02 13:36:03 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "build: Test for features.h and move include to lib/zebra.h\n\n* configure.ac: Check for features.h, which is needed to get Clang to\n  define __STDC_IEC_559__.\n* lib/{stream.c,zebra.h}: move the features.h include to zebra.h, so\n  lib/network.c also gets it.\n"
    },
    {
      "commit": "a3b161bb72d7fdb58e79afd0f706849601f77fe2",
      "tree": "d7a9e5323ec658fc144306c44e0783d7c0f4db92",
      "parents": [
        "4359501e1a427159c9b49f3041889837aaaf2eb3"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Mon Aug 01 15:13:58 2016 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "lib: IEC559 tests are fragile, reduce to warning rather than error.\n\n* {network,stream}.c: Weaken the compile time tests for IEEE754 / IEC-559\n  binary floating point format from an error to a warning when not detected.\n\n  I can\u0027t think of any platforms that are not IEEE-754 format, and as the\n  testing for the defines appears to be fragile (often not set) the error\n  just gives false positives.\n\n  Even the warnings may be too much.  Those should probably be moved\n  to some configure test.  Will do for now though, to fix compilation\n  on CentOS and some BSDs.\n"
    },
    {
      "commit": "d41e7b975b901f109608471b77c46718c1fb5b45",
      "tree": "8db478bd5cd56ab041ba8e7251b3849954abd922",
      "parents": [
        "581ecbfe91d23791c116a8e3790208a17c1a5983"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul@opensourcerouting.org",
        "time": "Tue May 19 15:38:43 2015 +0100"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@hpe.com",
        "time": "Tue Sep 13 10:36:38 2016 +0100"
      },
      "message": "lib/stream: add float/double \u003c-\u003e IEEE-754 single/double mux/demuxers\n\n* stream.{c,h}: Add stream_get{f,d} and stream_put{f,d}) demux and muxers to\n  safely convert between big-endian IEEE-754 single and double binary\n  format, as used in IETF RFCs, and C99.  Implementation depends on host\n  using __STDC_IEC_559__, which should be everything we care about.  Should\n  correctly error out otherwise.\n\n  Thanks to Aidan Delaney \u003caidan@phoric.eu\u003e and Olivier Dugeon for pointing\n  out the __STDC_IEC_559__ macro.\n\n  Update: GCC does not per se set __STDC_IEC_559__, so also test for\n  __GCC_IEC_559 \u003e\u003d 1.\n"
    },
    {
      "commit": "821df2cf18e5978cc7ab532a8695444380d08270",
      "tree": "f306ad0e31d572c44193b5d709b4b3915ea89d90",
      "parents": [
        "ca8ec20b017393dbe91ff9e5ae2b7ff12872f869"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Sep 15 01:53:09 2015 -0700"
      },
      "committer": {
        "name": "Martin Winter",
        "email": "mwinter@opensourcerouting.org",
        "time": "Fri Oct 16 23:50:45 2015 -0700"
      },
      "message": "*: make sure zebra.h is always included first\n\nzebra.h pulls in config.h, which results in fiddling with things like\n__FILE_OFFSET_BITS. It must always be included first, in order to set\nflags that influence the compiler via \u003cfeatures.h\u003e.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "1ed8ce47b922b71f3b3cdd661e647bbe7ed2eca7",
      "tree": "8991923fd48342254db78275f2776480b824e18d",
      "parents": [
        "84c3840c7157438b5cb2e324d184ca08ac07fb41"
      ],
      "author": {
        "name": "Wenjian Ma",
        "email": "ytmwjian@163.com",
        "time": "Fri Jun 19 10:53:26 2015 +0800"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul@quagga.net",
        "time": "Sun Jun 21 12:32:29 2015 +0100"
      },
      "message": "lib, stream: fix stream sanity checks\n\nBecause  operator \"!\" has higher priority  than \"\u0026\u0026\",\nSo we put the \"\u0026\u0026\" expression in \"()\" to check both getp and endp.\nAcked-by: Donald Sharp \u003csharpd@cumulusnetworks.com\u003e\n"
    },
    {
      "commit": "eed3c48d3a7d2dae2cae2f2f250deffb843754a6",
      "tree": "07b2252438225065024d4a534eddf0e86c9b87a4",
      "parents": [
        "ef008d2f8dc8f7160d8a3d24a15f2fad79ef3242"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Mar 03 08:51:53 2015 +0100"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 21 10:17:31 2015 +0200"
      },
      "message": "*: use void * for printing pointers\n\nOn higher warning levels, compilers expect %p printf arguments to be\nvoid *.  Since format string / argument warnings can be useful\notherwise, let\u0027s get rid of this noise by sprinkling casts to void *\nover printf calls.\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "3790eb0d3f0bbb24b9c6be97f547cec144ee05d1",
      "tree": "08ccf694b43a92568a1278aa28374dcd09d4b0fe",
      "parents": [
        "bdd8cd70a042473477f9144c9cedb8dde11ba2c1"
      ],
      "author": {
        "name": "Stephen Hemminger",
        "email": "shemminger@vyatta.com",
        "time": "Wed Jan 13 00:32:43 2010 +0000"
      },
      "committer": {
        "name": "Vincent JARDIN",
        "email": "vincent.jardin@6wind.com",
        "time": "Mon Oct 27 16:08:22 2014 +0100"
      },
      "message": "stream: remove unused stream_read_unblock\n\nThe one place this was being used in BGP is now gone,\ncan remove deprecated interface.\nAcked-by: Feng Lu \u003clu.feng@6wind.com\u003e\n"
    },
    {
      "commit": "6b0655a25194c7c0331154edaa6124cf783e5e5e",
      "tree": "c0c7d479f2684531249668210da27a60322ba395",
      "parents": [
        "fdb913aedb5a9807ad60715e8badb4f25d57acea"
      ],
      "author": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jun 04 06:53:35 2014 +0200"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Wed Jun 04 06:58:02 2014 +0200"
      },
      "message": "*: nuke ^L (page feed)\n\nQuagga sources have inherited a slew of Page Feed (^L, \\xC) characters\nfrom ancient history.  Among other things, these break patchwork\u0027s\nXML-RPC API because \\xC is not a valid character in XML documents.\n\nNuke them from high orbit.\n\nPatches can be adapted simply by:\n\tsed -e \u0027s%^L%%\u0027 -i filename.patch\n(you can type page feeds in some environments with Ctrl-V Ctrl-L)\n\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "8c71e481dae11b7ae3f1ef561a989624b2ae84b6",
      "tree": "4c13b76e1b9aedc45ad9b086be972ba4999ada03",
      "parents": [
        "2c13299a05e5544a5e79c2a970256a21f488a3fa"
      ],
      "author": {
        "name": "Pradosh Mohapatra",
        "email": "pmohapat@cumulusnetworks.com",
        "time": "Wed Jan 15 06:57:57 2014 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Jun 03 15:08:32 2014 +0200"
      },
      "message": "bgpd: efficient NLRI packing for AFs !\u003d ipv4-unicast\n\nISSUE:\n\n  Currently, for non-ipv4-unicast address families where prefixes are\n  encoded in MP_REACH/MP_UNREACH attributes, BGP ends up sending one\n  prefix per UPDATE message. This is quite inefficient. The patch\n  addresses the issue.\n\nPATCH:\n\n  We introduce a scratch buffer in the peer structure that stores the\n  MP_REACH/MP_UNREACH attributes for non-ipv4-unicast families. This\n  enables us to encode multiple prefixes. In the end, the two buffers\n  are merged to create the UPDATE packet.\n\nSigned-off-by: Pradosh Mohapatra \u003cpmohapat@cumulusnetworks.com\u003e\nReviewed-by: Daniel Walton \u003cdwalton@cumulusnetworks.com\u003e\n[DL: removed no longer existing bgp_packet_withdraw prototype]\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "af514777f4327932a3e84f83d79e941967503e15",
      "tree": "68ddb2e6dd758b2c50f3a4facea1dfc925460312",
      "parents": [
        "6d729eeac91578dca29961e0e46f246f33c37f0c"
      ],
      "author": {
        "name": "Jorge Boncompte [DTI2]",
        "email": "jorge@dti2.net",
        "time": "Wed Jul 31 16:16:05 2013 +0000"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Tue Apr 01 17:14:44 2014 +0200"
      },
      "message": "lib: fix possible off-by-one in stream_put_prefix()\n\nThe STREAM_WRITEABLE() call only checks if there is space for the\nprefix in the stream but does not account for the prefixlen. The\nstream_putc() call reduces available space by 1 and we can end\ncopying one byte too much and with \"endp\" off by one if we are\nnear the buffer end.\n\nInstead of moving the stream_putc() call before STREAM_WRITEABLE(),\nwe check before hand for the required space, and open-code it. This\navoids a function call and verifying again the stream buffer.\n\nSigned-off-by: Jorge Boncompte [DTI2] \u003cjorge@dti2.net\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n"
    },
    {
      "commit": "4effc29fb1c33a87a8d386de39c20d36a6956645",
      "tree": "73e57392e4227aeae3ca3ef1db54e227f46909e6",
      "parents": [
        "b4154c145a2d1d0679983130413b81d44fbb04ab"
      ],
      "author": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat May 05 17:42:43 2012 -0700"
      },
      "committer": {
        "name": "David Lamparter",
        "email": "equinox@opensourcerouting.org",
        "time": "Thu Oct 25 10:15:58 2012 -0700"
      },
      "message": "lib: improve sanity checks in stream_set_endp()\n\n  * lib/stream.c: (stream_set_endp) Add checks to make sure that the\n    supplied \u0027endp\u0027 is within the \u0027size\u0027 of the stream, and that the\n    current read pointer \u0027getp\u0027 is not beyond the specified \u0027endp\u0027.\n"
    },
    {
      "commit": "d531050b7bf0f93d4d29a7a2f7b745641778b483",
      "tree": "82e45741fa3883f6e25a38f2abef4eea107fd54f",
      "parents": [
        "bed930fd70742af5ae138e0a5ee629dda296ea36"
      ],
      "author": {
        "name": "Subbaiah Venkata",
        "email": "svenkata@google.com",
        "time": "Sat Mar 24 13:10:19 2012 -0700"
      },
      "committer": {
        "name": "Avneesh Sachdev",
        "email": "avneesh@opensourcerouting.org",
        "time": "Sat Apr 07 13:53:40 2012 -0700"
      },
      "message": "lib: add stream_set_endp()\n\n  * lib/stream.[ch]:\n\n    - Add stream_set_endp(). This can be used to trim data (for\n      example, padding) at the end of a stream.\n\n    - Fix swapped \u0027getp\u0027 and \u0027endp\u0027 parameters in STREAM_WARN_OFFSETS.\n\nFrom: Subbaiah Venkata \u003csvenkata@google.com\u003e\nSigned-off-by: Avneesh Sachdev \u003cavneesh@opensourcerouting.org\u003e\nSigned-off-by: David Lamparter \u003cequinox@diac24.net\u003e\n"
    },
    {
      "commit": "3d52bb8085c32b54fa21d88588310716245291d4",
      "tree": "8d47a7c92cafb9df895ba32b705e19386e0944e9",
      "parents": [
        "032928091c558d3b0940be079049009f47652711"
      ],
      "author": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sat Jun 07 20:42:07 2008 +0000"
      },
      "committer": {
        "name": "Paul Jakma",
        "email": "paul.jakma@sun.com",
        "time": "Sat Jun 07 20:42:07 2008 +0000"
      },
      "message": "[lib] trivial: add const qualifier to stream_put/write\n\n2008-06-07 Paul Jakma \u003cpaul@jakma.org\u003e\n\n\t* stream.{c,h}: (stream_{put,write}) add const qualifier to source\n\t  argument. Change u_char to void *.\n"
    },
    {
      "commit": "581a02a9f71f43012c67217fe12d97808875c352",
      "tree": "4d04c1fe0d3195ba54b7fb126176a09c370dfea3",
      "parents": [
        "e8e1946edf6ba87ef53832cdceccc39d7f0c3f26"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jan 19 20:22:16 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Thu Jan 19 20:22:16 2006 +0000"
      },
      "message": "[lib/stream] small compile fix, use uint64_t, not u_int64_t.\n\n2006-01-19 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* stream.c: (stream_getq_from) should use POSIX uint64_t\n\t  not u_int64_t. Latter is neither a traditional BSD type, nor\n\t  a POSIX type.\n"
    },
    {
      "commit": "4b201d46348b81bd9d59aa626c81f7457ea6ef38",
      "tree": "b841d11214e5ec8ff4904d193c5e0b7c4e741a50",
      "parents": [
        "e14b7fca6279fe9dc41c8aa9816b5685952c4b19"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 14:35:19 2006 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue Jan 10 14:35:19 2006 +0000"
      },
      "message": "[stream] Add quad-word support and stream_resize\n\n2006-01-10 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* stream.c: (stream_new) Allocate stream data as seperate object.\n\t  (stream_free) free the data.\n\t  (stream_resize) new function, resize stream to new size.\n\t  (stream_{get,put}q*) new functions to get/put quad word size\n\t  types.\n\t* stream.h: (struct stream) make data seperate from the stream.\n\t  Export new stream_resize and quad-word get/put functions.\n"
    },
    {
      "commit": "0dab930314e215a627f848ffa824ed995eb2e13c",
      "tree": "f84189f12990561a616c65be59d8cb6ebef94569",
      "parents": [
        "0c2029e9121d4c80380c174c2503b7deaf4e03ce"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Tue May 03 09:07:56 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Tue May 03 09:07:56 2005 +0000"
      },
      "message": "2005-05-03 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* stream.h: Add comment about the special zero-ing ability of\n\t  stream_put.\n\t  (stream_recvmsg, stream_write) should return ssize_t and size_t\n\t  respectively. Should both be extern linkage.\n\t  (stream_recvfrom) Stream aware wrapper around recvfrom, in style\n\t  of stream_read_try.\n\t* stream.c: (stream_recvfrom) new function, wrapper around recvfrom.\n\t  (stream_recvmsg, stream_write) ssize_t and size_t return values\n"
    },
    {
      "commit": "81fb32404c942432d2bea1e50a4d53bf75fd0f70",
      "tree": "107d5d94061c110773c5b2985e383d2075bc6044",
      "parents": [
        "0d7e9134d828d5aee8c83960bb706a726cdc2ec4"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 24 16:02:53 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 24 16:02:53 2005 +0000"
      },
      "message": "2005-02-24 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* stream.c: (stream_read_try) Log a warning message if a fatal\n\t  I/O error occurs.\n\t  (stream_fifo_new) Fix prototype.\n\t* stream.h: Fix prototype for stream_fifo_new (need void arg).\n"
    },
    {
      "commit": "109ac96f0296fd66d5a1d37def44db3cef7ca0fb",
      "tree": "aa6e12891391dd9d0a890b2a89c39222ad6409e6",
      "parents": [
        "518cde8d6ce0434b02bd5d7cf7e9627d57af6952"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 19 01:17:07 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 19 01:17:07 2005 +0000"
      },
      "message": "2005-02-19 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* stream.c: (stream_new) fix dumb mistake.\n"
    },
    {
      "commit": "53270116df3f54b1f9411f0832567e9effa87593",
      "tree": "08fab8ea890f84694a0f9fcaaf55a13fbf698ef3",
      "parents": [
        "d7e2a8188f6e9eaccb5e1c1bd7b9d5af79429c0c"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 20:07:22 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Feb 17 20:07:22 2005 +0000"
      },
      "message": "2005-02-17 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* stream.c: (stream_read_try) Use new ERRNO_IO_RETRY macro.\n"
    },
    {
      "commit": "262feb1ad0838bb585955b6ada5acbe106dbc9bf",
      "tree": "392f66d5d71bcfdd87e5db32e89325ed9ef06c44",
      "parents": [
        "42218e71256cb86b5078c99c931030c7b0ce9bab"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 20:35:47 2005 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Wed Feb 16 20:35:47 2005 +0000"
      },
      "message": "2005-02-16 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* stream.h: Declare new function stream_read_try suitable for use\n\t  with non-blocking file descriptors.  Indicate that stream_read\n\t  and stream_read_unblock are deprecated.\n\t* stream.c: (stream_read_try) New function for use with non-blocking\n\t  I/O.\n\t  (stream_recvmsg) Should return -1 if the stream is too small to\n\t  contain the data.\n"
    },
    {
      "commit": "050c013ac35337d86b03f140fb17d2e8e33a8baa",
      "tree": "7241e3972e2116f67b762a37305c31ee7d8d9671",
      "parents": [
        "f2e6c429375adf0d3c5deaa409734d5d41ac15ce"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:47:47 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Feb 14 23:47:47 2005 +0000"
      },
      "message": "2005-02-14 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* stream.h: Unsigned long updated to size_t\n\t* stream.c: ditto\n\t* stream.h: Add stream_copy, stream_dup, stream_recvmsg.\n\t  Add comment describing struct stream abstraction, and various\n\t  other comments.\n\t  Deprecate several unsafe/ambigious macros.\n\t  Add STREAM_WRITEABLE and STREAM_READABLE.\n\t  Add (stream_getl_from) for symmetry.\n\t  Update stream_forward_{endp,getp} to use size_t offset.\n\t  Make stream data a 0 length array, rather than a seperate malloc.\n\t* stream.c: Add consistency checks. Update to follow stream.h\n\t  changes.\n\t  (stream_new) Alloc stream+data in one go.\n\t  (stream_copy) new function, copy a stream.\n\t  (stream_dup) new function, dup a stream.\n\t  (stream_recvmsg) new function, recvmsg data into a stream.\n\t  (stream_empty) no need to check getp \u003d\u003d 0.\n"
    },
    {
      "commit": "f2e6c429375adf0d3c5deaa409734d5d41ac15ce",
      "tree": "73c056492bff8eb06eb7350909d0b2fa8baba772",
      "parents": [
        "082253f5d08577e2c7b61ed2302be88295b459eb"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 12 14:35:49 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sat Feb 12 14:35:49 2005 +0000"
      },
      "message": "2005-02-12 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* stream.h: Unsigned long updated to size_t\n\t* stream.c: ditto\n"
    },
    {
      "commit": "9985f83ce7102f64b15f744b60320f8d14a8a5ff",
      "tree": "344629bdc2b4a7d53b8d7ca1705c9be2ca282d18",
      "parents": [
        "083ee9d9cdbf72a452b9af96e62d0625ea712cd9"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Feb 09 15:51:56 2005 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Feb 09 15:51:56 2005 +0000"
      },
      "message": "2005-02-09 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* (global) Update code to match stream.h changes.\n\t  stream_get_putp effectively replaced with stream_get_endp.\n\t  stream_forward renamed to stream_forward_getp.\n\t  stream_forward_endp introduced to replace some previous\n\t  setting/manual twiddling of putp by daemons.\n\t* lib/stream.h: Remove putp. Update reference to putp with endp.\n\t  Add stream_forward_endp, which daemons were doing manually.\n\t  Rename stream_forward to stream_forward_getp.\n\t  lib/stream.c: Remove/update references to putp.\n\t  introduce stream_forward_endp.\n"
    },
    {
      "commit": "0e43a2bcc0b044ec8e92108811c1341076938af9",
      "tree": "b57ec33d9184ddbd0bfcd5d41344300440428c69",
      "parents": [
        "4ba9b9247222a6031a8060ddd39bfb19d90624e8"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Dec 22 00:15:34 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Wed Dec 22 00:15:34 2004 +0000"
      },
      "message": "2004-12-21 Paul Jakma \u003cpaul.jakma@sun.com\u003e\n\n\t* stream.c: Dont allocate streams with 0 sized data buffers\n"
    },
    {
      "commit": "718e3744195351130f4ce7dbe0613f4b3e23df93",
      "tree": "bac2ad39971cd43f31241ef123bd4e470f695ac9",
      "parents": [],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Dec 13 20:15:29 2002 +0000"
      },
      "message": "Initial revision\n"
    }
  ]
}
