Repost: PD Terminfo/Curses (part 6 of 11)

sources at genrad.UUCP sources at genrad.UUCP
Wed Jan 2 23:32:22 AEST 1985


Part 6 seems to have gotten lost fairly close to genrad, so I am reposting.
My apologies for all who are seeing this a second time.

This is part of a distribution of a public domain version of terminfo/curses
It is a rather large distribution, so I have broken it up into 11 modules
(each less than 64K long.) Each shar format module should end with the line
"exit".  This code is completely public domain, originally written by Pavel
Curtis of Cornell University.  This version has some small improvements and
bug fixes.

This unit contains:
	The Caps file
	the dump program
	part1 of the library sources

----------------- cut here ----------------
: Run this shell script with "sh" not "csh"
PATH=:/bin:/usr/bin:/usr/ucb
export PATH
if test ! -d =src
then
    echo 'Making directory "=src"'
    mkdir =src
fi
echo 'x - =src/Caps'
sed 's/^X//' <<'//go.sysin dd *' >=src/Caps
#*********************************************************************
#                         COPYRIGHT NOTICE                           *
#*********************************************************************
#        This software is copyright (C) 1982 by Pavel Curtis         *
#                                                                    *
#        Permission is granted to reproduce and distribute           *
#        this file by any means so long as no fee is charged         *
#        above a nominal handling fee and so long as this            *
#        notice is always included in the copies.                    *
#                                                                    *
#        Other rights are reserved except as explicitly granted      *
#        by written permission of the author.                        *
#                Pavel Curtis                                        *
#                Computer Science Dept.                              *
#                405 Upson Hall                                      *
#                Cornell University                                  *
#                Ithaca, NY 14853                                    *
#                                                                    *
#                Ph- (607) 256-4934                                  *
#                                                                    *
#                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
#                decvax!cornell!pavel       (UUCPnet)                *
#********************************************************************/

# $Header:   RCS/Caps.v  Revision 2.1  82/10/25  14:45:23  pavel  Exp$
#
#       Format for the Caps file:
#               variable_name    "capname"   type   Comment
#
#       where variable_name is the name of the variable used by a
#       programmer capname is the name used inside the /etc/terminfo
#       file type is one of bool, number or str and Comment is the text
#       of the comment which will go in term.h.
#
#       All blank lines and lines beginning with '#' are ignored.
#
#       >>   NOTE!!!  New capabilities \must/ be placed at the end of
#       >>>> the appropriate list (e.g. bools, numbers, strings).
#       >>>> This allows previous versions of programs to still function
#	>>   \without/ recompilation.
#

auto_left_margin        "bw"     bool   cub1 wraps from column 0 to last column
auto_right_margin       "am"     bool   Terminal has automatic margins
beehive_glitch          "xsb"    bool   Beehive (f1=escape, f2=ctrl C)
ceol_standout_glitch    "xhp"    bool   Standout not erased by overwriting (hp)
eat_newline_glitch      "xenl"   bool   newline ignored after 80 cols (Concept)
erase_overstrike        "eo"     bool   Can erase overstrikes with a blank
generic_type            "gn"     bool   Generic line type (e.g. dialup, switch).
hard_copy               "hc"     bool   Hardcopy terminal
has_meta_key            "km"     bool   Has a meta key (shift, sets parity bit)
has_status_line         "hs"     bool   Has extra "status line"
insert_null_glitch      "in"     bool   Insert mode distinguishes nulls
memory_above            "da"     bool   Display may be retained above the screen
memory_below            "db"     bool   Display may be retained below the screen
move_insert_mode        "mir"    bool   Safe to move while in insert mode
move_standout_mode      "msgr"   bool   Safe to move in standout modes
over_strike             "os"     bool   Terminal overstrikes
status_line_esc_ok      "eslok"  bool   Escape can be used on the status line
teleray_glitch          "xt"     bool   Tabs destructive, magic so char (Teleray 1061)
tilde_glitch            "hz"     bool   Hazeltine; can't print ~'s
transparent_underline   "ul"     bool   underline character overstrikes
xon_xoff                "xon"    bool   Terminal uses xon/xoff handshaking

columns              "cols"   number  Number of columns in a line
init_tabs	     "it"     number  Tabs initially every # spaces
lines                "lines"  number  Number of lines on screen or page
lines_of_memory      "lm"     number  Lines of memory if > lines. 0 means varies
magic_cookie_glitch  "xmc"    number  Number of blank chars left by smso or rmso
padding_baud_rate    "pb"     number  Lowest baud rate where cr/nl padding needed
virtual_terminal     "vt"     number  Virtual terminal number (CB/Unix)
width_status_line    "wsl"    number  No. columns in status line
num_labels           "nlab"   number  No. of labels on screen (start at 1)
label_height         "lh"     number  No. rows in each label
label_width          "lw"     number  No. cols in each label

