)]}'
{
  "log": [
    {
      "commit": "2265d20c1a568c7633d086ccf0233761ff942a2c",
      "tree": "f8b74d86a5b5e386ffec2e41f2025064aac423e4",
      "parents": [
        "3e6064f8384e5477593b8af0442931ca5930918b"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 08 15:43:21 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Mon Nov 08 15:43:21 2004 +0000"
      },
      "message": "2004-11-07 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* buffer.c: Add missing include of log.h.\n\t  (buffer_flush_available) written is compared against\n\t  mostly against unsigned types, only for the writev do we need\n          signed compare, so declare it as size_t and cast it to ssize_t\n          just for the error compare when we\u0027ve called writev.\n\t* buffer.h: Add comment that buffer data sizes really should be\n          size_t.\n"
    },
    {
      "commit": "49ff6d9d7a9ef9419dd7aab58ac9f7806e3e1040",
      "tree": "bb9e1d36b5bef56d2e47c69b6bab1ef54cf9696e",
      "parents": [
        "62d8e96a06e664c929a164bfb66b515d1c6877a8"
      ],
      "author": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Nov 04 19:26:16 2004 +0000"
      },
      "committer": {
        "name": "ajs",
        "email": "ajs",
        "time": "Thu Nov 04 19:26:16 2004 +0000"
      },
      "message": "2004-11-04 Andrew J. Schorr \u003cajschorr@alumni.princeton.edu\u003e\n\n\t* vty.c: Vtysh connections to daemons should use buffering.\n\t  (vty_out) Remove exception for vty_shell_serv, just use buffer_write.\n\t  (vty_new) Increase output buffer size to 4096 rounded up to a\n\t  multiple of pagesize.\n\t  (vtysh_read) After command has been executed and all output buffered,\n\t  call buffer_flush_available and schedule further writes if the\n\t  buffers are not yet empty.\n\t  (vtysh_write) New function to flush output to vtysh when the socket\n\t  is writeable.\n\t  (vty_event) Added new VTYSH_WRITE event for flushing buffers to vtysh\n\t  clients.  Also, should save read thread in vty-\u003et_read so the\n\t  thread can be cancelled in vty_close.\n\t* buffer.h: In struct buffer_data, remove unused \"parent\" field.\n\t  Convert \"unsigned char *data\" to \"unsigned char data[0]\" to save\n\t  a malloc.  Declare new function buffer_flush_available that works\n\t  with non-blocking sockets.\n\t* buffer.c: (buffer_data_new) Use a single malloc now that data is\n\t  a variable-size array at end of structure.\n\t  (buffer_data_free) Just a single free now that data is part of the\n\t  structure.\n\t  (buffer_write) Simplify the logic to make behavior more transparent.\n\t  (buffer_flush) Decrease b-\u003elength as data is written out.\n\t  (buffer_flush_vty_all) Decrease b-\u003elength as buffers are freed.\n\t  (buffer_flush_vty) Decrease b-\u003elength as data is written out.\n\t  (buffer_flush_available) New function to flush non-blocking sockets.\n"
    },
    {
      "commit": "9035efaa924c69f4f4fcb1049c7dc4f43b9da980",
      "tree": "f81d25b0e069ad8fb5f2843172a4e60fa0d6cbdf",
      "parents": [
        "ddd119fd3d94e95dd44aa9fb3bc3fca4f26078a0"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 10 11:56:56 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Sun Oct 10 11:56:56 2004 +0000"
      },
      "message": "2004-10-10 Paul Jakma \u003cpaul@dishone.st\u003e\n\n\t* version.h.in: (pid_output*) add const qualifier.\n\t* command.h: Change DEFUN func to take const char *[] rather\n          than char **, to begin process of fixing compile warnings in lib/.\n          Nearly all other changes in this commit follow from this change.\n        * buffer.{c,h}: (buffer_write) pointer-arithmetic is gccism, take\n          const void * and cast an automatic const char *p to it.\n          (buffer_putstr) add const\n        * command.c: (zencrypt) const qualifier\n          (cmd_execute_command_real) ditto\n          (cmd_execute_command_strict) ditto\n          (config_log_file) ditto.\n          Fix leak of getcwd() returned string.\n        * memory.{c,h}: Add MTYPE_DISTRIBUTE_IFNAME for struct dist ifname.\n        * distribute.{c,h}: Update with const qualifier.\n          (distribute_free) use MTYPE_DISTRIBUTE_IFNAME\n          (distribute_lookup) Cast to char *, note that it\u0027s ok.\n          (distribute_hash_alloc) use MTYPE_DISTRIBUTE_IFNAME.\n          (distribute_get)  Cast to char *, note that it\u0027s ok.\n        * filter.c: Update with const qualifier.\n        * if.{c,h}: ditto.\n        * if_rmap.{c,h}: ditto.\n          (if_rmap_lookup) Cast to char *, note that it\u0027s ok.\n          (if_rmap_get) ditto.\n        * log.{c,h}: Update with const qualifier.\n        * plist.{c,h}: ditto.\n        * routemap.{c,h}: ditto.\n        * smux.{c,h}: ditto. Fix some signed/unsigned comparisons.\n        * sockopt.c: (getsockopt_cmsg_data) add return for error case.\n        * vty.c: Update with const qualifier.\n"
    },
    {
      "commit": "8c328f1106cf0498333c2d8a96940e7b4581e316",
      "tree": "9bf24cca6a68a9dd5d4dda586484e497d0c19ca6",
      "parents": [
        "98c91ac6ac085713c00af00a6ac41779be6b50b3"
      ],
      "author": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 05 21:01:23 2004 +0000"
      },
      "committer": {
        "name": "hasso",
        "email": "hasso",
        "time": "Tue Oct 05 21:01:23 2004 +0000"
      },
      "message": "Number of warnings is down to 3 again in lib directory. A lot of const\u0027s\nadded to strings and a lot of int -\u003e unsigned int changes.\n"
    },
    {
      "commit": "5228ad27e2f3abe0ebb69f66607aedc048b94a13",
      "tree": "a65817a03150dbfeb56a1eaceab526f31be1cc1d",
      "parents": [
        "c2bfbcc38428b53e856617e1da8bbe9f8d2ee2fa"
      ],
      "author": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jun 04 17:58:18 2004 +0000"
      },
      "committer": {
        "name": "paul",
        "email": "paul",
        "time": "Fri Jun 04 17:58:18 2004 +0000"
      },
      "message": "2004-06-04 Paul Jakma \u003cpaul@dishone.st\u003e\n\n        * type mismatch fixes\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"
    }
  ]
}
