)]}'
{
  "commit": "d86a8c28dbc0843f02bfbcbe800c2af3a52173f2",
  "tree": "c0e3fde3bd587a474de2d58e59ba75040c00e5a6",
  "parents": [
    "ef27fb95dfc6647a43f09afa2b4936bb6ca4a576"
  ],
  "author": {
    "name": "Tom de Vries",
    "email": "tdevries@suse.de",
    "time": "Thu Mar 26 10:45:59 2026 +0100"
  },
  "committer": {
    "name": "Tom de Vries",
    "email": "tdevries@suse.de",
    "time": "Thu Mar 26 10:45:59 2026 +0100"
  },
  "message": "[gdb] Add c_ctrl/c_unctrl\n\nReadline exports macros CTRL/UNCTRL (compatible with readline macro\nCTRL_CHAR), such that:\n- CTRL_CHAR (\u0027C\u0027) \u003d\u003d 0\n- CTRL_CHAR (0x03 /* ^C */) \u003d\u003d 1\n- CTRL (\u0027C\u0027) \u003d\u003d 0x03 /* ^C */\n- CTRL (\u0027c\u0027) \u003d\u003d 0x03 /* ^C */\n- UNCTRL (0x03 /* ^C */) \u003d\u003d \u0027C\u0027\n\nAdd c_ctrl/c_unctrl, a variant of CTRL/UNCTRL that\u0027s compatible with gnulib\u0027s\nc_iscntrl.\n\nWhile c_iscntrl (0x7f /* ^? */) \u003d\u003d 1, CTRL_CHAR (0x7f /* ^? */) \u003d\u003d 0.\n\nConsequently, the current code using CTRL_CHAR also explicitly handles RUBOUT\n(which is readline\u0027s way of representing ^?).\n\nUse c_iscntrl/c_ctrl/c_unctrl instead of CTRL_CHAR/CTRL/UNCTRL, removing\nredundant RUBOUT handling code.\n\nTested on x86_64-linux.\n\nA v1 was submitted here [2].\n\nChanges in v2:\n- change $subject to use gdb instead of gdbsupport since we\u0027re adding the\n  new functions in gdb/utils.c\n- change parameter and result type of c_unctrl to unsigned char\n- avoid using readline macros in c_unctrl implementation\n- rewrite c_unctrl to be compatible with c_iscntrl, making sure to handle\n  ^?.\n- add c_ctrl\n- use c_ctrl/c_iscntrl instead of CTRL/CTRL_CHAR.\n\nSuggested-By: Tom Tromey \u003ctom@tromey.com\u003e [1]\nApproved-By: Tom Tromey \u003ctom@tromey.com\u003e\n\n[1] https://sourceware.org/pipermail/gdb-patches/2026-March/226136.html\n[2] https://sourceware.org/pipermail/gdb-patches/2026-March/226171.html\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8c70a61cdec6c768b7babee605829dc69cbec0db",
      "old_mode": 33188,
      "old_path": "gdb/completer.c",
      "new_id": "49189ac183f2c12df37286e97f9e9e60b264f097",
      "new_mode": 33188,
      "new_path": "gdb/completer.c"
    },
    {
      "type": "modify",
      "old_id": "6b94fa2e8b0f8c3b37ed49d8dd363c25761566a7",
      "old_mode": 33188,
      "old_path": "gdb/tui/tui-io.c",
      "new_id": "e0892a40c0d7e286a1e227d119e68fc1635cb6e9",
      "new_mode": 33188,
      "new_path": "gdb/tui/tui-io.c"
    },
    {
      "type": "modify",
      "old_id": "b6b6fb7acf515eecc97173be3adb4b7eac027f7c",
      "old_mode": 33188,
      "old_path": "gdb/tui/tui.c",
      "new_id": "9cf21f390c8049352ea92f5d6b310772fc6752ec",
      "new_mode": 33188,
      "new_path": "gdb/tui/tui.c"
    },
    {
      "type": "modify",
      "old_id": "6908256de4d4a4d9b863940d8cba374d827d30f1",
      "old_mode": 33188,
      "old_path": "gdb/utils.c",
      "new_id": "b073bb9fdf30b6e5a26a6da5f5c50851367502de",
      "new_mode": 33188,
      "new_path": "gdb/utils.c"
    },
    {
      "type": "modify",
      "old_id": "7cab021e7a91526a866633863cbb17663d3e406c",
      "old_mode": 33188,
      "old_path": "gdb/utils.h",
      "new_id": "ecef7d13c20a5460677604d438173d04c203d91b",
      "new_mode": 33188,
      "new_path": "gdb/utils.h"
    }
  ]
}