back_tab                "cbt"    str    Back tab (P)
bell                    "bel"    str    Audible signal (bell) (P)
carriage_return         "cr"     str    Carriage return (P*)
change_scroll_region    "csr"    str    change to lines #1 through #2 (vt100) (PG)
clear_all_tabs          "tbc"    str    Clear all tab stops. (P)
clear_screen            "clear"  str    Clear screen (P*)
clr_eol                 "el"     str    Clear to end of line (P)
clr_eos                 "ed"     str    Clear to end of display (P*)
column_address          "hpa"    str    Set cursor column (PG)
command_character       "CC"     str    Term. settable cmd char in prototype
cursor_address          "cup"    str    Cursor motion to row #1 col #2 (PG)
cursor_down             "cud1"   str    Down one line
cursor_home             "home"   str    Home cursor (if no cup)
cursor_invisible        "civis"  str    Make cursor invisible
cursor_left             "cub1"   str    Move cursor left one space.
cursor_mem_address      "mrcup"  str    Memory relative cursor addressing.
cursor_normal           "cnorm"  str    Make cursor appear normal (undo vs/vi)
cursor_right            "cuf1"   str    Non-destructive space (cursor right)
cursor_to_ll            "ll"     str    Last line, first column (if no cup)
cursor_up               "cuu1"   str    Upline (cursor up)
cursor_visible          "cvvis"  str    Make cursor very visible
delete_character        "dch1"   str    Delete character (P*)
delete_line             "dl1"    str    Delete line (P*)
dis_status_line         "dsl"    str    Disable status line
down_half_line          "hd"     str    Half-line down (forward 1/2 linefeed)
enter_alt_charset_mode  "smacs"  str    Start alternate character set (P)
enter_blink_mode        "blink"  str    Turn on blinking
enter_bold_mode         "bold"   str    Turn on bold (extra bright) mode
enter_ca_mode           "smcup"  str    String to end programs that use cup
enter_delete_mode       "smdc"   str    Delete mode (enter)
enter_dim_mode          "dim"    str    Turn on half-bright mode
enter_insert_mode       "smir"   str    Insert mode (enter);
enter_secure_mode       "invis"  str    Turn on blank mode (chars invisible)
enter_protected_mode    "prot"   str    Turn on protected mode
enter_reverse_mode      "rev"    str    Turn on reverse video mode
enter_standout_mode     "smso"   str    Begin stand out mode
enter_underline_mode    "smul"   str    Start underscore mode
erase_chars             "ech"    str    Erase #1 characters (PG)
exit_alt_charset_mode   "rmacs"  str    End alternate character set (P)
exit_attribute_mode     "sgr0"   str    Turn off all attributes
exit_ca_mode            "rmcup"  str    String to begin programs that use cup
exit_delete_mode        "rmdc"   str    End delete mode
exit_insert_mode        "rmir"   str    End insert mode;
exit_standout_mode      "rmso"   str    End stand out mode
exit_underline_mode     "rmul"   str    End underscore mode
flash_screen            "flash"  str    Visible bell (may not move cursor)
form_feed               "ff"     str    Hardcopy terminal page eject (P*)
from_status_line        "fsl"    str    Return from status line
init_1string            "is1"    str    Terminal initialization string
init_2string            "is2"    str    Terminal initialization string
init_3string            "is3"    str    Terminal initialization string
init_file               "if"     str    Name of file containing is
insert_character        "ich1"   str    Insert character (P)
insert_line             "il1"    str    Add new blank line (P*)
insert_padding          "ip"     str    Insert pad after character inserted (P*)
key_backspace           "kbs"    str    Sent by backspace key
key_catab               "ktbc"   str    Sent by clear-all-tabs key.
key_clear               "kclr"   str    Sent by clear screen or erase key.
key_ctab                "kctab"  str    Sent by clear-tab key
key_dc                  "kdch1"  str    Sent by delete character key.
key_dl                  "kdl1"   str    Sent by delete line key.
key_down                "kcud1"  str    Sent by terminal down arrow key
key_eic                 "krmir"  str    Sent by rmir or smir in insert mode.
key_eol                 "kel"    str    Sent by clear-to-end-of-line key.
key_eos                 "ked"    str    Sent by clear-to-end-of-screen key.
key_f0                  "kf0"    str    Sent by function key f0.
key_f1                  "kf1"    str    Sent by function key f1.
key_f10                 "kf10"   str    Sent by function key f10.
key_f2                  "kf2"    str    Sent by function key f2.
key_f3                  "kf3"    str    Sent by function key f3.
key_f4                  "kf4"    str    Sent by function key f4.
key_f5                  "kf5"    str    Sent by function key f5.
key_f6                  "kf6"    str    Sent by function key f6.
key_f7                  "kf7"    str    Sent by function key f7.
key_f8                  "kf8"    str    Sent by function key f8.
key_f9                  "kf9"    str    Sent by function key f9.
key_home                "khome"  str    Sent by home key.
key_ic                  "kich1"  str    Sent by ins char/enter ins mode key.
key_il                  "kil1"   str    Sent by insert line.
key_left                "kcub1"  str    Sent by terminal left arrow key
key_ll			"kll"	 str	Sent by "home down" key (lower left)
key_npage               "knp"    str    Sent by next-page key
key_ppage               "kpp"    str    Sent by previous-page key
key_right               "kcuf1"  str    Sent by terminal right arrow key
key_sf                  "kind"   str    Sent by scroll-forward/down key
key_sr                  "kri"    str    Sent by scroll-backward/up key
key_stab                "khts"   str    Sent by set-tab key
key_up                  "kcuu1"  str    Sent by terminal up arrow key
keypad_local            "rmkx"   str    Out of "keypad transmit" mode
keypad_xmit             "smkx"   str    Put terminal in "keypad transmit" mode
lab_f0                  "lf0"    str    Labels on function key f0 if not f0
lab_f1                  "lf1"    str    Labels on function key f1 if not f1
lab_f10                 "lf10"   str    Labels on function key f10 if not f10
lab_f2                  "lf2"    str    Labels on function key f2 if not f2
lab_f3                  "lf3"    str    Labels on function key f3 if not f3
lab_f4                  "lf4"    str    Labels on function key f4 if not f4
lab_f5                  "lf5"    str    Labels on function key f5 if not f5
lab_f6                  "lf6"    str    Labels on function key f6 if not f6
lab_f7                  "lf7"    str    Labels on function key f7 if not f7
lab_f8                  "lf8"    str    Labels on function key f8 if not f8
lab_f9                  "lf9"    str    Labels on function key f9 if not f9
meta_off                "rmm"    str    Turn off "meta mode"
meta_on                 "smm"    str    Turn on "meta mode" (8th bit)
newline                 "nel"    str    Newline (behaves like cr followed by lf)
pad_char                "pad"    str    Pad character (rather than null)
parm_dch                "dch"    str    Delete #1 chars (PG*)
parm_delete_line        "dl"     str    Delete #1 lines (PG*)
parm_down_cursor        "cud"    str    Move cursor down #1 lines. (PG*)
parm_ich                "ich"    str    Insert #1 blank chars (PG*)
parm_index		"indn"	 str	Scroll forward #1 lines (PG)
parm_insert_line        "il"     str    Add #1 new blank lines (PG*)
parm_left_cursor        "cub"    str    Move cursor left #1 spaces (PG)
parm_right_cursor       "cuf"    str    Move cursor right #1 spaces. (PG*)
parm_rindex		"rin"	 str	Scroll backward #1 lines (PG)
parm_up_cursor          "cuu"    str    Move cursor up #1 lines. (PG*)
pkey_key                "pfkey"  str    Prog funct key #1 to type string #2
pkey_local              "pfloc"  str    Prog funct key #1 to execute string #2
pkey_xmit               "pfx"    str    Prog funct key #1 to xmit string #2
print_screen            "mc0"    str    Print contents of the screen
prtr_off                "mc4"    str    Turn off the printer
prtr_on                 "mc5"    str    Turn on the printer
repeat_char             "rep"    str    Repeat char #1 #2 times.  (PG*)
reset_1string           "rs1"    str    Reset terminal completely to sane modes.
reset_2string           "rs2"    str    Reset terminal completely to sane modes.
reset_3string           "rs3"    str    Reset terminal completely to sane modes.
reset_file              "rf"     str    Name of file containing reset string.
restore_cursor          "rc"     str    Restore cursor to position of last sc.
row_address             "vpa"    str    Like hpa but sets row. (PG)
save_cursor             "sc"     str    Save cursor position. (P)
scroll_forward          "ind"    str    Scroll text up (P)
scroll_reverse          "ri"     str    Scroll text down (P)
set_attributes          "sgr"    str    Define the video attributes (PG9)
set_tab                 "hts"    str    Set a tab in all rows, current column.
set_window              "wind"   str    Current window is lines #1-#2 cols #3-#4
tab                     "ht"     str    Tab to next 8 space hardware tab stop.
to_status_line          "tsl"    str    Go to status line
underline_char          "uc"     str    Underscore one char and move past it
up_half_line            "hu"     str    Half-line up (reverse 1/2 linefeed)
init_prog               "iprog"  str    Path name of program for init
key_a1                  "ka1"    str    Upper left of keypad
key_a3                  "ka3"    str    Upper right of keypad
key_b2                  "kb2"    str    Center of keypad
key_c1                  "kc1"    str    Lower left of keypad
key_c3                  "kc3"    str    Lower right of keypad
prtr_non                "mc5p"   str    Turn on the printer for #1 bytes.
char_padding            "rmp"    str    Like ip but when in replace mode
acs_chars               "acsc"   str    Graphics char set pairs aAbBcC - defn=vt100
plab_norm               "pln"    str    Prog label #1 to show string #2
//go.sysin dd *
echo 'x - =src/dump.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/dump.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
 *	dump.c - dump the contents of a compiled terminfo file in a
 *		 human-readable format.
 *
 *  $Log:	RCS/dump.v $
 * Revision 2.1  82/10/25  14:46:20  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/24  15:17:29  pavel
 * Beta-one Test Release
 * 
 * Revision 1.3  82/08/23  22:30:18  pavel
 * The REAL Alpha-one Release Version
 * 
 * Revision 1.2  82/08/19  19:12:50  pavel
 * Alpha Test Release One
 * 
 * Revision 1.1  82/08/12  18:39:19  pavel
 * Initial revision
 * 
 *
 */

