πŸš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.sources.patch
1 messages
1 total messages Started by Kari Hurtta Sun, 16 Oct 1994 14:12
kehpager V1.2 to kehpager V1.21 (part 1/2)
#2
Author: Kari Hurtta
Date: Sun, 16 Oct 1994 14:12
1947 lines
64772 bytes
Title: kehpager V1.21 - Charset aware pager for VTxxx terminals
Patch-To: kehpager V1.2
Archive-Name: kehpager0120/patch1.1
Author: Kari E. Hurtta <Kari.Hurtta@Helsinki.FI>
Part: 1/2
Environment: Ansi C, SunOS 4.1.2 (OS/MP 4.1B), 4.1.3, 5.2, 5.3, 
	HP-UX A.09.01 (?), IRIX 4.0.5 (?), IRIX 5.2, FreeBSD (?), 
	NetBSD(?), 386BSD(?), VTxxx

#!/bin/sh
# shar:	Shell Archiver  (v1.22)
#
# This is part 1 of a multipart archive                                    
# do not concatenate these parts, unpack them in order with /bin/sh        
#
#	Run the following text with /bin/sh to create:
#	  patch1.COPYRIGHT
#	  patch1.README
#	  patch1.diff
#	  patch1.kehpagerrc
#	  patch1.schedule.c
#	  patch1.schedule.h
#	  patch1.sh
#
if test -r s2_seq_.tmp
then echo "Must unpack archives in sequence!"
     next=`cat s2_seq_.tmp`; echo "Please unpack part $next next"
     exit 1; fi
