)]}'
{
  "commit": "c60bf3391bf4cb79b7adc6650094e21671ddaabd",
  "tree": "de574323a74d66a6b032dcfe4dbdb9659a422c97",
  "parents": [
    "585ea0c841df47c1542d33e17c5c6d532316ef74"
  ],
  "author": {
    "name": "Stefan Hajnoczi",
    "email": "stefanha@redhat.com",
    "time": "Thu Nov 14 11:54:14 2013 +0100"
  },
  "committer": {
    "name": "Kevin Wolf",
    "email": "kwolf@redhat.com",
    "time": "Wed Jan 22 12:07:17 2014 +0100"
  },
  "message": "readline: decouple readline from the monitor\n\nMake the readline.c functionality reusable.  Instead of calling\nmonitor_printf() and monitor_flush() directly, invoke function pointers\nprovided by the user.\n\nThis way readline.c does not know about Monitor and other users will be\nable to make use of readline.c.\n\nNote that there is already an \"opaque\" argument to the ReadLineFunc\ncallback.  Consistently call it \"readline_opaque\" from now on to\ndistinguish from the ReadLinePrintfFunc/ReadLineFlushFunc \"opaque\"\nargument.\n\nI also dropped the printf macro trickery since it\u0027s now highly unlikely\nthat anyone modifying readline.c would call printf(3) directly.  We no\nlonger need this protection.\n\nSigned-off-by: Stefan Hajnoczi \u003cstefanha@redhat.com\u003e\nSigned-off-by: Kevin Wolf \u003ckwolf@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "79f9c7d2ce431e670d4be48475a3bf8b83264052",
      "old_mode": 33188,
      "old_path": "hmp.c",
      "new_id": "468f97d17621b4292c99f95aca1db2572fbbeefa",
      "new_mode": 33188,
      "new_path": "hmp.c"
    },
    {
      "type": "modify",
      "old_id": "0faf6e1db72f1ffddd20b16f6322ea69b61169fb",
      "old_mode": 33188,
      "old_path": "include/monitor/readline.h",
      "new_id": "a89fe4a9a9644c5af3ef50b560e1247b95e08cdf",
      "new_mode": 33188,
      "new_path": "include/monitor/readline.h"
    },
    {
      "type": "modify",
      "old_id": "845f608665373923ed583b8f312ec8810d4a0266",
      "old_mode": 33188,
      "old_path": "monitor.c",
      "new_id": "32d02640a0f1fa7c886a5aaeadcd953dc5c291a6",
      "new_mode": 33188,
      "new_path": "monitor.c"
    },
    {
      "type": "modify",
      "old_id": "abf27ddec36c158a2ec610a9b745426a5d691aed",
      "old_mode": 33188,
      "old_path": "readline.c",
      "new_id": "ca894d1854547c1035361096765c38c38c3eb6ec",
      "new_mode": 33188,
      "new_path": "readline.c"
    }
  ]
}