static char RCSid[] =
	"$Header:   RCS/dump.v  Revision 2.1  82/10/25  14:46:20  pavel  Exp$";

#include "compiler.h"
#include "term.h"

char	*BoolNames[], *NumNames[], *StrNames[];


main(argc, argv)
int	argc;
char	*argv[];
{
	int	i, j;
	int	cur_column;
	char	buffer[1024];

	for (j=1; j < argc; j++)
	{
	    if (read_entry(argv[j], &_first_term) < 0)
	    {
		fprintf(stderr, "read_entry bombed on %s\n", argv[j]);
		abort();
	    }

	    printf("%s,\n", _first_term.term_names);
	    putchar('\t');
	    cur_column = 9;

	    for (i=0; i < BOOLCOUNT; i++)
	    {
		if (_first_term.Booleans[i] == TRUE)
		{
		    if (cur_column > 9
				&&  cur_column + strlen(BoolNames[i]) + 2 > 79)
		    {
			printf("\n\t");
			cur_column = 9;
		    }
		    printf("%s, ", BoolNames[i]);
		    cur_column += strlen(BoolNames[i]) + 2;
		}
	    }

	    for (i=0; i < NUMCOUNT; i++)
	    {
		if (_first_term.Numbers[i] != -1)
		{
		    if (cur_column > 9
				&&  cur_column + strlen(NumNames[i]) + 5 > 79)
		    {
			printf("\n\t");
			cur_column = 9;
		    }
		    printf("%s#%d, ", NumNames[i], _first_term.Numbers[i]);
		    cur_column += strlen(NumNames[i]) + 5;
		}
	    }

	    for (i=0; i < STRCOUNT; i++)
	    {
		if (_first_term.Strings[i])
		{
		    sprintf(buffer, "%s=%s, ", StrNames[i],
							_first_term.Strings[i]);
		    expand(buffer);
		    if (cur_column > 9  &&  cur_column + strlen(buffer) > 79)
		    {
			printf("\n\t");
			cur_column = 9;
		    }
		    printf("%s", buffer);
		    cur_column += strlen(buffer);
		}
	    }

	    putchar('\n');
	}
}