sed 's/^X//' << 'SHAR_EOF' > patch1.COPYRIGHT &&
X
X  kehpager, Charset aware pager, Kari E. Hurtta
X
X  Copyright (c) 1993, 1994 Kari E. Hurtta
X
X  Redistribution and use in source and binary forms are permitted
X  provided that the above copyright notice and this paragraph are
X  duplicated in all such forms. This software is provided 'as is'
X  and without any warranty.
SHAR_EOF
chmod 0444 patch1.COPYRIGHT || echo "restore of patch1.COPYRIGHT fails"
sed 's/^X//' << 'SHAR_EOF' > patch1.README &&
Xkehpager V1.21 - Charset aware pager for VTxxx terminals
X
XThis patch updates kehpager from version 1.2 to version 1.21.
X
XLook file patch1.COPYRIGHT to see your rights.
X
X     Kehpager is a pager that displays the  contents  of  a  text
X     file on the terminal, one screenful at a time. It translates
X     file's charset to the terminal's charsets.  Too  long  lines
X     are  wrapped in between words. Kehpager  can also interprete
X     text/enriched and text/richtext -formatted text files.
X
XChanges in this patch:
X * Changed charset names UNICODE-1-1-UTF7 and UNICODE-1-1-UTF8
X   to UNICODE-1-1-UTF-7 and UNICODE-1-1-UTF-8. RFC1642 defines
X   UNICODE-1-1-UTF-7 as value of charset. UNICODE-1-1-UTF-8
X   is not defined in any RFCs. RFC1641 only hints that someone
X   may define charset as UNICODE-1-1-UTF-8. Charset value
X   UNICODE-1-1 (as defined in RFC1641) is not supported by
X   kehpager.
X * New module schedule.c
X * Minor bug fix on initalizing terminal (in SGI) when line 
X   discipline == 0 (Irix 4.0.5)
X * Ported to Irix 5.2 -- let's hope that this still works with Irix 4.0.5 !
X
XApplying patch:
X	Execute patch1.sh in kehpager's source directory
X
XInstallation
XSunOS 4:
X	Set correct value for use.keyboard.language -field in
X		kehpager.init (you can also comment it out if your
X		terminals is inteelligent enough). You probably also
X	 want add
X	   use.vt100.national_available: Enabled
X	 to kehpager.init (this was default prior version 1.06).
X	Copy kehpager.init to library direction
X	Edit Makefile and put defination of GLOBAL_INIT_FILE
X	  point correct location of kehpager.init
X	  Also select correct compiler (gcc, or SUN's acc)
X	  to Makefile.'s define.
X	Compile it with
X		make sunos4
X	Copy kehpager and kehpager.1 to correct directories
XSunOS 5:
X	Set correct value for use.keyboard.language -field in
X		kehpager.init (you can also comment it out if your
X		terminals is intelligent enough). You probably also
X	 want add
X	   use.vt100.national_available: Enabled
X	 to kehpager.init (this was default prior version 1.06).
X	Copy kehpager.init to library direction
X	Edit Makefile and put defination of GLOBAL_INIT_FILE
X	  point correct location of kehpager.init
X	  Also select correct compiler (gcc, or SUN's acc)
X	  to Makefile.'s define.
X	Compile it with
X		make sunos5
X	Copy kehpager and kehpager.1 to correct directories
XHP-UX:
X	Set correct value for use.keyboard.language -field in
X		kehpager.int (you can also comment it out if your
X		terminals is intelligent enough). You probably also
X	 want add
X	   use.vt100.national_available: Enabled
X	 to kehpager.init.hpux (this was default prior version 1.06).
X	Copy kehpager.init.hpux to library direction
X	Edit Makefile.hpux and put defination of GLOBAL_INIT_FILE
X	  point correct location of kehpager.init.hpux
X	  Also select correct compiler (gcc, or HP's cc (ANSI C version))
X	  to Makefile.hpux's define.
X	Compile it with
X		make -f Makefile.hpux
X	Copy kehpager and kehpager.1 to correct directories
X386BSD, FreeBSD, NetBSD: (I haven't tested this!)
X	Set correct value for use.keyboard.language -field in
X		kehpager.init (you can also comment it out if your
X		terminals is intelligent enough). You probably also
X	 want add
X	   use.vt100.national_available: Enabled
X	 to kehpager.init (this was default prior version 1.06).
X	Copy kehpager.init to library direction
X	Edit Makefile and put defination of GLOBAL_INIT_FILE
X	  point correct location of kehpager.init
X	Compile it with
X		make -f Makefile.bsd
X	Copy kehpager and kehpager.1 to correct directories
XIRIX 4.0.5:
X	(I get ENOTDEV error when closing terminal, so there is still
X	 some problems... To ignore that error, put -DCLOSEBUG to CFLAGS
X	 in Makefile.irix. I haven't compiled that version of kehpager
X	 in Irix 4.0.5)
X	Set correct value for use.keyboard.language -field in
X		kehpager.init (you can also comment it out if your
X		terminals is intelligent enough). You probably also
X	 want add
X	   use.vt100.national_available: Enabled
X	 to kehpager.init (this was default prior version 1.06).
X	Copy kehpager.init to library direction
X	Edit Makefile.irix and put defination of GLOBAL_INIT_FILE
X	  point correct location of kehpager.init
X	Compile it with
X		make -f Makefile.irix
X	Copy kehpager and kehpager.1 to correct directories. If you don't
X		have troff or groff, ask someone to compile kehpager.1
XIRIX 5.2:
X	(I don't know if there is same error in IRIX 5.2 as was in IRIX
X	4.0.5 (I don'r expect it). But if there is, you can ignore
X	error message with putting -DCLOSEBUG to CFLAGS
X	 in Makefile.irix. )
X	Set correct value for use.keyboard.language -field in
X		kehpager.init (you can also comment it out if your
X		terminals is intelligent enough). You probably also
X	 want add
X	   use.vt100.national_available: Enabled
X	 to kehpager.init (this was default prior version 1.06).
X	Copy kehpager.init to library direction
X	Edit Makefile.irix and put defination of GLOBAL_INIT_FILE
X	  point correct location of kehpager.init
X	Compile it with
X		make -f Makefile.irix
X	Copy kehpager and kehpager.1 to correct directories. If you don't
X		have troff or groff, ask someone to compile kehpager.1
X
X
XTested platforms:
X	Kehpager works on SunOS 4.1.2 (OS/MP 4.1B), 4.1.3, 5.2, 5.3, 
X	HP-UX A.09.01, IRIX 5.2 (at least some way).
X	There may be some errors in HP-UX A.09.01 version -- some tests
X	indicates that, but I haven't sure.
X
XCompiler:
X	Kehpager is compiled with gcc in SunOS 4.1.2, 5.2, 5.3, HP-UX.
X	In HP-UX it is compiled with cc (ANSI C version).
X		(notice that ANSI C version of cc isn't bundled with HP-UX)
X	In IRIX 5.2 it is compiled with cc (in -xansi mode).
X	Kehpager compiles without error or warning messages 
X		(with gcc's -Wall in SunOs 5.2. Also HP's cc
X		 don't give any warnigs even that it is more strict than
X		 gcc).
X
X	(This version isn't compiled with SUN's acc, as previous version was.)
X
XThanks to: 
X	Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>
X	Tim Lasko <lasko@regent.enet.dec.com>
X	David E A Wilson <david@cs.uow.edu.au>
X	JΓΆrg Wunsch <joerg_wunsch@tcd-dresden.de>
SHAR_EOF
chmod 0644 patch1.README || echo "restore of patch1.README fails"
sed 's/^X//' << 'SHAR_EOF' > patch1.diff &&
Xdiff -c ../kehpager-1.2/Makefile ./Makefile
X*** ../kehpager-1.2/Makefile	Sat Jul  9 13:29:02 1994
X--- ./Makefile	Sat Oct 15 18:29:24 1994
X***************
X*** 14,20 ****
X  .KEEP_STATE:
X  
X  SOURCES = kehpager.c terminal.c esc.c memory.c control.c charset.c window.c \
X! rc.c env.c keyboard.c content.c edit.c
X  #OBJS = $(SOURCES:.c=.o) /usr/lib/debug/malloc.o
X  OBJS = $(SOURCES:.c=.o)
X  CFLAGS += -DGLOBAL_INIT_FILE=\"/home/hydra/hurtta/src/kehpager/kehpager.init\"
X--- 14,20 ----
X  .KEEP_STATE:
X  
X  SOURCES = kehpager.c terminal.c esc.c memory.c control.c charset.c window.c \
X! rc.c env.c keyboard.c content.c edit.c schedule.c
X  #OBJS = $(SOURCES:.c=.o) /usr/lib/debug/malloc.o
X  OBJS = $(SOURCES:.c=.o)
X  CFLAGS += -DGLOBAL_INIT_FILE=\"/home/hydra/hurtta/src/kehpager/kehpager.init\"
X***************
X*** 40,42 ****
X--- 40,45 ----
X  sunos5: kehpager
X  sunos52: sunos5
X  sunos53: sunos5
X+ 
X+ clean: 
X+ 	rm -rf $(OBJS) core kehpager
Xdiff -c ../kehpager-1.2/Makefile.bsd ./Makefile.bsd
X*** ../kehpager-1.2/Makefile.bsd	Sat Jul  9 13:29:02 1994
X--- ./Makefile.bsd	Sat Oct 15 18:29:25 1994
X***************
X*** 19,26 ****
X  	rc.c env.c keyboard.c content.c edit.c
X  
X  OBJS	= kehpager.o terminal.o esc.o memory.o control.o charset.o window.o \
X! 	rc.o env.o keyboard.o content.o edit.o
X  
X  
X  kehpager: $(OBJS)
X  	$(CC) -o $@ $(OBJS) $(LDFLAGS)
X--- 19,29 ----
X  	rc.c env.c keyboard.c content.c edit.c
X  
X  OBJS	= kehpager.o terminal.o esc.o memory.o control.o charset.o window.o \
X! 	rc.o env.o keyboard.o content.o edit.o schedule.c
X  
X  
X  kehpager: $(OBJS)
X  	$(CC) -o $@ $(OBJS) $(LDFLAGS)
X+ 
X+ clean: 
X+ 	rm -rf $(OBJS) core kehpager
Xdiff -c ../kehpager-1.2/Makefile.hpux ./Makefile.hpux
X*** ../kehpager-1.2/Makefile.hpux	Sat Jul  9 13:29:02 1994
X--- ./Makefile.hpux	Sat Oct 15 18:29:25 1994
X***************
X*** 14,22 ****
X  .KEEP_STATE:
X  
X  SOURCES = kehpager.c terminal.c esc.c memory.c control.c charset.c window.c \
X! rc.c env.c keyboard.c  content.c edit.c
X  OBJS = $(SOURCES:.c=.o) 
X  
X  
X  kehpager: $(OBJS)
X  	$(CC) $(LDFLAGS) -o $@ $(OBJS) 
X--- 14,25 ----
X  .KEEP_STATE:
X  
X  SOURCES = kehpager.c terminal.c esc.c memory.c control.c charset.c window.c \
X! rc.c env.c keyboard.c  content.c edit.c schedule.c
X  OBJS = $(SOURCES:.c=.o) 
X  
X  
X  kehpager: $(OBJS)
X  	$(CC) $(LDFLAGS) -o $@ $(OBJS) 
X+ 
X+ clean: 
X+ 	rm -rf $(OBJS) core kehpager
Xdiff -c ../kehpager-1.2/Makefile.irix ./Makefile.irix
X*** ../kehpager-1.2/Makefile.irix	Sat Jul  9 13:29:02 1994
X--- ./Makefile.irix	Sat Oct 15 18:29:25 1994
X***************
X*** 2,7 ****
X--- 2,8 ----
X  
X  # Compiling with SGI C
X  CC = cc
X+ # -DCLOSEBUG when compiling irix 4
X  CFLAGS = -xansi -O2 $(INIT) 
X  
X  LDFLAGS = -lm 
X***************
X*** 9,17 ****
X  .KEEP_STATE:
X  
X  SOURCES = kehpager.c terminal.c esc.c memory.c control.c charset.c window.c \
X! rc.c env.c keyboard.c  content.c edit.c
X  OBJS = $(SOURCES:.c=.o) 
X  
X  
X  kehpager: $(OBJS)
X  	$(CC) $(LDFLAGS) -o $@ $(OBJS) 
X--- 10,21 ----
X  .KEEP_STATE:
X  
X  SOURCES = kehpager.c terminal.c esc.c memory.c control.c charset.c window.c \
X! rc.c env.c keyboard.c  content.c edit.c schedule.c
X  OBJS = $(SOURCES:.c=.o) 
X  
X  
X  kehpager: $(OBJS)
X  	$(CC) $(LDFLAGS) -o $@ $(OBJS) 
X+ 
X+ clean: 
X+ 	rm -rf $(OBJS) core kehpager
Xdiff -c ../kehpager-1.2/VERSION ./VERSION
X*** ../kehpager-1.2/VERSION	Sat Jul  9 13:30:55 1994
X--- ./VERSION	Sat Oct 15 18:39:18 1994
X***************
X*** 1 ****
X! kehpager V1.2
X--- 1 ----
X! kehpager V1.21
Xdiff -c ../kehpager-1.2/charset.c ./charset.c
X*** ../kehpager-1.2/charset.c	Sat Jul  9 13:28:56 1994
X--- ./charset.c	Sat Oct 15 18:29:18 1994
X***************
X*** 10245,10253 ****
X    { "X-ISO646-ITA",         MAP_ITAL,          NT_MIME },
X    { "Mnemonics",            MAP_Mnem,          NT_name },
X    { "Unicode 1.1 with UTF7",MAP_UTF7,          NT_name },
X!   { "UNICODE-1-1-UTF7",     MAP_UTF7,          NT_MIME },
X    { "Unicode 1.1 with UTF8",MAP_UTF8,          NT_name },
X!   { "UNICODE-1-1-UTF8",     MAP_UTF8,          NT_MIME },
X    { "X-FSS-UTF",            MAP_UTF8,          NT_MIME },
X  };
X  
X--- 10245,10253 ----
X    { "X-ISO646-ITA",         MAP_ITAL,          NT_MIME },
X    { "Mnemonics",            MAP_Mnem,          NT_name },
X    { "Unicode 1.1 with UTF7",MAP_UTF7,          NT_name },
X!   { "UNICODE-1-1-UTF-7",    MAP_UTF7,          NT_MIME },
X    { "Unicode 1.1 with UTF8",MAP_UTF8,          NT_name },
X!   { "UNICODE-1-1-UTF-8",    MAP_UTF8,          NT_MIME },
X    { "X-FSS-UTF",            MAP_UTF8,          NT_MIME },
X  };
X  
Xdiff -c ../kehpager-1.2/control.c ./control.c
X*** ../kehpager-1.2/control.c	Sat Jul  9 13:28:57 1994
X--- ./control.c	Sat Oct 15 18:29:19 1994
X***************
X*** 1772,1789 ****
X    
X    if (-1 == pri) {
X      if (DEBUG_LBUFFER)
X!       print_debug("flush_some_lines: result=0");
X  
X      return 0;
X    }
X  
X    if (DEBUG_LBUFFER)
X!     print_debug("flush_some_lines: priority=%d lines=%d-%d",
X  		pri,priorities[pri].first_line,
X  		priorities[pri].last_line);
X  
X-   
X- 
X    for (Y = priorities[pri].first_line;
X         Y <= priorities[pri].last_line;
X         Y++) flush_line(Y,pri);
X--- 1772,1787 ----
X    
X    if (-1 == pri) {
X      if (DEBUG_LBUFFER)
X!       print_debug("flush_some_lines(): result=0");
X  
X      return 0;
X    }
X  
X    if (DEBUG_LBUFFER)
X!     print_debug("flush_some_lines(): priority=%d lines=%d-%d",
X  		pri,priorities[pri].first_line,
X  		priorities[pri].last_line);
X  
X    for (Y = priorities[pri].first_line;
X         Y <= priorities[pri].last_line;
X         Y++) flush_line(Y,pri);
X***************
X*** 1792,1798 ****
X    priorities[pri].last_line=0;
X  
X    if (DEBUG_LBUFFER)
X!     print_debug("flush_some_lines: result=1\n"
X  		"  priorities[pri=%d].first_line=%d\n"
X  		"  priorities[pri=%d].last_line=%d",
X  		pri,priorities[pri].first_line,
X--- 1790,1796 ----
X    priorities[pri].last_line=0;
X  
X    if (DEBUG_LBUFFER)
X!     print_debug("flush_some_lines(): result=1\n"
X  		"  priorities[pri=%d].first_line=%d\n"
X  		"  priorities[pri=%d].last_line=%d",
X  		pri,priorities[pri].first_line,
X***************
X*** 2038,2043 ****
X--- 2036,2042 ----
X    update_hard();
X  }
X  
X+  
X  int ask_timeout(long *timeout) {
X    static int states_first = 1;
X    /* 1/10 seconds */
X***************
X*** 2073,2079 ****
X      GOT;
X      break;
X    }
X- 
X  }
X  
X  int do_escape(int cmd) {
X--- 2072,2077 ----
X***************
X*** 2093,2100 ****
X        return 0;
X      } else { /* Cursor position */
X        int X,Y;
X-       pos_count++;
X        if (2 == sscanf(Cs(args),"%d;%d",&Y,&X)) {
X  	switch(pos_count) {
X  	case 1: 
X  	  starting_line = Y;
X--- 2091,2099 ----
X        return 0;
X      } else { /* Cursor position */
X        int X,Y;
X        if (2 == sscanf(Cs(args),"%d;%d",&Y,&X)) {
X+ 	pos_count++;
X+ 	
X  	switch(pos_count) {
X  	case 1: 
X  	  starting_line = Y;
Xdiff -c ../kehpager-1.2/control.h ./control.h
X*** ../kehpager-1.2/control.h	Sat Jul  9 13:29:00 1994
X--- ./control.h	Sat Oct 15 18:29:22 1994
X***************
X*** 58,64 ****
X  
X  /* output priorities */
X  #define PRI_NORMAL   0
X! #define PRI_EDIT     1
X  #define PRI_COMPLETE 5
X  #define PRI_WAIT     6      /* print immediately */
X  
X--- 58,64 ----
X  
X  /* output priorities */
X  #define PRI_NORMAL   0
X! #define PRI_EDIT     4
X  #define PRI_COMPLETE 5
X  #define PRI_WAIT     6      /* print immediately */
X  
Xdiff -c ../kehpager-1.2/kehpager.c ./kehpager.c
X*** ../kehpager-1.2/kehpager.c	Sat Jul  9 13:28:58 1994
X--- ./kehpager.c	Sat Oct 15 18:29:20 1994
X***************
X*** 46,53 ****
X  #include "keyboard.h"
X  #include "content.h"
X  #include "edit.h"
X  
X! char *Version = "kehpager V1.2";
X  /* Author: Kari E. Hurtta <Kari.Hurtta@Helsinki.FI> */
X  char *prog="Unknown";
X  int quitflag = 0;
X--- 46,54 ----
X  #include "keyboard.h"
X  #include "content.h"
X  #include "edit.h"
X+ #include "schedule.h"
X  
X! char *Version = "kehpager V1.21";
X  /* Author: Kari E. Hurtta <Kari.Hurtta@Helsinki.FI> */
X  char *prog="Unknown";
X  int quitflag = 0;
X***************
X*** 55,61 ****
X  
X  /* Versions:
X   * 0.1  93-05-27 First version
X!  * 0.11 93-05-27 telentd/rlogind don't longer die when start kehpager
X   * 0.12 93-05-27 Printing optimizing, 
X   *               keys: b = previous page, DEL = backward one line
X   * 0.13 93-06-06 option: - refers standard input, 
X--- 56,62 ----
X  
X  /* Versions:
X   * 0.1  93-05-27 First version
X!  * 0.11 93-05-27 telentd/rlogind don't longer die when kehpager starts
X   * 0.12 93-05-27 Printing optimizing, 
X   *               keys: b = previous page, DEL = backward one line
X   * 0.13 93-06-06 option: - refers standard input, 
X***************
X*** 257,263 ****
X   *               VLNEXT_preserved
X   *               $LINES overdrives use.terminal.lines and $COLUMNS overdrives
X   *                  use.terminal.columns (if env.size is set)
X!  *               Updated Text/Enriched according RFC1563 (previous version
X   *                 of enriched specification was RFC1523):
X   *                 - Added FlushBoth environment
X   *                 - Now Text/Enriched allows initial state justification 
X--- 258,264 ----
X   *               VLNEXT_preserved
X   *               $LINES overdrives use.terminal.lines and $COLUMNS overdrives
X   *                  use.terminal.columns (if env.size is set)
X!  *               Updated Text/Enriched according of RFC1563 (previous version
X   *                 of enriched specification was RFC1523):
X   *                 - Added FlushBoth environment
X   *                 - Now Text/Enriched allows initial state justification 
X***************
X*** 306,311 ****
X--- 307,324 ----
X   *               Latin/4 209 fixed
X   *                 from LATIN CAPITAL LETTER N WITH OGONEK
X   *                 to LATIN CAPITAL LETTER N WITH CEDILLA
X+  * 1.21 94-10-15 Changed charset names UNICODE-1-1-UTF7 and UNICODE-1-1-UTF8
X+  *                 to UNICODE-1-1-UTF-7 and UNICODE-1-1-UTF-8. RFC1642 defines
X+  *                 UNICODE-1-1-UTF-7 as value of charset. UNICODE-1-1-UTF-8
X+  *                 is not defined in any RFCs. RFC1641 only hints that someone
X+  *                 may define charset as UNICODE-1-1-UTF-8. Charset value
X+  *                 UNICODE-1-1 (as defined in RFC1641) is not supported by
X+  *                 kehpager.
X+  *               New module schedule.c
X+  *               Minor bug fix on initalizing terminal (in SGI) when line 
X+  *                 discipline == 0
X+  *               Ported to Irix 5.2 -- let's hope that this still works with
X+  *                  irix 4.0.5 !
X   */
X  
X  static int use_scrolling = 1;
X***************
X*** 481,486 ****
X--- 494,507 ----
X    return val;
X  }
X  
X+ #define PROMPT_NEXT_PAGE      1
X+ #define PROMPT_READ           2
X+ #define PROMPT_NEXT_PAGE_MES  3
X+ #define PROMPT_NEXT_PAGE_LAS  4
X+ #define PROMPT_WRAP           5
X+ #define PROMPT_SEARCH         6
X+ #define PROMPT_SKIP           7
X+ 
X  static void update_prompt(int win, int mode) {
X    int Y,off,roff,rl,bot,prompt_line,tgroup,pagenum,pages;
X    int T,W,SP,TS,IS,PR,PG,prompt_X = 1;
X***************
X*** 494,504 ****
X    get_window_status(win,&T,&W,&SP,&TS,&IS,&PR,&PG);
X  
X    switch(mode) {
X!   case 3: 
X      sprintf(S,"MESSAGE (press %s for next page)",give_mapping(&key_page));
X      key_group = G_MESSAGE;    
X      break;
X!   case 2: case 1: case 4:
X      sprintf(S,"MORE (press %s for next page)",give_mapping(&key_page));
X      key_group = G_PAGER;
X      break;
X--- 515,525 ----
X    get_window_status(win,&T,&W,&SP,&TS,&IS,&PR,&PG);
X  
X    switch(mode) {
X!   case PROMPT_NEXT_PAGE_MES: 
X      sprintf(S,"MESSAGE (press %s for next page)",give_mapping(&key_page));
X      key_group = G_MESSAGE;    
X      break;
X!   case PROMPT_READ: case PROMPT_NEXT_PAGE: case PROMPT_NEXT_PAGE_LAS:
X      sprintf(S,"MORE (press %s for next page)",give_mapping(&key_page));
X      key_group = G_PAGER;
X      break;
X***************
X*** 515,529 ****
X    if (prompt_line < Y) prompt_line = Y;
X    if (prompt_line > lines) prompt_line = lines;
X    else if (pagenum == 0 || pagenum == pages) switch (mode) { 
X!     case 1: sprintf(S,"TAIL (press %s for next file)",
X  		    give_mapping(&key_next)); break;
X!     case 2: strcpy(S,"READ (please wait)"); break;
X!     case 3: 
X        sprintf(S,"OK (press %s to clear message)",
X  	      give_mapping(&key_mquit)); 
X        key_group = G_MESSAGE_LAST;
X        break;
X!     case 4: sprintf(S,"TAIL (press %s to quit kehpager)",
X  		    give_mapping(&key_quit)); 
X        if (!wait_quit) {
X  	quitflag = 1;
X--- 536,550 ----
X    if (prompt_line < Y) prompt_line = Y;
X    if (prompt_line > lines) prompt_line = lines;
X    else if (pagenum == 0 || pagenum == pages) switch (mode) { 
X!     case PROMPT_NEXT_PAGE: sprintf(S,"TAIL (press %s for next file)",
X  		    give_mapping(&key_next)); break;
X!     case PROMPT_READ: strcpy(S,"READ (please wait)"); break;
X!     case PROMPT_NEXT_PAGE_MES: 
X        sprintf(S,"OK (press %s to clear message)",
X  	      give_mapping(&key_mquit)); 
X        key_group = G_MESSAGE_LAST;
X        break;
X!     case PROMPT_NEXT_PAGE_LAS: sprintf(S,"TAIL (press %s to quit kehpager)",
X  		    give_mapping(&key_quit)); 
X        if (!wait_quit) {
X  	quitflag = 1;
X***************
X*** 532,544 ****
X        break;
X      }
X  
X!   if (5 == mode) {
X      strcpy(S,"WRAP (please wait)"); 
X!   } else if (6 == mode) {
X      strcpy(S,"SEARCH (please wait)"); 
X!   } else if (7 == mode) {
X      strcpy(S,"SKIP (please wait)"); 
X!   }
X    
X    line = roff + prompt_line - Y;
X  
X--- 553,565 ----
X        break;
X      }
X  
X!   if (PROMPT_WRAP == mode) {
X      strcpy(S,"WRAP (please wait)"); 
X!   } else if (PROMPT_SEARCH == mode) {
X      strcpy(S,"SEARCH (please wait)"); 
X!   } else if (PROMPT_SKIP == mode) {
X      strcpy(S,"SKIP (please wait)"); 
X!   } 
X    
X    line = roff + prompt_line - Y;
X  
X***************
X*** 633,639 ****
X    }
X  }
X  
X! static int got_from_TAIL(int *ptr) {
X    int result;
X    block_state S;
X  
X--- 654,660 ----
X    }
X  }
X  
X! int got_from_TAIL(int *ptr) {
X    int result;
X    block_state S;
X  
X***************
X*** 661,667 ****
X    }
X  }
X  
X! static void print_errors(int ptr) {
X    volatile CHAR *buffer = error_pool[ptr];
X    CHAR_IDX *mapped;
X    int len;
X--- 682,688 ----
X    }
X  }
X  
X! void print_errors(int ptr) {
X    volatile CHAR *buffer = error_pool[ptr];
X    CHAR_IDX *mapped;
X    int len;
X***************
X*** 732,738 ****
X  
X  }
X  
X! static void not_selectable(int *fp) {
X    unblock(fp);
X    if (DEBUG_FILIO) {
X      print_debug("Marking %s%s (fd=%d) not selectable",
X--- 753,759 ----
X  
X  }
X  
X! void not_selectable(int *fp) {
X    unblock(fp);
X    if (DEBUG_FILIO) {
X      print_debug("Marking %s%s (fd=%d) not selectable",
X***************
X*** 1565,1571 ****
X      if (chars[j].evector[ENT_name]) s4=chars[j].evector[ENT_name];
X      else s4="";
X  
X!     print_help(win,"%S%c%S%c%M%c%S%c%S",s1,14,s2,22,j,28,s3,38,s4);
X      
X    }
X  
X--- 1586,1592 ----
X      if (chars[j].evector[ENT_name]) s4=chars[j].evector[ENT_name];
X      else s4="";
X  
X!     print_help(win,"1c1ckehpager.cc1c%S",s1,14,s2,22,j,28,s3,38,s4);
X      
X    }
X  
X***************
X*** 1727,1733 ****
X      search_X++;
X      break;
X    }
X!   update_prompt(visible,6);
X    if (find_buffer_text(visible,search_value_len,search_value,
X  		       &search_X,&search_Y,&rY,&mlen)) {
X      set_win_hl(visible,FL_BOLD,search_X,search_X+mlen-1,search_Y);
X--- 1748,1754 ----
X      search_X++;
X      break;
X    }
X!   update_prompt(visible,PROMPT_SEARCH);
X    if (find_buffer_text(visible,search_value_len,search_value,
X  		       &search_X,&search_Y,&rY,&mlen)) {
X      set_win_hl(visible,FL_BOLD,search_X,search_X+mlen-1,search_Y);
X***************
X*** 1751,1757 ****
X    int visible = have_error ? WIN_ERROR : WIN_TEXT;
X    if (&key_genter == pos) {
X      int rvalue = string_value(value_len,value);
X!     update_prompt(visible,7);
X      goto_window(visible,rvalue);
X      return 1;
X    } else if (&key_gpercnt == pos) {
X--- 1772,1778 ----
X    int visible = have_error ? WIN_ERROR : WIN_TEXT;
X    if (&key_genter == pos) {
X      int rvalue = string_value(value_len,value);
X!     update_prompt(visible,PROMPT_SKIP);
X      goto_window(visible,rvalue);
X      return 1;
X    } else if (&key_gpercnt == pos) {
X***************
X*** 1758,1764 ****
X      int len = window_rlines(visible);
X      int rvalue = string_value(value_len,value);
X      if (rvalue <= 100) {
X!       update_prompt(visible,7);
X        if (0 == rvalue) goto_window(visible,1);
X        else goto_window(visible,rvalue*len/100);
X        return 1;
X--- 1779,1785 ----
X      int len = window_rlines(visible);
X      int rvalue = string_value(value_len,value);
X      if (rvalue <= 100) {
X!       update_prompt(visible,PROMPT_SKIP);
X        if (0 == rvalue) goto_window(visible,1);
X        else goto_window(visible,rvalue*len/100);
X        return 1;
X***************
X*** 1849,1855 ****
X      get_window_status(visible,&tab,&wrap,&showspc,&tab_step,&indent_step,
X  		      &priority,&pagemode);
X      tab = !tab;
X!     update_prompt(visible, 5);
X      set_window_status(visible,tab,wrap,showspc,tab_step,indent_step,
X  		      priority,pagemode);
X    } else if (&key_prompt == pos) {
X--- 1870,1876 ----
X      get_window_status(visible,&tab,&wrap,&showspc,&tab_step,&indent_step,
X  		      &priority,&pagemode);
X      tab = !tab;
X!     update_prompt(visible, PROMPT_WRAP);
X      set_window_status(visible,tab,wrap,showspc,tab_step,indent_step,
X  		      priority,pagemode);
X    } else if (&key_prompt == pos) {
X***************
X*** 1861,1867 ****
X      get_window_status(visible,&tab,&wrap,&showspc,&tab_step,&indent_step,
X  		      &priority,&pagemode);
X      wrap = !wrap;
X!     update_prompt(visible, 5);
X      set_window_status(visible,tab,wrap,showspc,tab_step,indent_step,
X  		      priority,pagemode);
X    } else if (&key_spc == pos) {
X--- 1882,1888 ----
X      get_window_status(visible,&tab,&wrap,&showspc,&tab_step,&indent_step,
X  		      &priority,&pagemode);
X      wrap = !wrap;
X!     update_prompt(visible, PROMPT_WRAP);
X      set_window_status(visible,tab,wrap,showspc,tab_step,indent_step,
X  		      priority,pagemode);
X    } else if (&key_spc == pos) {
X***************
X*** 1869,1875 ****
X      get_window_status(visible,&tab,&wrap,&showspc,&tab_step,&indent_step,
X  		      &priority,&pagemode);
X      showspc = !showspc;
X!     update_prompt(visible, 5);
X      set_window_status(visible,tab,wrap,showspc,tab_step,indent_step,
X  		      priority,pagemode);
X    } else if (&key_pagemode == pos) {
X--- 1890,1896 ----
X      get_window_status(visible,&tab,&wrap,&showspc,&tab_step,&indent_step,
X  		      &priority,&pagemode);
X      showspc = !showspc;
X!     update_prompt(visible, PROMPT_WRAP);
X      set_window_status(visible,tab,wrap,showspc,tab_step,indent_step,
X  		      priority,pagemode);
X    } else if (&key_pagemode == pos) {
X***************
X*** 1877,1883 ****
X      get_window_status(visible,&tab,&wrap,&showspc,&tab_step,&indent_step,
X  		      &priority,&pagemode);
X      pagemode = !pagemode;
X!     update_prompt(visible, 5);
X      set_window_status(visible,tab,wrap,showspc,tab_step,indent_step,
X  		      priority,pagemode);
X    } else if (&key_next == pos) {
X--- 1898,1904 ----
X      get_window_status(visible,&tab,&wrap,&showspc,&tab_step,&indent_step,
X  		      &priority,&pagemode);
X      pagemode = !pagemode;
X!     update_prompt(visible, PROMPT_WRAP);
X      set_window_status(visible,tab,wrap,showspc,tab_step,indent_step,
X  		      priority,pagemode);
X    } else if (&key_next == pos) {
X***************
X*** 1896,1905 ****
X      }
X      
X    } else if (&key_page == pos) {
X!     update_prompt(visible,7);
X      go_next_page(visible);
X    } else if (&key_prev == pos) {
X!     update_prompt(visible,7);
X      go_prev_page(visible);
X    } else if (&key_copyright == pos) {
X      key_group = G_MESSAGE;
X--- 1917,1926 ----
X      }
X      
X    } else if (&key_page == pos) {
X!     update_prompt(visible,PROMPT_SKIP);
X      go_next_page(visible);
X    } else if (&key_prev == pos) {
X!     update_prompt(visible,PROMPT_SKIP);
X      go_prev_page(visible);
X    } else if (&key_copyright == pos) {
X      key_group = G_MESSAGE;
X***************
X*** 1929,1935 ****
X      if (roffset > 0) scroll_window_R(visible);
X    } else if(&key_top == pos) {
X      int offset,Y,roffset,pagenum,pages;
X!     update_prompt(visible,7);
X      window_pos(visible,&Y,&offset,&roffset,&pagenum,&pages);
X      if (roffset > 0) roffset = 0;
X      map_window(visible,roffset,Y);
X--- 1950,1956 ----
X      if (roffset > 0) scroll_window_R(visible);
X    } else if(&key_top == pos) {
X      int offset,Y,roffset,pagenum,pages;
X!     update_prompt(visible,PROMPT_SKIP);
X      window_pos(visible,&Y,&offset,&roffset,&pagenum,&pages);
X      if (roffset > 0) roffset = 0;
X      map_window(visible,roffset,Y);
X***************
X*** 1936,1942 ****
X      while(flush_some_lines());
X    } else if(&key_bottom == pos) {
X      int offset,Y,roffset,roffset_old,rl,pagenum,pages;
X!     update_prompt(visible,7);
X      window_pos(visible,&Y,&offset,&roffset_old,&pagenum,&pages);
X      rl = window_rlines(visible);
X      roffset = rl - lines + Y;
X--- 1957,1963 ----
X      while(flush_some_lines());
X    } else if(&key_bottom == pos) {
X      int offset,Y,roffset,roffset_old,rl,pagenum,pages;
X!     update_prompt(visible,PROMPT_SKIP);
X      window_pos(visible,&Y,&offset,&roffset_old,&pagenum,&pages);
X      rl = window_rlines(visible);
X      roffset = rl - lines + Y;
X***************
X*** 1950,1961 ****
X    }
X  }
X  
X! static void message_to_error(int len, CHAR_IDX *buffer) {
X    map_errors();
X    print_to_window(WIN_ERROR,-1,error_line,0,len,buffer);
X  }
X  
X! static int do_keyboard(int cmd, int *cancel) {
X    CHAR_IDX ch;
X    switch (commands[cmd].what) {
X      CHAR *c;
X--- 1971,1982 ----
X    }
X  }
X  
X! void message_to_error(int len, CHAR_IDX *buffer) {
X    map_errors();
X    print_to_window(WIN_ERROR,-1,error_line,0,len,buffer);
X  }
X  
X! int do_keyboard(int cmd, int *cancel) {
X    CHAR_IDX ch;
X    switch (commands[cmd].what) {
X      CHAR *c;
X***************
X*** 1992,2525 ****
X  static int auto_input = 1;
X  static CHAR *LAST_UNPARSED = NULL;
X  
X- void schedule(void) {
X- #ifdef _HPUX_SOURCE
X-   int readfs,writefs;
X- #else
X-   fd_set readfs,writefs;
X- #endif
X-   struct timeval *timeout,Timeout;
X-   long atime;
X-   int res;
X-   int last_columns=0, last_lines = 0;
X-   int remove = 0; /* Unparsed */
X-   int cancel = 0, no_option = 0;
X  
X!   while (!quitflag) {
X!     int biggest = terminal;
X!     int skip = 0, was_input = 0;
X!     int tail_ptr;
X  
X!     if (need_redraw) {
X!       need_redraw = 0;
X!       do_redraw();
X!     }
X  
X!     if (last_columns != columns) {
X!       last_columns = columns;
X!       if (pager_state && !remove)
X! 	update_prompt(have_error ? WIN_ERROR : WIN_TEXT, 5);
X!       rewrap_windows();
X!       skip = 1; /* Prompt need recalculating */
X!     } 
X!     if (last_lines != lines) { 
X!       last_lines = lines;
X!       skip = 1; /* Prompt need recalculating */
X!     } 
X  
X!     /* With this way we can lost some messages 
X!      * but it is very diffuclt guarantee that message is really
X!      * printed before signal occurs (because messag can go out
X!      * of display in window anyway)
X!      */
X!     if (got_from_TAIL(&tail_ptr)) {
X!       print_errors(tail_ptr);
X!       skip = 1; /* Prompt need recalculating */
X!     }
X  
X! #ifdef _HPUX_SOURCE
X!     readfs = 1 << terminal;    
X!     writefs = 0;
X! #else
X!     FD_ZERO(&readfs);
X!     FD_SET(terminal,&readfs);
X!     FD_ZERO(&writefs);
X! #endif
X  
X!     if (need_line_flush() || need_flush_buffer()) {
X! #ifdef _HPUX_SOURCE
X!       writefs |= 1 << terminal;
X! #else
X!       FD_SET(terminal,&writefs);
X! #endif
X!     }
X  
X!     if (-1 != FP && !EOF_IN_FILE) {
X!       if (!NOT_SELECTABLE) {
X! #ifdef _HPUX_SOURCE
X! 	readfs |= 1 << FP;
X! #else
X! 	FD_SET(FP,&readfs);
X! #endif
X! 	if (FP > biggest) biggest = FP;
X!       } else skip = 1;
X!     } 
X!     
X!     if (skip) {
X!       timeout = &Timeout;
X!       Timeout.tv_sec = 0;
X!       Timeout.tv_usec = 0;
X!     } else if (ask_timeout(&atime)) {
X!       timeout = &Timeout;
X!       Timeout.tv_sec = atime / 10L;
X!       Timeout.tv_usec = ( atime % 10L) * 100000L;
X!     } else timeout = NULL;
X  
X!     if (pager_state && showtime && !timeout) {
X!       timeout = &Timeout;
X!       Timeout.tv_sec = seconds_to_next_minute();
X!       Timeout.tv_usec = 1;
X!       skip = 2;
X!     } else if (pager_state && showtime) {
X!       int s = seconds_to_next_minute();
X!       if (s < timeout -> tv_sec) {
X! 	timeout = &Timeout;
X! 	Timeout.tv_sec = s;
X! 	Timeout.tv_usec = 1;
X! 	skip = 2;
X!       }
X!     }
X  
X-     if (DEBUG_FILIO || DEBUG_TERM || DEBUG_BUFFER) {
X-       print_debug("Doing select: max fd=%d, %s (skip=%d)",
X- 		  biggest, timeout ? "timeout" : "no timeout",
X- 		  skip);
X-     }
X  
X! #ifdef _HPUX_SOURCE
X!     res = select(biggest+1,&readfs,&writefs,(int *)NULL,
X! 		     timeout);
X! #else
X!     res = select(biggest+1,&readfs,&writefs,(fd_set *)NULL,
X! 		     timeout);
X! #endif
X!     if (-1 == res) {
X!       int code = errno;
X!       if (DEBUG_FILIO) {
X! 	print_debug("Got errno=%d from select",
X! 		    code);
X!       }
X!       if (EINTR == code) continue;
X!       if (ENXIO == code && !NOT_SELECTABLE) {
X! 	not_selectable(&FP);
X! 	continue;
X!       }
X!       print_error(code,
X! 		  "(%s) Error when waiting response of terminal from /dev/tty",
X! 		  prog);
X!       quitflag = 1;
X!       continue;
X!     }
X!     if (0 == res && !skip) do_timeout();
X  
X! #ifdef _HPUX_SOURCE
X!     if (readfs & (1 << terminal))
X! #else
X!     if (FD_ISSET(terminal,&readfs)) 
X! #endif
X!       {
X! 	
X! 	CHAR input_buffer[INPUT_BUFFER_SIZE+1];
X! 	int len = read_from_terminal(input_buffer);
X! 	if (len > 0) parse_input(input_buffer, len); 
X! 	was_input = 1;
X!       }
X!     
X!     cancel = 0;
X!     while (command_len > 0) {
X!       CHAR *name;
X!       if (DEBUG_TERM) {
X! 	CHAR *R1=printable_command(0);
X! 	print_debug("Command: %s",R1);
X! 	FREE(R1);
X!       }
X!       if (do_escape(0) || 
X! 	  cancel || 
X! 	  do_keyboard(0,&cancel)) {
X  
X!       } else if (0 != (name = key_name(0))) {
X! 	  char *buffer1 = "Key ", *buffer3 = " haven't action";
X! 	  int bl1 = strlen(buffer1), bl3 = strlen(buffer3);
X! 	  int bl2 = strlen(Cs(name));
X! 	  CHAR_IDX buffer[50];
X! 	  map_input(MAP_ASCII,bl1,rCs(buffer1),buffer);
X! 	  map_input(MAP_ASCII,bl2,name,buffer+bl1);
X! 	  map_input(MAP_ASCII,bl3,rCs(buffer3),buffer+bl1+bl2);
X! 	  message_to_error(bl1+bl2+bl3,buffer);
X!       } else {
X! 	CHAR *R1=printable_sequence(0);
X! 	print_notify("Unexpected escape sequence: %s",R1);
X! 	free(R1);
X!       }
X! 
X!       rem_command(0);
X      }
X  
X!     if (pager_state)
X!     {
X!       CHAR *R2=unparsed_printable();
X!       CHAR *T=composing();
X! 
X!       if (cancel) {
X! 	clear_errors();
X! 	key_group = G_PAGER; 
X        }
X- 
X-       if (T) {
X- 	CHAR *TMP = concat_text(NULL,T);
X- 	if (R2) {
X- 	  TMP = concat_text(TMP,rCs(" "));
X- 	  TMP = concat_text(TMP,R2);
X- 	  FREE(R2);
X- 	}
X- 	R2 = TMP;
X-       }
X- 
X-       if (R2) {
X- 	int len = strlen(Cs(R2));
X- 
X- 	if (LAST_UNPARSED && 0 == strcmp(Cs(R2),Cs(LAST_UNPARSED))) {
X- 	  FREE(R2);
X- 
X- 	} else {
X- 	  CHAR_IDX *mapped = (CHAR_IDX *)MALLOC(len * sizeof(CHAR_IDX));
X- 
X- 	  if (LAST_UNPARSED) {
X- 	    FREE(LAST_UNPARSED); LAST_UNPARSED = NULL;
X- 	  }
X  	  
X! 	  clear_window(WIN_UNPARSED);
X! 	  set_window_status(WIN_UNPARSED,0,0,0,8,4,PRI_COMPLETE,0);
X! 	  map_window(WIN_UNPARSED,0,lines);
X! 
X! 	  map_input(MAP_ASCII,len,R2,mapped);
X! 	  print_to_window(WIN_UNPARSED,1,1,FL_BOLD,len,mapped);
X! 	
X! 	  set_win_prompt(WIN_UNPARSED,len+1,1);
X! 	  FREE(mapped);
X! 	  LAST_UNPARSED = R2;
X! 	  remove = 1;
X! 	}
X!       } else if (remove) {
X! 	if (LAST_UNPARSED) {
X! 	  FREE(LAST_UNPARSED); LAST_UNPARSED = NULL;
X! 	}
X! 	unmap_window(WIN_UNPARSED);
X! 	remove = 0;
X!       }
X      }
X!     
X!     if (pager_state && get_next) {
X!       CHAR *name = NULL;
X  
X!       set_win_prompt(-1,-1,-1);
X!       update_prompt(WIN_TEXT, 0);
X!       clear_window(WIN_TEXT);
X!       map_window(WIN_TEXT,1-down_line,1);
X        
X!       if (0 == arg_left) { 
X! 	if (auto_input) {
X! 	  if (!isatty(0)) name = rCs(STD_INPUT);
X! 	  else {
X! 	    set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			      !enable_eatspc,input_tabstep,input_indentstep,
X! 			      PRI_NORMAL,enable_pages);
X! 	    copyright_page(WIN_TEXT);
X! 	    auto_input = 0;
X! 	    if (-1 != FP) {
X! 	      exit_content(&CT);
X! 	      close_file(&FP);
X! 	    }
X! 	    EOF_IN_FILE = 1;
X  	  }
X! 	} else quitflag = 1; 
X!       } else while(arg_left--> 0) {
X! 	if ('-' == **arg_vec && !no_option) {
X! 	  if (0 == strcmp("-",*arg_vec)) name = rCs(STD_INPUT);
X! 	  else if (0 == strcmp("--",*arg_vec)) no_option = 1;
X! 	  else if (0 == strcmp("-A",*arg_vec)) { map = MAP_ASCII;
X  						 map_param = NULL; }
X! 	  else if (0 == strcmp("-L",*arg_vec)) { map = MAP_LATIN1;
X! 						 map_param = NULL; }
X! 	  else if (0 == strcmp("-L1",*arg_vec)) { map = MAP_LATIN1;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-L2",*arg_vec)) { map = MAP_LATIN2;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-L3",*arg_vec)) { map = MAP_LATIN3;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-L4",*arg_vec)) { map = MAP_LATIN4;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-L5",*arg_vec)) { map = MAP_LATIN5;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-M",*arg_vec)) { map = MAP_MULTINATIONAL;
X! 						 map_param = NULL; }
X! 	  else if (0 == strcmp("-PC",*arg_vec)) { map = MAP_CP437;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-MAC",*arg_vec)) { map = MAP_MAC;
X! 						   map_param = NULL; }
X! 	  else if (0 == strcmp("-F",*arg_vec)) { map = MAP_FINNISH;
X! 						 map_param = NULL; }
X! 	  else if (0 == strcmp("-UK",*arg_vec)) { map = MAP_UK;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-NR",*arg_vec)) { map = MAP_NOR;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-SW",*arg_vec)) { map = MAP_SWE;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-FR",*arg_vec)) { map = MAP_BEL;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-CA",*arg_vec)) { map = MAP_CAN;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-GR",*arg_vec)) { map = MAP_GER;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-SP",*arg_vec)) { map = MAP_SPA;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-IT",*arg_vec)) { map = MAP_ITAL;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-U7",*arg_vec)) { map = MAP_UTF7;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-U8",*arg_vec)) { map = MAP_UTF8;
X! 						  map_param = NULL; }
X! 	  else if (0 == strcmp("-MN",*arg_vec)) { map = MAP_Mnem;
X! 						  map_param = rCs("29"); }
X! 	  else if (0 == strncmp("-MN:",*arg_vec,4)) { map = MAP_Mnem;
X! 						  map_param = rCs(*arg_vec+4); }
X! 	  else if (0 == strcmp("-t",*arg_vec)) enable_tab = 0;
X! 	  else if (0 == strcmp("-t+",*arg_vec)) enable_tab = 1;
X! 	  else if (0 == strncmp("-t",*arg_vec,2) && isdigit((*arg_vec)[2])) {
X! 	    input_tabstep = atoi((*arg_vec)+2);
X  	  }
X! 	  else if (0 == strncmp("-i",*arg_vec,2) && isdigit((*arg_vec)[2])) {
X! 	    input_indentstep = atoi((*arg_vec)+2);
X  	  }
X! 	  else if (0 == strcmp("-w",*arg_vec)) enable_wrapping = 0;
X! 	  else if (0 == strcmp("-w+",*arg_vec)) enable_wrapping = 1;
X! 	  else if (0 == strcmp("-sp",*arg_vec)) enable_eatspc = 0;
X! 	  else if (0 == strcmp("-sp+",*arg_vec)) enable_eatspc = 1;
X! 	  else if (0 == strcmp("-st",*arg_vec)) showtime = 0;
X! 	  else if (0 == strcmp("-st+",*arg_vec)) showtime = 1;
X! 	  else if (0 == strcmp("-j",*arg_vec)) enable_fulljust = 0;
X! 	  else if (0 == strcmp("-j+",*arg_vec)) enable_fulljust = 1;
X! 	  else if (0 == strcmp("-p",*arg_vec)) have_prompt = 0;
X! 	  else if (0 == strcmp("-p+",*arg_vec)) have_prompt = 1;
X! 	  else if (0 == strcmp("-pm",*arg_vec)) enable_pages = 0;
X! 	  else if (0 == strcmp("-pm+",*arg_vec)) enable_pages = 1;
X! 	  else if (0 == strcmp("-nu",*arg_vec)) eoln_type = EOLN_unix;
X! 	  else if (0 == strcmp("-nn",*arg_vec)) eoln_type = EOLN_network;
X! 	  else if (0 == strcmp("-pl",*arg_vec)) content_type = CT_plain;
X! 	  else if (0 == strcmp("-tr",*arg_vec)) content_type = CT_terminal;
X! 	  else if (0 == strcmp("-er",*arg_vec)) content_type = CT_enriched;
X! 	  else if (0 == strcmp("-rt",*arg_vec)) content_type = CT_richtext;
X! 	  else if (0 == strcmp("-H",*arg_vec)) {
X! 	    set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			      !enable_eatspc,input_tabstep,input_indentstep,
X! 			      PRI_NORMAL,enable_pages);
X! 	    help_page(WIN_TEXT);
X! 	    arg_vec++;
X! 	    auto_input = 0;
X! 	    if (-1 != FP) {
X! 	      exit_content(&CT);
X! 	      close_file(&FP);
X! 	    }
X! 	    EOF_IN_FILE = 1;
X! 	    break;
X! 	  } else if (0 == strcmp("-cs",*arg_vec)) {
X! 	    set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			      !enable_eatspc,input_tabstep,input_indentstep,
X! 			      PRI_NORMAL,enable_pages);
X! 	    charset_listing(WIN_TEXT);
X! 	    arg_vec++;
X! 	    auto_input = 0;
X! 	    if (-1 != FP) {
X! 	      exit_content(&CT);
X! 	      close_file(&FP);
X! 	    }
X! 	    EOF_IN_FILE = 1;
X! 	    break;
X! 	  } else if (0 == strcmp("-DS",*arg_vec)) {
X! 	    set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			      !enable_eatspc,input_tabstep,input_indentstep,
X! 			      PRI_NORMAL,enable_pages);
X! 	    debug_page(WIN_TEXT);
X! 	    arg_vec++;
X! 	    auto_input = 0;
X! 	    if (-1 != FP) {
X! 	      exit_content(&CT);
X! 	      close_file(&FP);
X! 	    }
X! 	    EOF_IN_FILE = 1;
X! 	    break;
X! 	  } else if (0 == strcmp("-T",*arg_vec)) {
X! 	    set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			      !enable_eatspc,input_tabstep,input_indentstep,
X! 			      PRI_NORMAL,enable_pages);
X! 	    test_page(WIN_TEXT);
X! 	    arg_vec++;
X! 	    auto_input = 0;
X! 	    EOF_IN_FILE = 1;
X! 	    break;
X! 	  } else if (0 == strcmp("-T2",*arg_vec)) {
X! 	    set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			      !enable_eatspc,input_tabstep,input_indentstep,
X! 			      PRI_NORMAL,enable_pages);
X! 	    test_page2(WIN_TEXT);
X! 	    arg_vec++;
X! 	    auto_input = 0;
X! 	    if (-1 != FP) {
X! 	      exit_content(&CT);
X! 	      close_file(&FP);
X! 	    }
X! 	    EOF_IN_FILE = 1;
X! 	    break;
X! 	  } else if (0 == strcmp("-T3",*arg_vec)) {
X! 	    set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			      !enable_eatspc,input_tabstep,input_indentstep,
X! 			      PRI_NORMAL,enable_pages);
X! 	    test_page3(WIN_TEXT);
X! 	    arg_vec++;
X! 	    auto_input = 0;
X! 	    if (-1 != FP) {
X! 	      exit_content(&CT);
X! 	      close_file(&FP);
X! 	    }
X! 	    EOF_IN_FILE = 1;
X! 	    break;
X! 	  } else if (0 == strcmp("-CS",*arg_vec)) {
X! 	    if (arg_left > 0) {
X! 	      if ('\0' == (*++arg_vec)[0]) {
X! 		arg_left--;
X! 		map = map_null_name;
X! 		map_param = NULL;
X! 	      } else {
X! 		int cs = find_map(rCs(*arg_vec));
X! 		arg_left--;
X! 		map = MAP_ASCII;
X! 		map_param = NULL;
X! 		if (cs >= 0) map = cs;
X! 		else print_notify("Bad charset: %s",*arg_vec);
X! 	      }
X! 	    } else print_notify("Argument expected for -CS");
X! 	  } else if (0 == strcmp("-ct",*arg_vec)) {
X! 	    if (arg_left > 0) {
X! 	      int ct = search_content(rCs(*++arg_vec),0);
X! 	      arg_left--;
X! 	      content_type = CT_plain;
X! 	      if (ct >= 0) content_type = ct;
X! 	      else print_notify("Bad content-type: %s",*arg_vec);
X! 	    } else print_notify("Argument expected for -ct");
X! 	  } 
X! 	  /* OBSOLETED: */
X! 	  else if (0 == strcmp("-b",*arg_vec)) content_type = CT_plain;
X! 	  else if (0 == strcmp("-b+",*arg_vec)) content_type = CT_terminal;
X! 	  else if (0 == strcmp("-a",*arg_vec)) content_type  = CT_plain;
X! 	  else if (0 == strcmp("-a+",*arg_vec)) content_type = CT_terminal;
X! 	  else if (0 == strcmp("-nl",*arg_vec)) NOT_IN_USE = 0;
X! 	  else if (0 == strcmp("-nl+",*arg_vec)) NOT_IN_USE = 0;
X! 	  else print_notify("Bad option: %s",*arg_vec);
X! 
X! 	} else {
X  	  set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X  			    !enable_eatspc,input_tabstep,input_indentstep,
X  			    PRI_NORMAL,enable_pages);
X! 	  name = rCs(*arg_vec);
X  	  arg_vec++;
X  	  break;
X! 	}
X! 	arg_vec++;
X!       }
X! 
X!       if (NULL == name && auto_input)
X! 	name = rCs(STD_INPUT);
X!       
X!       if (name) {
X! 	if (-1 != FP) {
X! 	  exit_content(&CT);
X! 	  close_file(&FP);
X! 	}
X! 	auto_input = 0;
X! 	read_file(name,&FP,&EOF_IN_FILE,&EOLN_STATE,
X! 		  &CT,map,map_param,
X! 		  content_type);
X  	
X  	set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X  			  !enable_eatspc,input_tabstep,input_indentstep,
X  			  PRI_NORMAL,enable_pages);
X  
X        }
X        
X!       get_next = 0;
X      }
X  
X! #ifdef _HPUX_SOURCE
X!     if (-1 != FP && !EOF_IN_FILE && 
X! 	(NOT_SELECTABLE || (readfs & (1 << FP))))
X! #else
X!     if (-1 != FP && !EOF_IN_FILE && 
X! 	(NOT_SELECTABLE || FD_ISSET(FP,&readfs)))
X! #endif
X!       {
X! 	handle_file(&CT,&FP,&EOF_IN_FILE,&EOLN_STATE);
X  
X! 	if (do_forwarding) {
X! 	  int prev,offset,Y,roffset,pagenum,pages;
X! 	  for (window_pos(WIN_TEXT,&Y,&offset,&roffset,&pagenum,&pages),
X! 	       prev=roffset; 
X! 	       window_rlines(WIN_TEXT) - roffset > lines -Y && 
X! 	       roffset - prev <lines;
X! 	       window_pos(WIN_TEXT,&Y,&offset,&roffset,&pagenum,&pages))
X! 	    scroll_window(WIN_TEXT); 
X! 	  do_forwarding = 0;
X! 	}
X  
X!       }
X  
X!     if (pager_state && !remove)
X!       update_prompt(have_error ? WIN_ERROR : WIN_TEXT,
X! 		    !quitflag ? 
X! 		       have_error ? 3 : 
X! 		         !EOF_IN_FILE ? 2 : 
X! 		           arg_left > 0 ? 1 : 
X!                            4 : 
X!                     0);
X  
X  
X! #ifdef _HPUX_SOURCE
X!     if (writefs & (1 << terminal))
X! #else
X!     if (FD_ISSET(terminal,&writefs)) 
X! #endif
X!       { 
X! 	int val = need_line_flush();
X! 	if (was_input && 2 != val) {
X! 	  if (DEBUG_BUFFER || DEBUG_LBUFFER) 
X! 	    print_debug("BUFFER: was_input=%d, "
X! 			"need_line_flush()=%d - no flush",
X! 			was_input,val);
X! 	} else {
X! 	  if (DEBUG_BUFFER || DEBUG_LBUFFER) 
X! 	    print_debug("BUFFER: was_input=%d, "
X! 			"need_line_flush()=%d - flushing...",
X! 			was_input,val);
X! 	  if (!flush_some_lines())
X! 	    flush_buffer(0);
X! 	}
X!       }
X    }
X  
X    if (-1 != FP) {
X      exit_content(&CT);
X      close_file(&FP);
X    }
X  
X    if (LAST_UNPARSED) {
X      FREE(LAST_UNPARSED); LAST_UNPARSED = NULL;
X    }
X--- 2013,2438 ----
X  static int auto_input = 1;
X  static CHAR *LAST_UNPARSED = NULL;
X  
X  
X! /* **** */
X  
X! static int remove_uncomplete = 0;
X! static int no_option = 0;
X! static int last_columns=0, last_lines = 0;
X  
X! static int file_callback_before(void) {
X!   
X!   int skip = 0;
X!   int tail_ptr;
X  
X!   cancel = 0;
X!   
X!   if (need_redraw) {
X!     need_redraw = 0;
X!     do_redraw();
X!   }
X  
X!   if (last_columns != columns) {
X!     last_columns = columns;
X!     if (!remove_uncomplete)
X!       update_prompt(have_error ? WIN_ERROR : WIN_TEXT, PROMPT_WRAP);
X!     rewrap_windows();
X!     skip = 1; /* Prompt need recalculating */
X!   } 
X  
X!   if (last_lines != lines) { 
X!     last_lines = lines;
X!     skip = 1; /* Prompt need recalculating */
X!   } 
X  
X!   /* With this way we can lost some messages 
X!    * but it is very diffuclt guarantee that message is really
X!    * printed before signal occurs (because messag can go out
X!    * of display in window anyway)
X!    */
X!   if (got_from_TAIL(&tail_ptr)) {
X!     print_errors(tail_ptr);
X!     skip = 1; /* Prompt need recalculating */
X!   }
X  
X!   return skip;
X! }
X  
X  
X! void file_callback_after(void) {
X  
X!   CHAR *R2=unparsed_printable();
X!   CHAR *T=composing();
X!   
X!   if (cancel) {
X!     clear_errors();
X!     key_group = G_PAGER; 
X!   }
X  
X!   if (T) {
X!     CHAR *TMP = concat_text(NULL,T);
X!     if (R2) {
X!       TMP = concat_text(TMP,rCs(" "));
X!       TMP = concat_text(TMP,R2);
X!       FREE(R2);
X      }
X+     R2 = TMP;
X+   }
X  
X!   if (R2) {
X!     int len = strlen(Cs(R2));
X!     
X!     if (LAST_UNPARSED && 0 == strcmp(Cs(R2),Cs(LAST_UNPARSED))) {
X!       FREE(R2);
X!       
X!     } else {
X!       CHAR_IDX *mapped = (CHAR_IDX *)MALLOC(len * sizeof(CHAR_IDX));
X!       
X!       if (LAST_UNPARSED) {
X! 	FREE(LAST_UNPARSED); LAST_UNPARSED = NULL;
X        }
X  	  
X!       clear_window(WIN_UNPARSED);
X!       set_window_status(WIN_UNPARSED,0,0,0,8,4,PRI_COMPLETE,0);
X!       map_window(WIN_UNPARSED,0,lines);
X!       
X!       map_input(MAP_ASCII,len,R2,mapped);
X!       print_to_window(WIN_UNPARSED,1,1,FL_BOLD,len,mapped);
X!       
X!       set_win_prompt(WIN_UNPARSED,len+1,1);
X!       FREE(mapped);
X!       LAST_UNPARSED = R2;
X!       remove_uncomplete = 1;
X      }
X!   } else if (remove_uncomplete) {
X!     if (LAST_UNPARSED) {
X!       FREE(LAST_UNPARSED); LAST_UNPARSED = NULL;
X!     }
X!     unmap_window(WIN_UNPARSED);
X!     remove_uncomplete = 0;
X!   }
X  
X!   if (get_next) {
X!     CHAR *name = NULL;
X!     
X!     set_win_prompt(-1,-1,-1);
X!     update_prompt(WIN_TEXT, 0);
X!     clear_window(WIN_TEXT);
X!     map_window(WIN_TEXT,1-down_line,1);
X        
X!     if (0 == arg_left) { 
X!       if (auto_input) {
X! 	if (!isatty(0)) name = rCs(STD_INPUT);
X! 	else {
X! 	  set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			    !enable_eatspc,input_tabstep,input_indentstep,
X! 			    PRI_NORMAL,enable_pages);
X! 	  copyright_page(WIN_TEXT);
X! 	  auto_input = 0;
X! 	  if (-1 != FP) {
X! 	    exit_content(&CT);
X! 	    close_file(&FP);
X  	  }
X! 	  EOF_IN_FILE = 1;
X! 	}
X!       } else quitflag = 1; 
X!     } else while(arg_left--> 0) {
X!       if ('-' == **arg_vec && !no_option) {
X! 	if (0 == strcmp("-",*arg_vec)) name = rCs(STD_INPUT);
X! 	else if (0 == strcmp("--",*arg_vec)) no_option = 1;
X! 	else if (0 == strcmp("-A",*arg_vec)) { map = MAP_ASCII;
X! 					       map_param = NULL; }
X! 	else if (0 == strcmp("-L",*arg_vec)) { map = MAP_LATIN1;
X! 					       map_param = NULL; }
X! 	else if (0 == strcmp("-L1",*arg_vec)) { map = MAP_LATIN1;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-L2",*arg_vec)) { map = MAP_LATIN2;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-L3",*arg_vec)) { map = MAP_LATIN3;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-L4",*arg_vec)) { map = MAP_LATIN4;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-L5",*arg_vec)) { map = MAP_LATIN5;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-M",*arg_vec)) { map = MAP_MULTINATIONAL;
X! 					       map_param = NULL; }
X! 	else if (0 == strcmp("-PC",*arg_vec)) { map = MAP_CP437;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-MAC",*arg_vec)) { map = MAP_MAC;
X  						 map_param = NULL; }
X! 	else if (0 == strcmp("-F",*arg_vec)) { map = MAP_FINNISH;
X! 					       map_param = NULL; }
X! 	else if (0 == strcmp("-UK",*arg_vec)) { map = MAP_UK;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-NR",*arg_vec)) { map = MAP_NOR;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-SW",*arg_vec)) { map = MAP_SWE;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-FR",*arg_vec)) { map = MAP_BEL;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-CA",*arg_vec)) { map = MAP_CAN;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-GR",*arg_vec)) { map = MAP_GER;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-SP",*arg_vec)) { map = MAP_SPA;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-IT",*arg_vec)) { map = MAP_ITAL;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-U7",*arg_vec)) { map = MAP_UTF7;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-U8",*arg_vec)) { map = MAP_UTF8;
X! 						map_param = NULL; }
X! 	else if (0 == strcmp("-MN",*arg_vec)) { map = MAP_Mnem;
X! 						map_param = rCs("29"); }
X! 	else if (0 == strncmp("-MN:",*arg_vec,4)) { map = MAP_Mnem;
X! 						    map_param = rCs(*arg_vec+4); }
X! 	else if (0 == strcmp("-t",*arg_vec)) enable_tab = 0;
X! 	else if (0 == strcmp("-t+",*arg_vec)) enable_tab = 1;
X! 	else if (0 == strncmp("-t",*arg_vec,2) && isdigit((*arg_vec)[2])) {
X! 	  input_tabstep = atoi((*arg_vec)+2);
X! 	}
X! 	else if (0 == strncmp("-i",*arg_vec,2) && isdigit((*arg_vec)[2])) {
X! 	  input_indentstep = atoi((*arg_vec)+2);
X! 	}
X! 	else if (0 == strcmp("-w",*arg_vec)) enable_wrapping = 0;
X! 	else if (0 == strcmp("-w+",*arg_vec)) enable_wrapping = 1;
X! 	else if (0 == strcmp("-sp",*arg_vec)) enable_eatspc = 0;
X! 	else if (0 == strcmp("-sp+",*arg_vec)) enable_eatspc = 1;
X! 	else if (0 == strcmp("-st",*arg_vec)) showtime = 0;
X! 	else if (0 == strcmp("-st+",*arg_vec)) showtime = 1;
X! 	else if (0 == strcmp("-j",*arg_vec)) enable_fulljust = 0;
X! 	else if (0 == strcmp("-j+",*arg_vec)) enable_fulljust = 1;
X! 	else if (0 == strcmp("-p",*arg_vec)) have_prompt = 0;
X! 	else if (0 == strcmp("-p+",*arg_vec)) have_prompt = 1;
X! 	else if (0 == strcmp("-pm",*arg_vec)) enable_pages = 0;
X! 	else if (0 == strcmp("-pm+",*arg_vec)) enable_pages = 1;
X! 	else if (0 == strcmp("-nu",*arg_vec)) eoln_type = EOLN_unix;
X! 	else if (0 == strcmp("-nn",*arg_vec)) eoln_type = EOLN_network;
X! 	else if (0 == strcmp("-pl",*arg_vec)) content_type = CT_plain;
X! 	else if (0 == strcmp("-tr",*arg_vec)) content_type = CT_terminal;
X! 	else if (0 == strcmp("-er",*arg_vec)) content_type = CT_enriched;
X! 	else if (0 == strcmp("-rt",*arg_vec)) content_type = CT_richtext;
X! 	else if (0 == strcmp("-H",*arg_vec)) {
X! 	  set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			    !enable_eatspc,input_tabstep,input_indentstep,
X! 			    PRI_NORMAL,enable_pages);
X! 	  help_page(WIN_TEXT);
X! 	  arg_vec++;
X! 	  auto_input = 0;
X! 	  if (-1 != FP) {
X! 	    exit_content(&CT);
X! 	    close_file(&FP);
X  	  }
X! 	  EOF_IN_FILE = 1;
X! 	  break;
X! 	} else if (0 == strcmp("-cs",*arg_vec)) {
X! 	  set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			    !enable_eatspc,input_tabstep,input_indentstep,
X! 			    PRI_NORMAL,enable_pages);
X! 	  charset_listing(WIN_TEXT);
X! 	  arg_vec++;
X! 	  auto_input = 0;
X! 	  if (-1 != FP) {
X! 	    exit_content(&CT);
X! 	    close_file(&FP);
X  	  }
X! 	  EOF_IN_FILE = 1;
X! 	  break;
X! 	} else if (0 == strcmp("-DS",*arg_vec)) {
X  	  set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X  			    !enable_eatspc,input_tabstep,input_indentstep,
X  			    PRI_NORMAL,enable_pages);
X! 	  debug_page(WIN_TEXT);
X  	  arg_vec++;
X+ 	  auto_input = 0;
X+ 	  if (-1 != FP) {
X+ 	    exit_content(&CT);
X+ 	    close_file(&FP);
X+ 	  }
X+ 	  EOF_IN_FILE = 1;
X  	  break;
X! 	} else if (0 == strcmp("-T",*arg_vec)) {
X! 	  set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			    !enable_eatspc,input_tabstep,input_indentstep,
X! 			    PRI_NORMAL,enable_pages);
X! 	  test_page(WIN_TEXT);
X! 	  arg_vec++;
X! 	  auto_input = 0;
X! 	  EOF_IN_FILE = 1;
X! 	  break;
X! 	} else if (0 == strcmp("-T2",*arg_vec)) {
X! 	  set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			    !enable_eatspc,input_tabstep,input_indentstep,
X! 			    PRI_NORMAL,enable_pages);
X! 	  test_page2(WIN_TEXT);
X! 	  arg_vec++;
X! 	  auto_input = 0;
X! 	  if (-1 != FP) {
X! 	    exit_content(&CT);
X! 	    close_file(&FP);
X! 	  }
X! 	  EOF_IN_FILE = 1;
X! 	  break;
X! 	} else if (0 == strcmp("-T3",*arg_vec)) {
X! 	  set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			    !enable_eatspc,input_tabstep,input_indentstep,
X! 			    PRI_NORMAL,enable_pages);
X! 	  test_page3(WIN_TEXT);
X! 	  arg_vec++;
X! 	  auto_input = 0;
X! 	  if (-1 != FP) {
X! 	    exit_content(&CT);
X! 	    close_file(&FP);
X! 	  }
X! 	  EOF_IN_FILE = 1;
X! 	  break;
X! 	} else if (0 == strcmp("-CS",*arg_vec)) {
X! 	  if (arg_left > 0) {
X! 	    if ('\0' == (*++arg_vec)[0]) {
X! 	      arg_left--;
X! 	      map = map_null_name;
X! 	      map_param = NULL;
X! 	    } else {
X! 	      int cs = find_map(rCs(*arg_vec));
X! 	      arg_left--;
X! 	      map = MAP_ASCII;
X! 	      map_param = NULL;
X! 	      if (cs >= 0) map = cs;
X! 	      else print_notify("Bad charset: %s",*arg_vec);
X! 	    }
X! 	  } else print_notify("Argument expected for -CS");
X! 	} else if (0 == strcmp("-ct",*arg_vec)) {
X! 	  if (arg_left > 0) {
X! 	    int ct = search_content(rCs(*++arg_vec),0);
X! 	    arg_left--;
X! 	    content_type = CT_plain;
X! 	    if (ct >= 0) content_type = ct;
X! 	    else print_notify("Bad content-type: %s",*arg_vec);
X! 	  } else print_notify("Argument expected for -ct");
X! 	} 
X! 	/* OBSOLETED: */
X! 	else if (0 == strcmp("-b",*arg_vec)) content_type = CT_plain;
X! 	else if (0 == strcmp("-b+",*arg_vec)) content_type = CT_terminal;
X! 	else if (0 == strcmp("-a",*arg_vec)) content_type  = CT_plain;
X! 	else if (0 == strcmp("-a+",*arg_vec)) content_type = CT_terminal;
X! 	else if (0 == strcmp("-nl",*arg_vec)) NOT_IN_USE = 0;
X! 	else if (0 == strcmp("-nl+",*arg_vec)) NOT_IN_USE = 0;
X! 	else print_notify("Bad option: %s",*arg_vec);
X  	
X+       } else {
X  	set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X  			  !enable_eatspc,input_tabstep,input_indentstep,
X  			  PRI_NORMAL,enable_pages);
X+ 	name = rCs(*arg_vec);
X+ 	arg_vec++;
X+ 	break;
X+       }
X+       arg_vec++;
X+     }
X  
X+     if (NULL == name && auto_input)
X+       name = rCs(STD_INPUT);
X+     
X+     if (name) {
X+       if (-1 != FP) {
X+ 	exit_content(&CT);
X+ 	close_file(&FP);
X        }
X+       auto_input = 0;
X+       read_file(name,&FP,&EOF_IN_FILE,&EOLN_STATE,
X+ 		&CT,map,map_param,
X+ 		content_type);
X        
X!       set_window_status(WIN_TEXT,enable_tab,enable_wrapping,
X! 			!enable_eatspc,input_tabstep,input_indentstep,
X! 			PRI_NORMAL,enable_pages);
X!       
X      }
X+       
X+     get_next = 0;
X+   }
X  
X!   if (!remove_uncomplete)
X!     update_prompt(have_error ? WIN_ERROR : WIN_TEXT,
X! 		  !quitflag ? 
X! 		  have_error ? PROMPT_NEXT_PAGE_MES : 
X! 		  !EOF_IN_FILE ? PROMPT_READ : 
X! 		  arg_left > 0 ? PROMPT_NEXT_PAGE : 
X! 		  PROMPT_NEXT_PAGE_LAS : 
X! 		  0);
X  
X! }
X  
X! static int file_timeout(long *value) {
X!   long res=-1;
X!   long a;
X!   int val = 1;
X!   
X!   if (ask_timeout(&a))
X!     res = a;
X!   
X!   if (showtime) {
X!     /* runs little in back ! */
X!     a = seconds_to_next_minute()*10+1;
X!     if (-1 == res || a < res) {
X!       res = a;
X!       val = 2;
X!     }
X!   }
X  
X!   if (res >= 0) {
X!     *value = res;
X!     return val;
X!   }
X!   return 0;
X! }
X  
X+ static void file_do_timeout(int key) {
X+   if (1 == key)
X+     do_timeout();
X  
X! }
X! 
X! static void file_handler(void) {
X! 
X!   handle_file(&CT,&FP,&EOF_IN_FILE,&EOLN_STATE);
X!   
X!   if (do_forwarding) {
X!     int prev,offset,Y,roffset,pagenum,pages;
X!     for (window_pos(WIN_TEXT,&Y,&offset,&roffset,&pagenum,&pages),
X! 	 prev=roffset; 
X! 	 window_rlines(WIN_TEXT) - roffset > lines -Y && 
X! 	 roffset - prev <lines;
X! 	 window_pos(WIN_TEXT,&Y,&offset,&roffset,&pagenum,&pages))
X!       scroll_window(WIN_TEXT); 
X!     do_forwarding = 0;
X    }
X+   
X+   if (!remove_uncomplete)
X+     update_prompt(have_error ? WIN_ERROR : WIN_TEXT,
X+ 		  !quitflag ? 
X+ 		  have_error ? PROMPT_NEXT_PAGE_MES : 
X+ 		  !EOF_IN_FILE ? PROMPT_READ : 
X+ 		  arg_left > 0 ? PROMPT_NEXT_PAGE : 
X+ 		  PROMPT_NEXT_PAGE_LAS : 
X+ 		  0);
X+ }
X  
X+ static void file_schedule(void) {
X+   last_columns = columns;
X+   last_lines = lines;
X+   real_schedule(&FP,&EOF_IN_FILE,&NOT_SELECTABLE,
X+ 		&file_handler,
X+ 		&file_timeout,&file_do_timeout,
X+ 		&quitflag,&file_callback_before,
X+ 		&file_callback_after,1);
X+   
X    if (-1 != FP) {
X      exit_content(&CT);
X      close_file(&FP);
X    }
X  
X+  
X    if (LAST_UNPARSED) {
X      FREE(LAST_UNPARSED); LAST_UNPARSED = NULL;
X    }
X***************
X*** 2685,2692 ****
X    }
X  
X    get_terminal_state();
X!   schedule();
X!   close_files();
X    reset_terminal_state();
X    close_terminal();
X    if (print_it) {
X--- 2598,2609 ----
X    }
X  
X    get_terminal_state();
X! 
X!   if (init_schedule()) {
X!     file_schedule();
X!     close_files();
X!   }
X! 
X    reset_terminal_state();
X    close_terminal();
X    if (print_it) {
Xdiff -c ../kehpager-1.2/terminal.c ./terminal.c
X*** ../kehpager-1.2/terminal.c	Sat Jul  9 13:28:58 1994
X--- ./terminal.c	Sat Oct 15 18:29:21 1994
X***************
X*** 45,51 ****
X  		      struct sigaction *oact);
X  #endif
X  
X! #if defined(SUNOS5) || defined(_HPUX_SOURCE) || defined(__386BSD__) || defined(__FreeBSD__) || defined(__NetBSD__)
X  #define PID pid_t 
X  #else
X  #define PID int 
X--- 45,51 ----
X  		      struct sigaction *oact);
X  #endif
X  
X! #if defined(SUNOS5) || defined(_HPUX_SOURCE) || defined(__386BSD__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__sgi)
X  #define PID pid_t 
X  #else
X  #define PID int 
X***************
X*** 785,791 ****
X    termios_set =1;
X  
X  #ifdef VLNEXT
X! #ifdef __sgi
X    if (tty_state.c_line == LDISC1)
X      make_default(&key_compose,tty_state.c_cc[VLNEXT]);
X  #else
X--- 785,792 ----
X    termios_set =1;
X  
X  #ifdef VLNEXT
X! /* In Irix 4 termios and termio have same structure, but not in Irix 5 */
X! #if defined (__sgi) && !defined(_SVR4_SOURCE)
X    if (tty_state.c_line == LDISC1)
X      make_default(&key_compose,tty_state.c_cc[VLNEXT]);
X  #else
X***************
X*** 798,804 ****
X    make_default(&key_flush,tty_state.c_cc[VDISCARD]);
X  #else
X  #ifdef VFLUSHO
X! #ifdef __sgi
X    if (tty_state.c_line == LDISC1)
SHAR_EOF
echo "End of part 1, continue with part 2"
echo "2" > s2_seq_.tmp
exit 0
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads