From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 96963 invoked by alias); 28 Dec 2018 19:01:53 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 96944 invoked by uid 89); 28 Dec 2018 19:01:52 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=flushed X-HELO: gateway21.websitewelcome.com Received: from gateway21.websitewelcome.com (HELO gateway21.websitewelcome.com) (192.185.45.250) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 28 Dec 2018 19:01:51 +0000 Received: from cm10.websitewelcome.com (cm10.websitewelcome.com [100.42.49.4]) by gateway21.websitewelcome.com (Postfix) with ESMTP id 209DB400C5F62 for ; Fri, 28 Dec 2018 13:01:50 -0600 (CST) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id cxOIgLJU22PzOcxOIg32v5; Fri, 28 Dec 2018 13:01:50 -0600 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=LKL5ciDY1PDPjMqwjUtmVEEzrAEsG6XicZUhFG/6pUM=; b=QIL2dF40oB7zH3N6Vw8dPAhizJ c48z4rnXN6QP96sI1lSrQhHqzXNzpZsOlCbgHU2P7apFz8Zcxt8NtdF5cvXhfCDCUHl2xfVf20z4+ V/cKLq7722SYknypesMzDWeJP; Received: from 75-166-72-210.hlrn.qwest.net ([75.166.72.210]:34126 helo=bapiya) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from ) id 1gcxOH-000roK-Rx; Fri, 28 Dec 2018 13:01:49 -0600 From: Tom Tromey To: Joel Brobecker Cc: Tom Tromey , gdb-patches@sourceware.org Subject: Re: [PATCH 06/16] Reset terminal styles References: <20181128001435.12703-1-tom@tromey.com> <20181128001435.12703-7-tom@tromey.com> <20181224041605.GI5246@adacore.com> Date: Fri, 28 Dec 2018 19:01:00 -0000 In-Reply-To: <20181224041605.GI5246@adacore.com> (Joel Brobecker's message of "Mon, 24 Dec 2018 08:16:05 +0400") Message-ID: <874laxo4pv.fsf@tromey.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-SW-Source: 2018-12/txt/msg00393.txt.bz2 >>>>> "Joel" == Joel Brobecker writes: >> printf_command (const char *arg, int from_tty) >> { >> ui_printf (arg, gdb_stdout); >> + reset_terminal_style (gdb_stdout); >> + wrap_here (""); Joel> Can you explain why you added the "wrap_here"? gdb's pager has the unusual property that it introduces another layer of buffering that isn't accessible to gdb_flush. So, to properly flush stdout and I guess stderr, one must first call wrap_here to flush this buffer. You can see this most clearly in exceptions.c:print_flush, which is where this seems to have been documented. In this particular case, reset_terminal_style might emit an escape sequence to the wrap buffer. So, wrap_here is needed to be sure this is flushed. We can't flush in reset_terminal_style because it might be used in cases where flushing is inappropriate, for example in the middle of a command when paging is still desired. I think a better design would be to require nothing more than gdb_flush. However, this requires some thought and experimentation, and seemed orthogonal to my goal in this series. Tom