typedef unsigned char	uchar;

expand(str)
uchar	*str;
{
    	char	buffer[1024];
	int	bufp;
	uchar	*ptr;

	bufp = 0;
	ptr = str;
	while (*str)
	{
	    if (*str < ' ')
	    {
		buffer[bufp++] = '^';
		buffer[bufp++] = *str + '@';
	    }
	    else if (*str < '\177')
		buffer[bufp++] = *str;
	    else
	    {
		sprintf(&buffer[bufp], "\\%03o", *str);
		bufp += 4;
	    }

	    str++;
	}

	buffer[bufp] = '\0';
	strcpy(ptr, buffer);
}
//go.sysin dd *
echo 'x - =src/lib_addch.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_addch.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
**	lib_addch.c
**
**	The routine waddch().
**
** $Log:	RCS/lib_addch.v $
 * Revision 2.1  82/10/25  14:46:23  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/24  15:19:46  pavel
 * Beta-one Test Release
 * 
**
*/

static char RCSid[] =
	"$Header:   RCS/lib_addch.v  Revision 2.1  82/10/25  14:46:23  pavel  Exp$";

#include "curses.h"
#include "curses.priv.h"
#include "unctrl.h"


waddch(win, c)
WINDOW	*win;
char	c;
{
	int	x, y;
	int	newx;
	chtype	ch = c;

#ifdef UNDEFINED
	if (_tracing)
	    _tracef("waddch(%o,%c) called", win, ch);
#endif

	x = win->_curx;
	y = win->_cury;

	if (y > win->_maxy  ||  x > win->_maxx  ||  y < 0  ||  x < 0)
	    return(ERR);

	switch (ch)
	{
	    case '\t':
		for (newx = x + (8 - (x & 07)); x < newx; x++)
		    if (waddch(win, ' ') == ERR)
			return(ERR);
		return(OK);

	    case '\n':
		wclrtoeol(win);
		if (SP->_nl)
		    x = 0;
		goto newline;

	    case '\r':
		x = 0;
		break;

	    case '\b':
		if (--x < 0)
		    x = 0;
		break;

	    default:
		if (ch < ' ')
		    return(waddstr(win, unctrl(ch)));

		ch |= win->_attrs;

		if (win->_line[y][x] != ch)
		{
		    if (win->_firstchar[y] == _NOCHANGE)
			win->_firstchar[y] = win->_lastchar[y] = x;
		    else if (x < win->_firstchar[y])
			win->_firstchar[y] = x;
		    else if (x > win->_lastchar[y])
			win->_lastchar[y] = x;

		    win->_numchngd[y]++;
		}

		win->_line[y][x++] = ch;
		if (x > win->_maxx)
		{
		    x = 0;
newline:
		    y++;
		    if (y > win->_regbottom)
		    {
			y--;
			if (win->_scroll)
			    scroll(win);
			else
			    return ERR;
		    }
		}
		break;
	}

	win->_curx = x;
	win->_cury = y;

	return(OK);
}
//go.sysin dd *
echo 'x - =src/lib_addstr.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_addstr.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
**	lib_addstr.c
*
**	The routine waddstr().
**
** $Log:	RCS/lib_addstr.v $
 * Revision 2.1  82/10/25  14:46:26  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/24  15:19:59  pavel
 * Beta-one Test Release
 * 
