From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by sourceware.org (Postfix) with ESMTPS id 35D223858C41 for ; Fri, 9 Jun 2023 15:12:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 35D223858C41 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 5E52F21A44; Fri, 9 Jun 2023 15:12:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1686323565; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=a4E0D0ylknJaTO+Djg+nDXcbh0hNpcBMplls86XaW1o=; b=lXp6hS2pGc5EOmaMVxcfQzyZMczRTOoHG8UrZDqSCNFw2DCO7tDILSpSI57h0kYvxr01ob obKPvTd8WZo1IQOdpoP2bi8GlQ9k8DN18c0+JPavTgweG9WkuNxMmOKg78Eobnq2NhXijQ rv363o+ABjYodMPPTIMYfmn1AR7Vcjk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1686323565; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=a4E0D0ylknJaTO+Djg+nDXcbh0hNpcBMplls86XaW1o=; b=SWvF7kIrzhn+ohaVE0YTwKaz57ayiD65Unx41dTbwa2QuJyTkVb8Zb2e5FINfgHbNogNxc F5H+73+1mWvu5oBA== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 4945813A47; Fri, 9 Jun 2023 15:12:45 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id Jiu2EG1Bg2Q7fgAAMHmgww (envelope-from ); Fri, 09 Jun 2023 15:12:45 +0000 Content-Type: multipart/mixed; boundary="------------BNqpVrt6IBQ9i9NGlSdyp9jT" Message-ID: <00f39f95-7fc1-23f3-208e-988f14fb9736@suse.de> Date: Fri, 9 Jun 2023 17:12:54 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Subject: Re: [PATCH] [gdb/tui] Factor out border-mode help text Content-Language: en-US To: Tom Tromey , Tom de Vries via Gdb-patches References: <20230521195933.5351-1-tdevries@suse.de> <87a5x8ah5r.fsf@tromey.com> From: Tom de Vries In-Reply-To: <87a5x8ah5r.fsf@tromey.com> X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------BNqpVrt6IBQ9i9NGlSdyp9jT Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 6/9/23 15:39, Tom Tromey wrote: >>>>>> "Tom" == Tom de Vries via Gdb-patches writes: > > Tom> OTOH, it changes the translation boundaries, and I'm not sure if the > Tom> new parts still classify as "entire sentence". > > Tom> Then again, I was not able to find any files containing translations > Tom> for gdb, so perhaps it doesn't matter. > > Yeah, gdb has a bunch of calls to gettext but nobody has ever gotten > translations done or installed them in the tree. I think some of the > build machinery is missing too... hard to recall, it's been ages since I > looked at this. > > Tom> + const std::string help_attribute_mode (_("\ > Tom> normal normal display\n\ > ... > > Tom> + const std::string help_tui_border_mode > Tom> + = (std::string ("\ > Tom> +This variable controls the attributes to use for the window borders:\n") > Tom> + + help_attribute_mode); > ... > > The text here isn't passed through gettext. > Just wrapping the constant string in _() is enough. > Fixed. > Tom> + add_setshow_enum_cmd ("border-mode", no_class, tui_border_mode_enums, > Tom> + &tui_border_mode, _("\ > Tom> +Set the attribute mode to use for the TUI window borders."), _("\ > Tom> +Show the attribute mode to use for the TUI window borders."), > Tom> + help_tui_border_mode.c_str (), > > Does add_setshow_enum_cmd copy the string that's passed in? I wouldn't > have thought so. If not, then this can lead to a use-after-free. It does actually, see add_setshow_cmd_full_erased in cli-decode.c, which does: ... if (help_doc != NULL) { full_set_doc = xstrprintf ("%s\n%s", set_doc, help_doc); full_show_doc = xstrprintf ("%s\n%s", show_doc, help_doc); } else { full_set_doc = make_unique_xstrdup (set_doc); full_show_doc = make_unique_xstrdup (show_doc); } ... > Instead help_tui_border_mode would have to be 'static'. > > Tom> + const std::string help_tui_active_border_mode > Tom> + = (std::string ("\ > Tom> +This variable controls the attributes to use for the active window borders:\n") > Tom> + + help_attribute_mode); > > Here too. And similarly with 'static' I think. This version, rebased on trunk and also addressing the comment from Bruno about not needing explicit std::string constructors is what I'm planning to commit. Thanks, - Tom --------------BNqpVrt6IBQ9i9NGlSdyp9jT Content-Type: text/x-patch; charset=UTF-8; name="0001-gdb-tui-Replace-macro-HELP_ATTRIBUTE_MODE-with-std-s.patch" Content-Disposition: attachment; filename*0="0001-gdb-tui-Replace-macro-HELP_ATTRIBUTE_MODE-with-std-s.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmN2I3ZGE0YzJhN2ZhMTYyNGMyMTY5NmRjZWRkOTYyNzRhZDRhYmEzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gZGUgVnJpZXMgPHRkZXZyaWVzQHN1c2UuZGU+ CkRhdGU6IEZyaSwgOSBKdW4gMjAyMyAxNjo0ODoyMiArMDIwMApTdWJqZWN0OiBbUEFUQ0hd IFtnZGIvdHVpXSBSZXBsYWNlIG1hY3JvIEhFTFBfQVRUUklCVVRFX01PREUgd2l0aCBzdGQ6 OnN0cmluZwoKUmVwbGFjZSBtYWNybyBIRUxQX0FUVFJJQlVURV9NT0RFIHdpdGggYSBzdGQ6 OnN0cmluZy4KClRlc3RlZCBvbiB4ODZfNjQtbGludXguCgpSZXZpZXdlZC1CeTogQnJ1bm8g TGFyc2VuIDxibGFyc2VuQHJlZGhhdC5jb20+ClJldmlld2VkLUJ5OiBUb20gVHJvbWV5IDx0 b21AdHJvbWV5LmNvbT4KLS0tCiBnZGIvdHVpL3R1aS13aW4uYyB8IDI0ICsrKysrKysrKysr KysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDEwIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2dkYi90dWkvdHVpLXdpbi5jIGIvZ2RiL3R1aS90 dWktd2luLmMKaW5kZXggNzFmOTYxZTA0ZDIuLjdiY2VlYmI0NTI1IDEwMDY0NAotLS0gYS9n ZGIvdHVpL3R1aS13aW4uYworKysgYi9nZGIvdHVpL3R1aS13aW4uYwpAQCAtMTIyMCwzOSAr MTIyMCw0MyBAQCBUaGlzIHZhcmlhYmxlIGNvbnRyb2xzIHRoZSBib3JkZXIgb2YgVFVJIHdp bmRvd3M6XG5cCiAJCQlzaG93X3R1aV9ib3JkZXJfa2luZCwKIAkJCSZ0dWlfc2V0bGlzdCwg JnR1aV9zaG93bGlzdCk7CiAKLSNkZWZpbmUgSEVMUF9BVFRSSUJVVEVfTU9ERSAiXAorICBj b25zdCBzdGQ6OnN0cmluZyBoZWxwX2F0dHJpYnV0ZV9tb2RlIChfKCJcCiAgICBub3JtYWwg ICAgICAgICAgbm9ybWFsIGRpc3BsYXlcblwKICAgIHN0YW5kb3V0ICAgICAgICB1c2UgaGln aGxpZ2h0IG1vZGUgb2YgdGVybWluYWxcblwKICAgIHJldmVyc2UgICAgICAgICB1c2UgcmV2 ZXJzZSB2aWRlbyBtb2RlXG5cCiAgICBoYWxmICAgICAgICAgICAgdXNlIGhhbGYgYnJpZ2h0 XG5cCiAgICBoYWxmLXN0YW5kb3V0ICAgdXNlIGhhbGYgYnJpZ2h0IGFuZCBzdGFuZG91dCBt b2RlXG5cCiAgICBib2xkICAgICAgICAgICAgdXNlIGV4dHJhIGJyaWdodCBvciBib2xkXG5c Ci0gICBib2xkLXN0YW5kb3V0ICAgdXNlIGV4dHJhIGJyaWdodCBvciBib2xkIHdpdGggc3Rh bmRvdXQgbW9kZSIKKyAgIGJvbGQtc3RhbmRvdXQgICB1c2UgZXh0cmEgYnJpZ2h0IG9yIGJv bGQgd2l0aCBzdGFuZG91dCBtb2RlIikpOworCisgIGNvbnN0IHN0ZDo6c3RyaW5nIGhlbHBf dHVpX2JvcmRlcl9tb2RlCisgICAgPSAoXygiXAorVGhpcyB2YXJpYWJsZSBjb250cm9scyB0 aGUgYXR0cmlidXRlcyB0byB1c2UgZm9yIHRoZSB3aW5kb3cgYm9yZGVyczpcbiIpCisgICAg ICAgKyBoZWxwX2F0dHJpYnV0ZV9tb2RlKTsKIAogICBhZGRfc2V0c2hvd19lbnVtX2NtZCAo ImJvcmRlci1tb2RlIiwgbm9fY2xhc3MsIHR1aV9ib3JkZXJfbW9kZV9lbnVtcywKIAkJCSZ0 dWlfYm9yZGVyX21vZGUsIF8oIlwKIFNldCB0aGUgYXR0cmlidXRlIG1vZGUgdG8gdXNlIGZv ciB0aGUgVFVJIHdpbmRvdyBib3JkZXJzLiIpLCBfKCJcCiBTaG93IHRoZSBhdHRyaWJ1dGUg bW9kZSB0byB1c2UgZm9yIHRoZSBUVUkgd2luZG93IGJvcmRlcnMuIiksCi0JCQlfKCJcCi1U aGlzIHZhcmlhYmxlIGNvbnRyb2xzIHRoZSBhdHRyaWJ1dGVzIHRvIHVzZSBmb3IgdGhlIHdp bmRvdyBib3JkZXJzOlxuIgotCQkJICBIRUxQX0FUVFJJQlVURV9NT0RFKSwKKwkJCWhlbHBf dHVpX2JvcmRlcl9tb2RlLmNfc3RyICgpLAogCQkJdHVpX3NldF92YXJfY21kLAogCQkJc2hv d190dWlfYm9yZGVyX21vZGUsCiAJCQkmdHVpX3NldGxpc3QsICZ0dWlfc2hvd2xpc3QpOwog CisgIGNvbnN0IHN0ZDo6c3RyaW5nIGhlbHBfdHVpX2FjdGl2ZV9ib3JkZXJfbW9kZQorICAg ID0gKF8oIlwKK1RoaXMgdmFyaWFibGUgY29udHJvbHMgdGhlIGF0dHJpYnV0ZXMgdG8gdXNl IGZvciB0aGUgYWN0aXZlIHdpbmRvdyBib3JkZXJzOlxuIikKKyAgICAgICArIGhlbHBfYXR0 cmlidXRlX21vZGUpOworCiAgIGFkZF9zZXRzaG93X2VudW1fY21kICgiYWN0aXZlLWJvcmRl ci1tb2RlIiwgbm9fY2xhc3MsIHR1aV9ib3JkZXJfbW9kZV9lbnVtcywKIAkJCSZ0dWlfYWN0 aXZlX2JvcmRlcl9tb2RlLCBfKCJcCiBTZXQgdGhlIGF0dHJpYnV0ZSBtb2RlIHRvIHVzZSBm b3IgdGhlIGFjdGl2ZSBUVUkgd2luZG93IGJvcmRlci4iKSwgXygiXAogU2hvdyB0aGUgYXR0 cmlidXRlIG1vZGUgdG8gdXNlIGZvciB0aGUgYWN0aXZlIFRVSSB3aW5kb3cgYm9yZGVyLiIp LAotCQkJXygiXAotVGhpcyB2YXJpYWJsZSBjb250cm9scyB0aGUgYXR0cmlidXRlcyB0byB1 c2UgZm9yIHRoZSBhY3RpdmUgd2luZG93IGJvcmRlcjpcbiIKLQkJCSAgSEVMUF9BVFRSSUJV VEVfTU9ERSksCisJCQloZWxwX3R1aV9hY3RpdmVfYm9yZGVyX21vZGUuY19zdHIgKCksCiAJ CQl0dWlfc2V0X3Zhcl9jbWQsCiAJCQlzaG93X3R1aV9hY3RpdmVfYm9yZGVyX21vZGUsCiAJ CQkmdHVpX3NldGxpc3QsICZ0dWlfc2hvd2xpc3QpOwogCi0jdW5kZWYgSEVMUF9BVFRSSUJV VEVfTU9ERQotCiAgIGFkZF9zZXRzaG93X3p1aW50ZWdlcl9jbWQgKCJ0YWItd2lkdGgiLCBu b19jbGFzcywKIAkJCSAgICAgJmludGVybmFsX3RhYl93aWR0aCwgXygiXAogU2V0IHRoZSB0 YWIgd2lkdGgsIGluIGNoYXJhY3RlcnMsIGZvciB0aGUgVFVJLiIpLCBfKCJcCgpiYXNlLWNv bW1pdDogYTM4NTlmZmJhM2EyOWIxNDA5NzE0Y2MyYzQ0ZTRkMDY1NmRlMzAyMQotLSAKMi4z NS4zCgo= --------------BNqpVrt6IBQ9i9NGlSdyp9jT--