Add the POSIX filter() function to libcurses.
This commit is contained in:
parent
f51d1f25b9
commit
1c3d328353
|
@ -1,4 +1,4 @@
|
|||
# $NetBSD: mi,v 1.2083 2016/12/22 16:32:31 maya Exp $
|
||||
# $NetBSD: mi,v 1.2084 2016/12/30 22:38:38 roy Exp $
|
||||
#
|
||||
# Note: don't delete entries from here - mark them as "obsolete" instead.
|
||||
./etc/mtree/set.comp comp-sys-root
|
||||
|
@ -6380,6 +6380,7 @@
|
|||
./usr/share/man/cat3/field_type.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/field_userptr.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/fileno.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/filter.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/finite.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/finitef.0 comp-c-catman .cat
|
||||
./usr/share/man/cat3/flags_to_string.0 comp-c-catman .cat
|
||||
|
@ -13720,6 +13721,7 @@
|
|||
./usr/share/man/html3/field_type.html comp-c-htmlman html
|
||||
./usr/share/man/html3/field_userptr.html comp-c-htmlman html
|
||||
./usr/share/man/html3/fileno.html comp-c-htmlman html
|
||||
./usr/share/man/html3/filter.html comp-c-htmlman html
|
||||
./usr/share/man/html3/finite.html comp-c-htmlman html
|
||||
./usr/share/man/html3/finitef.html comp-c-htmlman html
|
||||
./usr/share/man/html3/flags_to_string.html comp-c-htmlman html
|
||||
|
@ -20973,6 +20975,7 @@
|
|||
./usr/share/man/man3/field_type.3 comp-c-man .man
|
||||
./usr/share/man/man3/field_userptr.3 comp-c-man .man
|
||||
./usr/share/man/man3/fileno.3 comp-c-man .man
|
||||
./usr/share/man/man3/filter.3 comp-c-man .man
|
||||
./usr/share/man/man3/finite.3 comp-c-man .man
|
||||
./usr/share/man/man3/finitef.3 comp-c-man .man
|
||||
./usr/share/man/man3/flags_to_string.3 comp-c-man .man
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $NetBSD: Makefile,v 1.71 2014/07/05 22:31:32 dholland Exp $
|
||||
# $NetBSD: Makefile,v 1.72 2016/12/30 22:38:38 roy Exp $
|
||||
# @(#)Makefile 8.2 (Berkeley) 1/2/94
|
||||
|
||||
.include <bsd.own.mk>
|
||||
|
@ -75,7 +75,7 @@ MLINKS+= curses_addch.3 addch.3 curses_addchstr.3 addchnstr.3 \
|
|||
curses_refresh.3 doupdate.3 curses_window.3 dupwin.3 \
|
||||
curses_tty.3 echo.3 curses_echochar.3 echochar.3 \
|
||||
curses_screen.3 endwin.3 curses_clear.3 erase.3 \
|
||||
curses_tty.3 erasechar.3 \
|
||||
curses_tty.3 erasechar.3 curses_screen.3 filter.3 \
|
||||
curses_tty.3 flash.3 curses_tty.3 flushinp.3 \
|
||||
curses_refresh.3 flushok.3 \
|
||||
curses_termcap.3 fullname.3 curses_attributes.3 getattrs.3 \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: curses.h,v 1.107 2015/06/08 12:38:57 joerg Exp $ */
|
||||
/* $NetBSD: curses.h,v 1.108 2016/12/30 22:38:38 roy Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1981, 1993, 1994
|
||||
|
@ -638,6 +638,7 @@ int doupdate(void);
|
|||
int echo(void);
|
||||
int endwin(void);
|
||||
char erasechar(void);
|
||||
void filter(void);
|
||||
int flash(void);
|
||||
int flushinp(void);
|
||||
int flushok(WINDOW *, bool);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: curses_private.h,v 1.51 2016/10/23 21:20:56 christos Exp $ */
|
||||
/* $NetBSD: curses_private.h,v 1.52 2016/12/30 22:38:38 roy Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1998-2000 Brett Lymn
|
||||
|
@ -252,6 +252,7 @@ struct __screen {
|
|||
int resized;
|
||||
wchar_t *unget_list;
|
||||
int unget_len, unget_pos;
|
||||
int filtered;
|
||||
#ifdef HAVE_WCHAR
|
||||
#define MB_LEN_MAX 8
|
||||
#define MAX_CBUF_SIZE MB_LEN_MAX
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.\" $NetBSD: curses_screen.3,v 1.15 2012/04/21 12:27:28 roy Exp $
|
||||
.\" $NetBSD: curses_screen.3,v 1.16 2016/12/30 22:38:38 roy Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2002
|
||||
.\" Brett Lymn (blymn@NetBSD.org, brett_lymn@yahoo.com.au)
|
||||
|
@ -30,10 +30,11 @@
|
|||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\"
|
||||
.Dd April 5, 2012
|
||||
.Dd December 30, 2016
|
||||
.Dt CURSES_SCREEN 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm filter ,
|
||||
.Nm curses_screen ,
|
||||
.Nm newterm ,
|
||||
.Nm set_term ,
|
||||
|
@ -48,6 +49,8 @@
|
|||
.Lb libcurses
|
||||
.Sh SYNOPSIS
|
||||
.In curses.h
|
||||
.Ft void
|
||||
.Fn filter "void"
|
||||
.Ft SCREEN *
|
||||
.Fn newterm "char *type" "FILE *outfd" "FILE *infd"
|
||||
.Ft SCREEN *
|
||||
|
@ -170,6 +173,23 @@ The
|
|||
argument must be a valid name or alias in the
|
||||
.Xr terminfo 5
|
||||
database for this function to succeed.
|
||||
.Pp
|
||||
The
|
||||
.Fn filter
|
||||
function changes the way the terminal is initialised.
|
||||
A subsequent call to
|
||||
.Fn initscr
|
||||
or
|
||||
.Fn newterm
|
||||
performs the following additonal actions:
|
||||
.Bl -bullet -compact
|
||||
.It
|
||||
Disable use of clear, cud, cud1, cup, cuu, cuu1 and vpa.
|
||||
.It
|
||||
Set the value of the home string to the value of the cr string.
|
||||
.It
|
||||
Set lines equal to 1.
|
||||
.El
|
||||
.Sh RETURN VALUES
|
||||
Functions returning pointers will return
|
||||
.Dv NULL
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: screen.c,v 1.24 2015/11/26 01:05:08 christos Exp $ */
|
||||
/* $NetBSD: screen.c,v 1.25 2016/12/30 22:38:38 roy Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1981, 1993, 1994
|
||||
|
@ -34,7 +34,7 @@
|
|||
#if 0
|
||||
static char sccsid[] = "@(#)screen.c 8.2 (blymn) 11/27/2001";
|
||||
#else
|
||||
__RCSID("$NetBSD: screen.c,v 1.24 2015/11/26 01:05:08 christos Exp $");
|
||||
__RCSID("$NetBSD: screen.c,v 1.25 2016/12/30 22:38:38 roy Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
|
@ -43,6 +43,18 @@ __RCSID("$NetBSD: screen.c,v 1.24 2015/11/26 01:05:08 christos Exp $");
|
|||
#include "curses.h"
|
||||
#include "curses_private.h"
|
||||
|
||||
static int filtered;
|
||||
|
||||
/*
|
||||
* filter has to be called before either initscr or newterm.
|
||||
*/
|
||||
void
|
||||
filter(void)
|
||||
{
|
||||
|
||||
filtered = TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
* set_term --
|
||||
* Change the term to the given screen.
|
||||
|
@ -128,6 +140,8 @@ newterm(char *type, FILE *outfd, FILE *infd)
|
|||
new_screen->outfd = outfd;
|
||||
new_screen->echoit = new_screen->nl = 1;
|
||||
new_screen->pfast = new_screen->rawmode = new_screen->noqch = 0;
|
||||
new_screen->filtered = filtered;
|
||||
filtered = FALSE; /* filter() must preceed each newterm() */
|
||||
new_screen->nca = A_NORMAL;
|
||||
new_screen->color_type = COLOR_NONE;
|
||||
new_screen->COLOR_PAIRS = 0;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: setterm.c,v 1.54 2016/01/09 19:05:13 jdc Exp $ */
|
||||
/* $NetBSD: setterm.c,v 1.55 2016/12/30 22:38:38 roy Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1981, 1993, 1994
|
||||
|
@ -34,7 +34,7 @@
|
|||
#if 0
|
||||
static char sccsid[] = "@(#)setterm.c 8.8 (Berkeley) 10/25/94";
|
||||
#else
|
||||
__RCSID("$NetBSD: setterm.c,v 1.54 2016/01/09 19:05:13 jdc Exp $");
|
||||
__RCSID("$NetBSD: setterm.c,v 1.55 2016/12/30 22:38:38 roy Exp $");
|
||||
#endif
|
||||
#endif /* not lint */
|
||||
|
||||
|
@ -99,8 +99,27 @@ _cursesi_setterm(char *type, SCREEN *screen)
|
|||
}
|
||||
}
|
||||
|
||||
if (screen->filtered) {
|
||||
/* Disable use of clear, cud, cud1, cup, cuu1 and vpa. */
|
||||
screen->term->strs[TICODE_clear] = NULL;
|
||||
screen->term->strs[TICODE_cud] = NULL;
|
||||
screen->term->strs[TICODE_cud1] = NULL;
|
||||
screen->term->strs[TICODE_cup] = NULL;
|
||||
screen->term->strs[TICODE_cuu] = NULL;
|
||||
screen->term->strs[TICODE_cuu1] = NULL;
|
||||
screen->term->strs[TICODE_vpa] = NULL;
|
||||
/* Set the value of the home string to the value of
|
||||
* the cr string. */
|
||||
screen->term->strs[TICODE_home] = screen->term->strs[TICODE_cr];
|
||||
/* Set lines equal to 1. */
|
||||
screen->LINES = 1;
|
||||
}
|
||||
#ifdef DEBUG
|
||||
__CTRACE(__CTRACE_INIT, "setterm: filtered %d", screen->filtered);
|
||||
#endif
|
||||
|
||||
/* POSIX 1003.2 requires that the environment override. */
|
||||
if ((p = getenv("LINES")) != NULL)
|
||||
if (!screen->filtered && (p = getenv("LINES")) != NULL)
|
||||
screen->LINES = (int) strtol(p, NULL, 0);
|
||||
if ((p = getenv("COLUMNS")) != NULL)
|
||||
screen->COLS = (int) strtol(p, NULL, 0);
|
||||
|
|
Loading…
Reference in New Issue