**
*/

static char RCSid[] =
	"$Header:   RCS/lib_addstr.v  Revision 2.1  82/10/25  14:46:26  pavel  Exp$";

#include "curses.h"
#include "curses.priv.h"


waddstr(win, str)
WINDOW	*win; 
char	*str;
{
#ifdef TRACE
	if (_tracing)
	    _tracef("waddstr(%o,%o) called", win, str);
#endif

	while (*str)
	{
	    if (waddch(win, *str++) == ERR)
		return(ERR);
	}

	return(OK);
}
//go.sysin dd *
echo 'x - =src/lib_beep.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_beep.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
 *	beep.c
 *
 *	Routines beep() and flash()
 *
 *  $Log:	RCS/lib_beep.v $
 * Revision 2.1  82/10/25  14:46:29  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/24  15:17:31  pavel
 * Beta-one Test Release
 * 
 * Revision 1.3  82/08/23  22:30:22  pavel
 * The REAL Alpha-one Release Version
 * 
 * Revision 1.2  82/08/19  19:11:02  pavel
 * Alpha Test Release One
 * 
 * Revision 1.1  82/08/12  18:40:14  pavel
 * Initial revision
 * 
 *
 */

static char RCSid[] =
	"$Header:   RCS/lib_beep.v  Revision 2.1  82/10/25  14:46:29  pavel  Exp$";

#include "curses.h"
#include "curses.priv.h"
#include "term.h"

static
outc(ch)
char    ch;
{
        putc(ch, SP->_ofp);
}



X/*
 *	beep()
 *
 *	Sound the current terminal's audible bell if it has one.   If not,
 *	flash the screen if possible.
 *
 */

beep()
{
#ifdef TRACE
	if (_tracing)
	    _tracef("beep() called");
#endif
	if (bell)
	    tputs(bell, 1, outc);
	else if (flash_screen)
	    tputs(flash_screen, 1, outc);
}



X/*
 *	flash()
 *
 *	Flash the current terminal's screen if possible.   If not,
 *	sound the audible bell if one exists.
 *
 */

flash()
{
#ifdef TRACE
	if (_tracing)
	    _tracef("flash() called");
#endif
	if (flash_screen)
	    tputs(flash_screen, 1, outc);
	else if (bell)
	    tputs(bell, 1, outc);
}
//go.sysin dd *
echo 'x - =src/lib_box.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_box.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
**	lib_box.c
**
**	The routine box().
**
** $Log:	RCS/lib_box.v $
 * Revision 2.1  82/10/25  14:46:31  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/24  15:20:07  pavel
 * Beta-one Test Release
 * 
**
*/

static char RCSid[] =
	"$Header:   RCS/lib_box.v  Revision 2.1  82/10/25  14:46:31  pavel  Exp$";

#include "curses.h"
#include "curses.priv.h"



box(win, vert, hor)
WINDOW	*win;
char	vert, hor;
{
	int	i;
	int	endy, endx;
	chtype	*fp, *lp;

#ifdef TRACE
	if (_tracing)
	    _tracef("box(%o,%c,%c) called", win, vert, hor);
#endif

	endx = win->_maxx;
	endy = win->_maxy;

	fp = win->_line[0];
	lp = win->_line[endy];

	for (i = 0; i <= endx; i++)
	    fp[i] = lp[i] = hor;

	for (i = 0; i <= endy; i++)
	{
	    win->_line[i][0] = (win->_line[i][endx] = vert);
	    win->_firstchar[i] = 0;
	    win->_lastchar[i] = endx;
	    win->_numchngd[i] += 2;
	}

	win->_numchngd[0] = win->_numchngd[endy] = endx;

	if (! win->_scroll  &&  (win->_flags & _SCROLLWIN))
	    fp[0] = fp[endx] = lp[0] = lp[endx] = ' ';
}
//go.sysin dd *
echo 'x - =src/lib_clear.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_clear.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
**	lib_clear.c
**
**	The routine wclear().
**
** $Log:	RCS/lib_clear.v $
 * Revision 2.1  82/10/25  14:46:34  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/24  15:20:17  pavel
 * Beta-one Test Release
 * 
**
*/

static char RCSid[] =
	"$Header:   RCS/lib_clear.v  Revision 2.1  82/10/25  14:46:34  pavel  Exp$";

#include "curses.h"
#include "curses.priv.h"



wclear(win)
WINDOW	*win;
{
#ifdef TRACE
	if (_tracing)
	    _tracef("wclear(%o) called", win);
#endif

	werase(win);

	win->_clear = TRUE;

	return;
}
//go.sysin dd *
echo 'x - =src/lib_clrbot.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_clrbot.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
**	lib_clrbot.c
**
**	The routine wclrtobot().
**
** $Log:	RCS/lib_clrbot.v $
 * Revision 2.1  82/10/25  14:46:37  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/24  15:20:24  pavel
 * Beta-one Test Release
 * 
**
*/

static char RCSid[] =
	"$Header:   RCS/lib_clrbot.v  Revision 2.1  82/10/25  14:46:37  pavel  Exp$";

