From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id ltH9D0Fh618KaQAAWB0awg (envelope-from ) for ; Tue, 29 Dec 2020 12:02:57 -0500 Received: by simark.ca (Postfix, from userid 112) id 25AC01F0B7; Tue, 29 Dec 2020 12:02:57 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,RDNS_NONE,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from sourceware.org (unknown [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 219211F0AA for ; Tue, 29 Dec 2020 12:02:56 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A559B388A409; Tue, 29 Dec 2020 17:02:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A559B388A409 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1609261375; bh=ZpL8uKvD2/f2QY0hsc6ciF+burpB3zYhkSRA5W8Ir5k=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=qfAy40EKkKdE/jcdBEDSl2C/5HHdh93ehIM9okKYZHRHU0gUrVDlrL718qucXJhYs 7h8Rsa1z3rJ5mCWW6i4G4s2BoQTdJ54C+fXYN9lCtZrAk2lSMr/BrN51+4t1QogVai hrKQnacNotl1N58abeHhrPR2Qh6F6Sw7Pwy7POoM= Received: from sonic305-20.consmr.mail.ir2.yahoo.com (sonic305-20.consmr.mail.ir2.yahoo.com [77.238.177.82]) by sourceware.org (Postfix) with ESMTPS id 7D0133857012 for ; Tue, 29 Dec 2020 17:02:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 7D0133857012 X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1609261370; bh=7BIthTey0AOfjotmNXL6HjR56VUT40CKo/EACHFhFhu=; h=From:To:Subject:Date:From:Subject; b=dWQWObGArTQyFpzbCH8Lw+EqJ3uzXRUyXGAwcn85OgNhx42Mn6Brma6a1cSJ8CN5R/58C8Qun0DDfOJJCL248ADe8e0WJ4kJKK+8ZShQKfDinWOUs4qhXZNpmOetU7El3cNhkjJlxGh8+IKhTcS+jhpukU9NtMkYFtZHnVraaO+jjk1rrfdYi0y377BEuhtu+06fMsk3kSB1/eQi6GMXnlQLv4bNQ6nnjP6ABfVs3+2sT6JVflJdFR6isHvfdyb9DX4W5XL0sT5Fc5tZrrE+ou3ufKYjPaS/lShloqxnwLe4dS3o3SEoaoRxA6yQ+eXm3MEU6VtTGO35B/rLJyCaKg== X-YMail-OSG: iTkL.9QVM1mxdVgMuR80ISzKdlnRIwJQ0odj8BHISUBERPLJ4NzsMIvQRxJBF4n kNJXMeKVBlMmXOFQDv0FedgBz8lR5ToqBUOhWlQz2C4yvxGyq7rgTn5EDeguvFohM6Z9NSj1ob5Y PPJoSSKGwekSRX7LuHAK59BomymAzuHkB7xORK9D.k5yrv33EjwI.7gs1pK4gk73dPMH5teJVXGh 2IP1qkXFWDB1qTIPC4McQRlnw83nh6uLDMoZqw9mmyCC6Y.2zToRZ5uA8Ru.Yl9_H997YfdFuyWp eayMAJTFdg6nBeRtsYl1mIudncWO1j3l8b.u4_g_CNEJYF1uIUhooepMSriMWEkAbtVxToZ2MLo_ B2nH4uYj5hiz2TomO63Pw1XJz8BarYmsgBzMYLhScBj562G80FSBvzq7K_WOcs5xZuffFSwBL8us Qjqx_WNLaGvh6VKw_bxQdOWy7c_H31FwfWo3AraL.aROaDWgLIUdBoQynP02IQCRgcz824NQG1w6 BLnAWFUX_RX4.0hPKKYmbv51XHdiflWbPaQ57RkXBt0Wr8ymIrib8Ogsv7ibF24y8Oj67dcJgGSN x4vSkdRFF12DOBEIcQOXplebMAPZOVaA8QkX.tVMCuQhHi6Q.qrUoji8SvRMRLGbRZpMOeANjKvK 175wu6o0_t9CEwENimas2k9ZREGnLLxrG3jzes7DIjGV0Rzl.GMqBd90GEay.algJwJnAkoL69CB jFGiMTol03Ms9WmKkYDYhJvkkJ2G6iB1h.K98byw78Ccw0Rrs.K_Rt6UqhkrxdV3p.ZKeHUgPWKJ .uruFcGrblLHrV4utGbLRjc7BkO1ieMOVUeW_JoZonC3r7ews2Hof66ZZ08yUwHaA.CUPzGEkHR5 kbo3IYxZqQgnLUVdcO6sbxYKXv2cm8E_cyYftzwiONA2MhDagb9Cad5ew2FiSWpET3vO72vvV.Es HlRioxTTORarjCgFlbysspPoEFMi2JWS6LlgWqiExLHRSV6qRBtxmZTPagx.QapA6gLAtK1e5hCS f1H6JdkEksMG7dVhVfwqDfi_SYoAfe39xtnbEsPtcpZh5RVe.qDrXq7WNkkF523zW7fwUgRva3hl 4vlkeq7.Mj2xOyzy8ud4elEyk2_nZyjPyKTnbApYT_BxomMILSGFFFyDZmvZ.ojyj30UVVcRQgVg bb1QSTT05OMTisprADZTURqFESLBILOM_TCeN8Q1B7msqwYK2RcOPmFBcQ16B.7qOgwxeUm2uoXE ytNSTs0xXNVPaZMEdfYaSjPqwNpm6mX7MK7eLNzsyHUJMbzienxh8g5UC.iE3hSGbxLqd.SVPLIV dDPJGY8SO7ZhgycwzA7EzaQ1JGvRznofeJz_ZBdYoYgSvWb7cAkMlw2mo9Erjm15Dxdr49bQeszk s1bIrnIUZhaYWfk_9FogJ1qCgRsHmrfrY7YRxnSZUuB.kW7TXFOJGZ1DN5PMZpz_gAipvSs7ZQan LsmdzfcPrIcBh7.M2Kb3kyMmUnsJM3QLTidrqiQ1qDMc7arTjCaV894CPXKraMJPpQ20oIea4Kxy 6vj.g8itqfIdMURXInzzUoVAuJ59aBDT.sdudzs_AVceLAxGDD.SSo6o7c1FuRiPdjC5Gmw6h1CN 9YuRXwvpqrGp3RGHKVsuhPHIaq0fwDYni5Ag3l9uoARrs1PheyR8l0hrZDJinA8lFRtR2n1m2s4P rpWldOWdqyROpBLSIhYAYmkT9dGwMGj_XdI9HXSqn6t.yEIKZBZ5VFACNEv4UeceH0nEwxlypM_V y8QE4CUmBlv.ixl.4cEjfCG9qNhgf.IE5lP7iml27WwcpHDxTru.tm7369e4oJkYg2VoIi8Zipxq NWRQkeIatfbSU6LcV3.MFql.wgmd0eFD2PhV19_SHr5lo6Ypubyfakd0eFgx06j6322JpGCikFX9 O9swbIITOzcHnjiM2vhGG0cbwH.Xnyf7z3jRJUn7mxNUJRhILXqojjNvlJKd098vcZihU9gCfqdl kbOz1NzYznK68aTnWGXGjrB94E0eQCouEIsAbL5wg3jTr7pcwuMc._3KQQj_IOHLx8p2RoH8G3Cu woqT1fUgfOkvN6GXrKvQrZvfkiioEv8Nb101akViEusy0UXkAre6ALPbMI3jt72dlXY0P0ur5ID0 pR5GqkPxXqai2EeL_EdHkbOAfp6OvXWxwwWsTDlNQ_qeoajaVlbXjsP0q3dMxKQT1FUZW2rmfrrL MydJM2qA2wwCouClR4LH2_Slsl8W446rHqLhr6HSgpYR4uJ7K9b2NdE8GRlJPnz86Kj0NqYue.2i PTi9n722ToKLkRYSSIJfJOFAPqDjM1AXiCNiDmgTao_qgmVTLhdp.FJLCG2sRgWTFfK5InNLgMM5 CUXZCjlZla7Q4nYoItnevVzQiSit4DInQSMpec6vAhAOpBxomFGsmioKPeCeGRQ-- Received: from sonic.gate.mail.ne1.yahoo.com by sonic305.consmr.mail.ir2.yahoo.com with HTTP; Tue, 29 Dec 2020 17:02:50 +0000 Received: by smtp411.mail.ir2.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 1076516e444f24a80d67c937a4f3cedd; Tue, 29 Dec 2020 17:02:48 +0000 (UTC) To: gdb-patches@sourceware.org Subject: [PATCH 3/4] Add optional styled argument to gdb.execute Date: Tue, 29 Dec 2020 18:02:26 +0100 Message-Id: <20201229170227.821-3-ssbssa@yahoo.de> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20201229170227.821-1-ssbssa@yahoo.de> References: <20201229170227.821-1-ssbssa@yahoo.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Antivirus: Avast (VPS 201229-2, 12/29/2020), Outbound message X-Antivirus-Status: Clean X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Hannes Domani via Gdb-patches Reply-To: Hannes Domani Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" This makes it possible to use the colored output of commands, e.g. for a custom TuiWindow. gdb/ChangeLog: 2020-12-29 Hannes Domani * cli/cli-script.c (execute_control_commands_to_string): Use styled argument. * cli/cli-script.h (execute_control_commands_to_string): Add styled argument. * python/python.c (execute_gdb_command): Parse "styled" argument. gdb/doc/ChangeLog: 2020-12-29 Hannes Domani * python.texi (Basic Python): Document "styled" argument. --- gdb/cli/cli-script.c | 4 ++-- gdb/cli/cli-script.h | 2 +- gdb/doc/python.texi | 6 +++++- gdb/python/python.c | 24 ++++++++++++++++++------ 4 files changed, 26 insertions(+), 10 deletions(-) diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c index c9c4a713de..273f925cbc 100644 --- a/gdb/cli/cli-script.c +++ b/gdb/cli/cli-script.c @@ -422,13 +422,13 @@ execute_control_commands (struct command_line *cmdlines, int from_tty) std::string execute_control_commands_to_string (struct command_line *commands, - int from_tty) + int from_tty, bool styled) { /* GDB_STDOUT should be better already restored during these restoration callbacks. */ set_batch_flag_and_restore_page_info save_page_info; - string_file str_file; + string_file str_file (styled); { current_uiout->redirect (&str_file); diff --git a/gdb/cli/cli-script.h b/gdb/cli/cli-script.h index 6ad6e61fb4..2ca9f13d4f 100644 --- a/gdb/cli/cli-script.h +++ b/gdb/cli/cli-script.h @@ -135,7 +135,7 @@ extern void execute_control_commands (struct command_line *cmdlines, will be temporarily set to true. */ extern std::string execute_control_commands_to_string - (struct command_line *commands, int from_tty); + (struct command_line *commands, int from_tty, bool styled = false); /* Exported to gdb/breakpoint.c */ diff --git a/gdb/doc/python.texi b/gdb/doc/python.texi index 51f6d1aa05..c97866e9fc 100644 --- a/gdb/doc/python.texi +++ b/gdb/doc/python.texi @@ -217,7 +217,7 @@ A string containing the python directory (@pxref{Python}). @end defvar @findex gdb.execute -@defun gdb.execute (command @r{[}, from_tty @r{[}, to_string@r{]]}) +@defun gdb.execute (command @r{[}, from_tty @r{[}, to_string @r{[}, styled@r{]]]}) Evaluate @var{command}, a string, as a @value{GDBN} CLI command. If a GDB exception happens while @var{command} runs, it is translated as described in @ref{Exception Handling,,Exception Handling}. @@ -234,6 +234,10 @@ returned as a string. The default is @code{False}, in which case the return value is @code{None}. If @var{to_string} is @code{True}, the @value{GDBN} virtual terminal will be temporarily set to unlimited width and height, and its pagination will be disabled; @pxref{Screen Size}. + +If both @var{to_string} and @var{styled} are @code{True}, then the returned +string also contains the ANSI terminal escape styling sequences used for +colored output. @end defun @findex gdb.breakpoints diff --git a/gdb/python/python.c b/gdb/python/python.c index bf3abdbbbe..eb9f8fb4fe 100644 --- a/gdb/python/python.c +++ b/gdb/python/python.c @@ -574,13 +574,15 @@ static PyObject * execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw) { const char *arg; - PyObject *from_tty_obj = NULL, *to_string_obj = NULL; - int from_tty, to_string; - static const char *keywords[] = { "command", "from_tty", "to_string", NULL }; + PyObject *from_tty_obj = NULL, *to_string_obj = NULL, *styled_obj = NULL; + int from_tty, to_string, styled; + static const char *keywords[] = { "command", "from_tty", "to_string", + "styled", NULL }; - if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!", keywords, &arg, + if (!gdb_PyArg_ParseTupleAndKeywords (args, kw, "s|O!O!O!", keywords, &arg, &PyBool_Type, &from_tty_obj, - &PyBool_Type, &to_string_obj)) + &PyBool_Type, &to_string_obj, + &PyBool_Type, &styled_obj)) return NULL; from_tty = 0; @@ -601,6 +603,15 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw) to_string = cmp; } + styled = 0; + if (styled_obj) + { + int cmp = PyObject_IsTrue (styled_obj); + if (cmp < 0) + return NULL; + styled = cmp; + } + std::string to_string_res; scoped_restore preventer = prevent_dont_repeat (); @@ -638,7 +649,8 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw) if (to_string) to_string_res = execute_control_commands_to_string (lines.get (), - from_tty); + from_tty, + styled); else execute_control_commands (lines.get (), from_tty); } -- 2.29.2