Path: utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!mailrus!uwmcsd1!uxc!uxc.cso.uiuc.edu!kailand!pwolfe From: pwolfe@kailand.KAI.COM Newsgroups: comp.sources.bugs Subject: adding feature to LESS V5 Message-ID: <2800008@kailand> Date: 24 Sep 88 19:58:00 GMT Lines: 125 Nf-ID: #N:kailand:2800008:000:3745 Nf-From: kailand.KAI.COM!pwolfe Sep 24 14:58:00 1988 Okay, I'll try again. Version 73 of less had a feature that was eliminated in the recent posting. The "e" option still quits the second time you reach end of file, but now if a single file being displayed that is less than one screen length, less doesn't exit immediately, but displays it's prompt instead. I prefered the old action (which was similar to the way "more" works), but I found out from the original author that workstation users have problems with this action causing windows to disappear as soon as they appear, so I made it a separate option, -f. This patch does not fix any bugs, so it is not really neccessary for you to install it, but on the other hand, it shouldn't hurt either. Patrick J. Wolfe (pwolfe@kai.com, uunet!kailand!pwolfe) System Manager, Kuck and Associates Inc. *** /tmp/,RCSt1006768 Sat Sep 24 13:23:42 1988 --- less.nro Sat Sep 24 13:20:55 1988 *************** *** 291,296 the second time it reaches end-of-file. .IP -E The -E flag causes less to exit the first time it reaches end-of-file. .IP -h Normally, .I less --- 291,301 ----- the second time it reaches end-of-file. .IP -E The -E flag causes less to exit the first time it reaches end-of-file. + .IP -f + When used with the -e option and the display is shorter than one screen, + less will exit immediately when it reaches end-of-file. + Workstations where less creates a window should NOT use this, or + the window will disappear immediately. .IP -h Normally, .I less *** /tmp/,RCSt1006789 Sat Sep 24 13:24:12 1988 --- option.c Sat Sep 24 12:43:17 1988 *************** *** 33,38 public int bs_mode; /* How to process backspaces */ public int know_dumb; /* Don't complain about dumb terminals */ public int quit_at_eof; /* Quit after hitting end of file twice */ public int squeeze; /* Squeeze multiple blank lines into one */ public int tabstop; /* Tab settings */ public int back_scroll; /* Repaint screen on backwards movement */ --- 33,39 ----- public int bs_mode; /* How to process backspaces */ public int know_dumb; /* Don't complain about dumb terminals */ public int quit_at_eof; /* Quit after hitting end of file twice */ + public int exit_if_short; /* Quit immediately if file is short */ public int squeeze; /* Squeeze multiple blank lines into one */ public int tabstop; /* Tab settings */ public int back_scroll; /* Repaint screen on backwards movement */ *************** *** 102,107 { "Don't quit at end-of-file", "Quit at end-of-file", "Quit immediately at end-of-file" } }, { 'h', NUMBER, -1, &back_scroll, --- 103,114 ----- { "Don't quit at end-of-file", "Quit at end-of-file", "Quit immediately at end-of-file" + } + }, + { 'f', BOOL, 0, &exit_if_short, + { "Don't quit at end-of-file if file is short", + "Quit immediately at end-of-file if file is short", + NULL } }, { 'h', NUMBER, -1, &back_scroll, *** /tmp/,RCSt1007557 Sat Sep 24 14:54:06 1988 --- prim.c Sat Sep 24 14:53:44 1988 *************** *** 21,26 extern int linenums; extern int plusoption; extern char *line; extern char *first_cmd; #if TAGS extern int tagoption; --- 21,28 ----- extern int linenums; extern int plusoption; extern char *line; + extern int ac; + extern int exit_if_short; extern char *first_cmd; #if TAGS extern int tagoption; *************** *** 198,203 eof_bell(); else if (do_repaint) repaint(); first_time = 0; (void) currline(BOTTOM); } --- 200,208 ----- eof_bell(); else if (do_repaint) repaint(); + if (exit_if_short && first_time && hit_eof && quit_at_eof && ac <= 1) { + quit (); + } first_time = 0; (void) currline(BOTTOM); }