#include "curses.h"
#include "curses.priv.h"


wclrtobot(win)
WINDOW	*win;
{
	chtype	*ptr, *end, *maxx;
	int	y, startx, minx;
	chtype	blank = ' ' | win->_attrs;

#ifdef TRACE
	if (_tracing)
	    _tracef("wclrtobot(%o) called", win);
#endif

	startx = win->_curx;

	for (y = win->_cury; y <= win->_regbottom; y++)
	{
	    minx = _NOCHANGE;
	    end = &win->_line[y][win->_maxx];

	    for (ptr = &win->_line[y][startx]; ptr <= end; ptr++)
	    {
		if (*ptr != blank)
		{
		    maxx = ptr;
		    if (minx == _NOCHANGE)
			minx = ptr - win->_line[y];
		    *ptr = blank;
		}
	    }

	    if (minx != _NOCHANGE)
	    {
		if (win->_firstchar[y] > minx
					||  win->_firstchar[y] == _NOCHANGE)
		    win->_firstchar[y] = minx;

		if (win->_lastchar[y] < maxx - win->_line[y])
		    win->_lastchar[y] = maxx - win->_line[y];
	    }

	    startx = 0;
	}
}
//go.sysin dd *
echo 'x - =src/lib_clreol.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_clreol.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
**	lib_clreol.c
**
**	The routine wclrtoeol().
**
** $Log:	RCS/lib_clreol.v $
 * Revision 2.1  82/10/25  14:46:42  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/24  15:20:38  pavel
 * Beta-one Test Release
 * 
**
*/

static char RCSid[] =
	"$Header:   RCS/lib_clreol.v  Revision 2.1  82/10/25  14:46:42  pavel  Exp$";

#include "curses.h"
#include "curses.priv.h"


wclrtoeol(win)
WINDOW	*win;
{
	chtype	*maxx, *ptr, *end;
	int	y, x, minx;
	chtype	blank = ' ' | win->_attrs;

#ifdef TRACE
	if (_tracing)
	    _tracef("wclrtoeol(%o) called", win);
#endif

	y = win->_cury;
	x = win->_curx;

	end = &win->_line[y][win->_maxx];
	minx = _NOCHANGE;
	maxx = &win->_line[y][x];

	for (ptr = maxx; ptr < end; ptr++)
	{
	    if (*ptr != blank)
	    {
		maxx = ptr;
		if (minx == _NOCHANGE)
		    minx = ptr - win->_line[y];
		*ptr = blank;
		win->_numchngd[y] += 1;
	    }
	}

	if (minx != _NOCHANGE)
	{
	    if (win->_firstchar[y] > minx || win->_firstchar[y] == _NOCHANGE)
		win->_firstchar[y] = minx;

	    if (win->_lastchar[y] < maxx - win->_line[y])
		win->_lastchar[y] = maxx - win->_line[y];
	}
}
//go.sysin dd *
echo 'x - =src/lib_data.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_data.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
 *	lib_data.c - Global data definitions and initialisations
 *
 */


#include "curses.priv.h"
#include "curses.h"
#include "term.h"


char	ttytype[NAMESIZE];

#ifdef TRACE
	int	_tracing = 1;
#else
	int	_tracing = 0;
#endif


struct screen *SP = 0;
//go.sysin dd *
echo 'x - =src/lib_delch.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_delch.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
**	lib_delch.c
**
**	The routine wdelch().
**
** $Log:	RCS/lib_delch.v $
 * Revision 2.1  82/10/25  14:46:52  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/24  15:20:47  pavel
 * Beta-one Test Release
 * 
**
*/

static char RCSid[] =
	"$Header:   RCS/lib_delch.v  Revision 2.1  82/10/25  14:46:52  pavel  Exp$";

#include "curses.h"
#include "curses.priv.h"
#include "term.h"

wdelch(win)
WINDOW	*win;
{
	chtype	*temp1, *temp2;
	chtype	*end;

#ifdef TRACE
	if (_tracing)
	    _tracef("wdelch(%o) called", win);
#endif

	end = &win->_line[win->_cury][win->_maxx];
	temp2 = &win->_line[win->_cury][win->_curx + 1];
	temp1 = temp2 - 1;

	while (temp1 < end)
	    *temp1++ = *temp2++;

	*temp1 = ' ' | win->_attrs;

	win->_lastchar[win->_cury] = win->_maxx;

	if (win->_firstchar[win->_cury] == _NOCHANGE
				   || win->_firstchar[win->_cury] > win->_curx)
	    win->_firstchar[win->_cury] = win->_curx;

	if (delete_character)
	    win->_numchngd += 1;
	else
	    win->_numchngd += win->_maxx - win->_curx + 1;
}
//go.sysin dd *
echo 'x - =src/lib_deleteln.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_deleteln.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
**	lib_deleteln.c
**
**	The routine wdeleteln().
**
** $Log:	RCS/lib_deleteln.v $
 * Revision 2.1  82/10/25  14:46:55  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/25  13:44:03  pavel
 * Beta-one Test Release
 * 
**
*/

static char RCSid[] =
	"$Header:   RCS/lib_deleteln.v  Revision 2.1  82/10/25  14:46:55  pavel  Exp$";

