Article View: alt.sources.patch
Article #2kehpager V1.2 to kehpager V1.21 (part 1/2)
From: Kari Hurtta
Date: Sun, 16 Oct 1994 14:12
Date: Sun, 16 Oct 1994 14:12
1947 lines
64772 bytes
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
Technical Details
Message-ID:
<37rcd8$bq5@kruuna.Helsinki.FI>Path:
arc1-ca.pugleaf.net!wupost!howland.reston.ans.net!EU.net!sunic!news.funet.fi!news.csc.fi!news.helsinki.fi!not-for-mailShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!wupost!howland.reston.ans.net!EU.net!sunic!news.funet.fi!news.csc.fi!news.helsinki.fi!not-for-mail From: hurtta@cc.Helsinki.FI (Kari Hurtta) Newsgroups: alt.sources.patch,alt.sources Subject: kehpager V1.2 to kehpager V1.21 (part 1/2) Followup-To: alt.sources.d Date: 16 Oct 1994 16:12:56 +0200 Organization: University of Helsinki Lines: 1947 Message-ID: <37rcd8$bq5@kruuna.Helsinki.FI> Reply-To: "Kari E. Hurtta" <Kari.Hurtta@Helsinki.FI> NNTP-Posting-Host: kruuna.helsinki.fi Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit