From owner-freebsd-current@FreeBSD.ORG Tue Aug 7 13:52:46 2007 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CFDCD16A419 for ; Tue, 7 Aug 2007 13:52:46 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: from mail.netplex.net (mail.netplex.net [204.213.176.10]) by mx1.freebsd.org (Postfix) with ESMTP id 7949513C45E for ; Tue, 7 Aug 2007 13:52:46 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: from sea.ntplx.net (sea.ntplx.net [204.213.176.11]) by mail.netplex.net (8.14.1/8.14.1/NETPLEX) with ESMTP id l77Df36x008781; Tue, 7 Aug 2007 09:41:03 -0400 (EDT) X-Virus-Scanned: by AMaViS and Clam AntiVirus (mail.netplex.net) X-Greylist: Message whitelisted by DRAC access database, not delayed by milter-greylist-3.0 (mail.netplex.net [204.213.176.10]); Tue, 07 Aug 2007 09:41:03 -0400 (EDT) Date: Tue, 7 Aug 2007 09:41:03 -0400 (EDT) From: Daniel Eischen X-X-Sender: eischen@sea.ntplx.net To: Ted Lindgreen In-Reply-To: <200708071048.l77AmHoW002100@omval.tednet.nl> Message-ID: References: <200708071048.l77AmHoW002100@omval.tednet.nl> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-current@freebsd.org, delphij@freebsd.org Subject: Re: Recent change in less(1) X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Daniel Eischen List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Aug 2007 13:52:46 -0000 On Tue, 7 Aug 2007, Ted Lindgreen wrote: > Hi, > > The recent change in the behaviour of less(1) > > rcsdiff -u -r1.9 -r1.10 /home/ncvs/src/contrib/less/main.c,v > =================================================================== > RCS file: /home/ncvs/src/contrib/less/main.c,v > retrieving revision 1.9 > retrieving revision 1.10 > diff -u -r1.9 -r1.10 > --- main.c 2007/06/23 15:28:00 1.9 > +++ main.c 2007/08/04 13:16:09 1.10 > @@ -165,7 +165,7 @@ > quit(QUIT_OK); > } > > - if (less_is_more && get_quit_at_eof()) > + if (less_is_more || get_quit_at_eof()) > no_init = quit_if_one_screen = TRUE; > > wonders me a little. > > Is this really the desired behaviour? Yes, I believe so. This change in less/screen.c: $ cvs diff -u -r1.7 -r1.8 screen.c ... - /* - * This loses for terminals with termcap entries with ti/te strings - * that switch to/from an alternate screen, and we're in quit_at_eof - * (eg, more(1)). - */ - if (!quit_at_eof && !less_is_more) { - sc_init = ltgetstr("ti", &sp); - sc_deinit = ltgetstr("te", &sp); - } - + sc_init = ltgetstr("ti", &sp); if (sc_init == NULL) sc_init = ""; + sc_deinit= ltgetstr("te", &sp); if (sc_deinit == NULL) sc_deinit = ""; and this change in less/main.c: $ cvs -R diff -u -r1.8 -r1.9 main.c ... extern int missing_cap; extern int know_dumb; extern int quit_if_one_screen; +extern int no_init; extern int pr_type; @@ -165,7 +166,7 @@ } if (less_is_more && get_quit_at_eof()) - quit_if_one_screen = TRUE; + no_init = quit_if_one_screen = TRUE; attempted to keep historical more(1) behavior, but it didn't work correctly. Boolean algebra: (!A && !B) == !(A || B) So (!quit_at_eof && !less_is_more) == !(less_is_more || get_quit_at_eof()). > If so I have a question: how to obtain the former behaviour of the -e > switch, i.e. quit when EOF is hit twice always (thus whether or not > when the file happens to fit on a single page)? Perhaps: if (less_is_more) { no_init = TRUE; if (get_quit_at_eof()) quit_if_one_screen = TRUE; } -- DE