#include "curses.h"
#include "curses.priv.h"


wdeleteln(win)
WINDOW	*win;
{
	chtype	*end, *temp;
	int	y;

#ifdef TRACE
	if (_tracing)
	    _tracef("wdeleteln(%o) called", win);
#endif

	temp = win->_line[win->_cury];

	for (y = win->_cury; y < win->_regbottom; y++)
	{
	    win->_line[y] = win->_line[y+1];

	    win->_firstchar[y] = 0;
	    win->_lastchar[y] = win->_maxx;
	    win->_numchngd[y] = win->_maxx;
	}

	win->_line[win->_regbottom] = temp;

	for (end = &(temp[win->_maxx]); temp <= end; )
	    *temp++ = ' ' | win->_attrs;
}
//go.sysin dd *
echo 'x - =src/lib_delwin.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_delwin.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
**	lib_delwin.c
**
**	The routine delwin().
**
** $Log:	RCS/lib_delwin.v $
 * Revision 2.1  82/10/25  14:47:01  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/25  13:44:21  pavel
 * Beta-one Test Release
 * 
**
*/

static char RCSid[] =
	"$Header:   RCS/lib_delwin.v  Revision 2.1  82/10/25  14:47:01  pavel  Exp$";

#include "curses.h"
#include "curses.priv.h"


delwin(win)
WINDOW	*win;
{
	int	i;

#ifdef TRACE
	if (_tracing)
	    _tracef("delwin(%o) called", win);
#endif

	if (! (win->_flags & _SUBWIN))
	{
	    for (i = 0; i <= win->_maxy  &&  win->_line[i]; i++)
		cfree(win->_line[i]);
	}

	cfree(win->_numchngd);
	cfree(win->_firstchar);
	cfree(win->_lastchar);
	cfree(win->_line);
	cfree(win);
}
//go.sysin dd *
echo 'x - =src/lib_endwin.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_endwin.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
**	lib_endwin.c
**
**	The routine endwin().
**
** $Log:	RCS/lib_endwin.v $
 * Revision 2.1  82/10/25  14:47:13  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/25  13:45:05  pavel
 * Beta-one Test Release
 * 
**
*/

static char RCSid[] =
	"$Header:   RCS/lib_endwin.v  Revision 2.1  82/10/25  14:47:13  pavel  Exp$";

#include "term.h"
#include "curses.h"
#include "curses.priv.h"


static
outc(ch)
char	ch;
{
    	putc(ch, SP->_ofp);
}


endwin()
{
#ifdef TRACE
	if (_tracing)
	    _tracef("endwin() called");
#endif

	resetterm();

	mvcur(-1, -1, LINES - 1, 0);

	if (exit_ca_mode)
	    tputs(exit_ca_mode, 1, outc);

	if (curscr  &&  (curscr->_attrs != A_NORMAL))
	{
	    vidputs(A_NORMAL, outc);

	    curscr->_attrs = A_NORMAL;
	}

	fflush(SP->_ofp);
}
//go.sysin dd *
echo 'x - =src/lib_erase.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_erase.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
**	lib_erase.c
**
**	The routine werase().
**
** $Log:	RCS/lib_erase.v $
 * Revision 2.2  82/11/03  12:27:41  pavel
 * Fixed off-by-one error...  If only I had used an invariant...
 * 
 * Revision 2.1  82/10/25  14:47:17  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/25  13:45:12  pavel
 * Beta-one Test Release
 * 
**
*/

static char RCSid[] =
	"$Header:   RCS/lib_erase.v  Revision 2.2  82/11/03  12:27:41  pavel  Exp$";

#include "curses.h"
#include "curses.priv.h"



werase(win)
WINDOW	*win;
{
	int	y;
	chtype	*sp, *end, *start, *maxx;
	int	minx;
	chtype	blank = ' ' | win->_attrs;

#ifdef TRACE
	if (_tracing)
	    _tracef("werase(%o) called", win);
#endif

	for (y = win->_regtop; y <= win->_regbottom; y++)
	{
	    minx = _NOCHANGE;
	    start = win->_line[y];
	    end = &start[win->_maxx];

	    for (sp = start; sp <= end; sp++)
	    {
		if (*sp != blank)
		{
		    maxx = sp;
		    if (minx == _NOCHANGE)
			minx = sp - start;

		    *sp = blank;

		    win->_numchngd[y] += 1;
		}
	    }

	    if (minx != _NOCHANGE)
	    {
		if (win->_firstchar[y] > minx
					    ||  win->_firstchar[y] == _NOCHANGE)
		    win->_firstchar[y] = minx;

		if (win->_lastchar[y] < maxx - win->_line[y])
		    win->_lastchar[y] = maxx - win->_line[y];
	    }
	}

	win->_curx = win->_cury = 0;
}
//go.sysin dd *
echo 'x - =src/lib_fixterm.c'
sed 's/^X//' <<'//go.sysin dd *' >=src/lib_fixterm.c
X/*********************************************************************
*                         COPYRIGHT NOTICE                           *
**********************************************************************
*        This software is copyright (C) 1982 by Pavel Curtis         *
*                                                                    *
*        Permission is granted to reproduce and distribute           *
*        this file by any means so long as no fee is charged         *
*        above a nominal handling fee and so long as this            *
*        notice is always included in the copies.                    *
*                                                                    *
*        Other rights are reserved except as explicitly granted      *
*        by written permission of the author.                        *
*                Pavel Curtis                                        *
*                Computer Science Dept.                              *
*                405 Upson Hall                                      *
*                Cornell University                                  *
*                Ithaca, NY 14853                                    *
*                                                                    *
*                Ph- (607) 256-4934                                  *
*                                                                    *
*                Pavel.Cornell at Udel-Relay   (ARPAnet)                *
*                decvax!cornell!pavel       (UUCPnet)                *
*********************************************************************/

X/*
 *	fixterm.c
 *
 *	Routines:
 *		fixterm()
 *		resetterm()
 *		saveterm()
 *		gettmode()
 *		setterm()
 *		baudrate()
 *		erasechar()
 *		killchar()
 *		flushinp()
 *		savetty()
 *		resetty()
 *
 *  $Log:	RCS/lib_fixterm.v $
 * Revision 2.1  82/10/25  14:47:22  pavel
 * Added Copyright Notice
 * 
 * Revision 2.0  82/10/24  15:17:36  pavel
 * Beta-one Test Release
 * 
 * Revision 1.3  82/08/23  22:30:27  pavel
 * The REAL Alpha-one Release Version
 * 
 * Revision 1.2  82/08/19  19:11:21  pavel
 * Alpha Test Release One
 * 
 * Revision 1.1  82/08/12  18:40:30  pavel
 * Initial revision
 * 
 *
 */

static char RCSid[] =
	"$Header:   RCS/lib_fixterm.v  Revision 2.1  82/10/25  14:47:22  pavel  Exp$";

#include <sys/ioctl.h>
#include "curses.h"
#include "curses.priv.h"
#include "term.h"


X/*
 *	fixterm()
 *	resetterm()
 *
 *	fixterm() establishes the tty modes contained in cur_term->Nttyb.
 *	resetterm() establishes those in cur_term->Ottyb.
 *
 */


fixterm()
{
#ifdef TRACE
	if (_tracing)
	    _tracef("fixterm() called");
#endif
        stty(cur_term->Filedes, &cur_term->Nttyb);
}


resetterm()
{
#ifdef TRACE
	if (_tracing)
	    _tracef("resetterm() called");
#endif
        stty(cur_term->Filedes, &cur_term->Ottyb);
}



saveterm()
{
#ifdef TRACE
	if (_tracing)
	    _tracef("saveterm() called");
#endif
	gtty(cur_term->Filedes, &cur_term->Nttyb);
}



X/*
 *	gettmode()
 *	setterm(type)
 *
 *	These are kept around for backward compatibilty.  gettmode() does
 *	nothing.  setterm() results in a proper call to setupterm()
 *
 */

gettmode()
{
#ifdef TRACE
	if (_tracing)
	    _tracef("gettmode() called");
#endif
}


setterm(type)
char	*type;
{
#ifdef TRACE
	if (_tracing)
	    _tracef("setterm() called");
#endif
    	setupterm(type, 1, 0);
}




X/*
 *	erasechar()
 *
 *	Return erase character as given in cur_term->Ottyb.
 *
 */

char
erasechar()
{
#ifdef TRACE
	if (_tracing)
	    _tracef("erasechar() called");
#endif
    return(cur_term->Ottyb.sg_erase);
}



X/*
 *	killchar()
 *
 *	Return kill character as given in cur_term->Ottyb.
 *
 */

char
killchar()
{
#ifdef TRACE
	if (_tracing)
	    _tracef("killchar() called");
#endif
    return(cur_term->Ottyb.sg_kill);
}



X/*
 *	flushinp()
 *
 *	Flush any input on cur_term->Filedes
 *
 */

flushinp()
{
#ifdef TRACE
	if (_tracing)
	    _tracef("flushinp() called");
#endif
        ioctl(cur_term->Filedes, TIOCFLUSH, 0);
    
        if (SP)
	    SP->_backcnt = 0;
}



X/*
 *	int
 *	baudrate()
 *
 *	Returns the current terminal's baud rate.
 *
 */

static int speeds[] =
{
	0, 50, 75, 110, 134, 150, 200, 300, 600,
	1200, 1800, 2400, 4800, 9600, 19200, 38400
};

int
baudrate()
{
#ifdef UNDEFINED
	if (_tracing)
	    _tracef("baudrate() called");
#endif
	return(speeds[cur_term->Nttyb.sg_ospeed]);
}


X/*
**	savetty()  and  resetty()
**
**	Kept around for compatibility.
**	
*/

static struct sgttyb	sgbuf;

savetty()
{
#ifdef TRACE
	if (_tracing)
	    _tracef("savetty() called");
#endif

    gtty(cur_term->Filedes, &sgbuf);
}

resetty()
{
#ifdef TRACE
	if (_tracing)
	    _tracef("resetty() called");
#endif

    stty(cur_term->Filedes, &sgbuf);
}
//go.sysin dd *
exit



More information about the Mod.sources mailing list