mirror of
https://github.com/Aigor44/ncursesw-morphos.git
synced 2024-12-27 07:49:06 +08:00
ncurses 5.7 - patch 20090801
+ improve discussion in INSTALL for use of system's tic/infocmp for cross-compiling and building fallbacks. + modify test/demo_termcap.c to correspond better to options in test/demo_terminfo.c + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + fix logic for 'V' in test/ncurses.c tests f/F.
This commit is contained in:
parent
85201fb672
commit
8485ec820b
9
INSTALL
9
INSTALL
@ -25,7 +25,7 @@
|
||||
-- sale, use or other dealings in this Software without prior written --
|
||||
-- authorization. --
|
||||
-------------------------------------------------------------------------------
|
||||
-- $Id: INSTALL,v 1.139 2009/07/18 20:50:08 tom Exp $
|
||||
-- $Id: INSTALL,v 1.140 2009/08/01 19:32:04 tom Exp $
|
||||
---------------------------------------------------------------------
|
||||
How to install Ncurses/Terminfo on your system
|
||||
---------------------------------------------------------------------
|
||||
@ -1610,7 +1610,8 @@ CONFIGURING FALLBACK ENTRIES:
|
||||
tree is accessible (that is, in single-user mode or at OS installation
|
||||
time) the ncurses library can be compiled to include an array of
|
||||
pre-fetched fallback entries. This must be done on a machine which
|
||||
has ncurses' infocmp and terminfo database installed.
|
||||
has ncurses' infocmp and terminfo database installed (as well as
|
||||
ncurses' tic and infocmp programs).
|
||||
|
||||
These entries are checked by setupterm() only when the conventional
|
||||
fetches from the terminfo tree and the termcap fallback (if configured)
|
||||
@ -1761,6 +1762,10 @@ BUILDING NCURSES WITH A CROSS-COMPILER
|
||||
option), ncurses uses the development platform's tic to do the
|
||||
"make install.data" portion.
|
||||
|
||||
The system's tic program is used to install the terminal database,
|
||||
even for cross-compiles. For best results, the tic program should
|
||||
be from the most current version of ncurses.
|
||||
|
||||
BUGS:
|
||||
Send any feedback to the ncurses mailing list at
|
||||
bug-ncurses@gnu.org. To subscribe send mail to
|
||||
|
10
NEWS
10
NEWS
@ -25,7 +25,7 @@
|
||||
-- sale, use or other dealings in this Software without prior written --
|
||||
-- authorization. --
|
||||
-------------------------------------------------------------------------------
|
||||
-- $Id: NEWS,v 1.1411 2009/07/28 22:22:43 tom Exp $
|
||||
-- $Id: NEWS,v 1.1414 2009/08/01 20:44:21 tom Exp $
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
This is a log of changes that ncurses has gone through since Zeyd started
|
||||
@ -45,6 +45,14 @@ See the AUTHORS file for the corresponding full names.
|
||||
Changes through 1.9.9e did not credit all contributions;
|
||||
it is not possible to add this information.
|
||||
|
||||
20090801
|
||||
+ improve discussion in INSTALL for use of system's tic/infocmp for
|
||||
cross-compiling and building fallbacks.
|
||||
+ modify test/demo_termcap.c to correspond better to options in
|
||||
test/demo_terminfo.c
|
||||
+ continue integrating "sp-funcs" by Juergen Pfeifer (incomplete).
|
||||
+ fix logic for 'V' in test/ncurses.c tests f/F.
|
||||
|
||||
20090728
|
||||
+ correct logic in tigetnum(), which caused tput program to treat all
|
||||
string capabilities as numeric (report by Rajeev V Pillai,
|
||||
|
4
dist.mk
4
dist.mk
@ -25,7 +25,7 @@
|
||||
# use or other dealings in this Software without prior written #
|
||||
# authorization. #
|
||||
##############################################################################
|
||||
# $Id: dist.mk,v 1.711 2009/07/28 21:17:07 tom Exp $
|
||||
# $Id: dist.mk,v 1.712 2009/07/30 09:04:10 tom Exp $
|
||||
# Makefile for creating ncurses distributions.
|
||||
#
|
||||
# This only needs to be used directly as a makefile by developers, but
|
||||
@ -37,7 +37,7 @@ SHELL = /bin/sh
|
||||
# These define the major/minor/patch versions of ncurses.
|
||||
NCURSES_MAJOR = 5
|
||||
NCURSES_MINOR = 7
|
||||
NCURSES_PATCH = 20090728
|
||||
NCURSES_PATCH = 20090801
|
||||
|
||||
# We don't append the patch to the version, since this only applies to releases
|
||||
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/****************************************************************************
|
||||
* Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. *
|
||||
* Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||
* copy of this software and associated documentation files (the *
|
||||
@ -48,9 +48,8 @@
|
||||
*/
|
||||
|
||||
#include <curses.priv.h>
|
||||
#include <term.h> /* cur_term */
|
||||
|
||||
MODULE_ID("$Id: lib_raw.c,v 1.15 2009/02/15 00:49:02 tom Exp $")
|
||||
MODULE_ID("$Id: lib_raw.c,v 1.17 2009/08/01 23:11:02 tom Exp $")
|
||||
|
||||
#if SVR4_TERMIO && !defined(_POSIX_SOURCE)
|
||||
#define _POSIX_SOURCE
|
||||
@ -81,16 +80,16 @@ NCURSES_EXPORT(int)
|
||||
NCURSES_SP_NAME(raw) (NCURSES_SP_DCL0)
|
||||
{
|
||||
int result = ERR;
|
||||
TERMINAL *termp;
|
||||
|
||||
T((T_CALLED("raw()")));
|
||||
|
||||
if (SP_PARM != 0 && cur_term != 0) {
|
||||
T((T_CALLED("raw(%p)"), SP_PARM));
|
||||
if ((termp = TerminalOf(SP_PARM)) != 0) {
|
||||
TTY buf;
|
||||
|
||||
BEFORE("raw");
|
||||
_nc_setmode(O_BINARY);
|
||||
|
||||
buf = cur_term->Nttyb;
|
||||
buf = termp->Nttyb;
|
||||
#ifdef TERMIOS
|
||||
buf.c_lflag &= ~(ICANON | ISIG | IEXTEN);
|
||||
buf.c_iflag &= ~(COOKED_INPUT);
|
||||
@ -99,10 +98,11 @@ NCURSES_SP_NAME(raw) (NCURSES_SP_DCL0)
|
||||
#else
|
||||
buf.sg_flags |= RAW;
|
||||
#endif
|
||||
if ((result = _nc_set_tty_mode(&buf)) == OK) {
|
||||
result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
|
||||
if (result == OK) {
|
||||
SP_PARM->_raw = TRUE;
|
||||
SP_PARM->_cbreak = 1;
|
||||
cur_term->Nttyb = buf;
|
||||
termp->Nttyb = buf;
|
||||
}
|
||||
AFTER("raw");
|
||||
}
|
||||
@ -121,16 +121,16 @@ NCURSES_EXPORT(int)
|
||||
NCURSES_SP_NAME(cbreak) (NCURSES_SP_DCL0)
|
||||
{
|
||||
int result = ERR;
|
||||
TERMINAL *termp;
|
||||
|
||||
T((T_CALLED("cbreak()")));
|
||||
|
||||
if (SP_PARM != 0 && cur_term != 0) {
|
||||
T((T_CALLED("cbreak(%p)"), SP_PARM));
|
||||
if ((termp = TerminalOf(SP_PARM)) != 0) {
|
||||
TTY buf;
|
||||
|
||||
BEFORE("cbreak");
|
||||
_nc_setmode(O_BINARY);
|
||||
|
||||
buf = cur_term->Nttyb;
|
||||
buf = termp->Nttyb;
|
||||
#ifdef TERMIOS
|
||||
buf.c_lflag &= ~ICANON;
|
||||
buf.c_iflag &= ~ICRNL;
|
||||
@ -140,9 +140,10 @@ NCURSES_SP_NAME(cbreak) (NCURSES_SP_DCL0)
|
||||
#else
|
||||
buf.sg_flags |= CBREAK;
|
||||
#endif
|
||||
if ((result = _nc_set_tty_mode(&buf)) == OK) {
|
||||
result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
|
||||
if (result == OK) {
|
||||
SP_PARM->_cbreak = 1;
|
||||
cur_term->Nttyb = buf;
|
||||
termp->Nttyb = buf;
|
||||
}
|
||||
AFTER("cbreak");
|
||||
}
|
||||
@ -165,22 +166,22 @@ NCURSES_EXPORT(void)
|
||||
NCURSES_SP_NAME(qiflush) (NCURSES_SP_DCL0)
|
||||
{
|
||||
int result = ERR;
|
||||
TERMINAL *termp;
|
||||
|
||||
T((T_CALLED("qiflush()")));
|
||||
|
||||
if (cur_term != 0) {
|
||||
T((T_CALLED("qiflush(%p)"), SP_PARM));
|
||||
if ((termp = TerminalOf(SP_PARM)) != 0) {
|
||||
TTY buf;
|
||||
|
||||
BEFORE("qiflush");
|
||||
buf = cur_term->Nttyb;
|
||||
buf = termp->Nttyb;
|
||||
#ifdef TERMIOS
|
||||
buf.c_lflag &= ~(NOFLSH);
|
||||
result = _nc_set_tty_mode(&buf);
|
||||
result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
|
||||
#else
|
||||
/* FIXME */
|
||||
#endif
|
||||
if (result == OK)
|
||||
cur_term->Nttyb = buf;
|
||||
termp->Nttyb = buf;
|
||||
AFTER("qiflush");
|
||||
}
|
||||
returnVoid;
|
||||
@ -198,27 +199,28 @@ NCURSES_EXPORT(int)
|
||||
NCURSES_SP_NAME(noraw) (NCURSES_SP_DCL0)
|
||||
{
|
||||
int result = ERR;
|
||||
TERMINAL *termp;
|
||||
|
||||
T((T_CALLED("noraw()")));
|
||||
|
||||
if (SP_PARM != 0 && cur_term != 0) {
|
||||
T((T_CALLED("noraw(%p)"), SP_PARM));
|
||||
if ((termp = TerminalOf(SP_PARM)) != 0) {
|
||||
TTY buf;
|
||||
|
||||
BEFORE("noraw");
|
||||
_nc_setmode(O_TEXT);
|
||||
|
||||
buf = cur_term->Nttyb;
|
||||
buf = termp->Nttyb;
|
||||
#ifdef TERMIOS
|
||||
buf.c_lflag |= ISIG | ICANON |
|
||||
(cur_term->Ottyb.c_lflag & IEXTEN);
|
||||
(termp->Ottyb.c_lflag & IEXTEN);
|
||||
buf.c_iflag |= COOKED_INPUT;
|
||||
#else
|
||||
buf.sg_flags &= ~(RAW | CBREAK);
|
||||
#endif
|
||||
if ((result = _nc_set_tty_mode(&buf)) == OK) {
|
||||
result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
|
||||
if (result == OK) {
|
||||
SP_PARM->_raw = FALSE;
|
||||
SP_PARM->_cbreak = 0;
|
||||
cur_term->Nttyb = buf;
|
||||
termp->Nttyb = buf;
|
||||
}
|
||||
AFTER("noraw");
|
||||
}
|
||||
@ -237,25 +239,26 @@ NCURSES_EXPORT(int)
|
||||
NCURSES_SP_NAME(nocbreak) (NCURSES_SP_DCL0)
|
||||
{
|
||||
int result = ERR;
|
||||
TERMINAL *termp;
|
||||
|
||||
T((T_CALLED("nocbreak()")));
|
||||
|
||||
if (SP_PARM != 0 && cur_term != 0) {
|
||||
T((T_CALLED("nocbreak(%p)"), SP_PARM));
|
||||
if ((termp = TerminalOf(SP_PARM)) != 0) {
|
||||
TTY buf;
|
||||
|
||||
BEFORE("nocbreak");
|
||||
_nc_setmode(O_TEXT);
|
||||
|
||||
buf = cur_term->Nttyb;
|
||||
buf = termp->Nttyb;
|
||||
#ifdef TERMIOS
|
||||
buf.c_lflag |= ICANON;
|
||||
buf.c_iflag |= ICRNL;
|
||||
#else
|
||||
buf.sg_flags &= ~CBREAK;
|
||||
#endif
|
||||
if ((result = _nc_set_tty_mode(&buf)) == OK) {
|
||||
result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
|
||||
if (result == OK) {
|
||||
SP_PARM->_cbreak = 0;
|
||||
cur_term->Nttyb = buf;
|
||||
termp->Nttyb = buf;
|
||||
}
|
||||
AFTER("nocbreak");
|
||||
}
|
||||
@ -270,31 +273,26 @@ nocbreak(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Note:
|
||||
* this implementation may be wrong. See the comment under intrflush().
|
||||
*/
|
||||
NCURSES_EXPORT(void)
|
||||
NCURSES_SP_NAME(noqiflush) (NCURSES_SP_DCL0)
|
||||
{
|
||||
int result = ERR;
|
||||
TERMINAL *termp;
|
||||
|
||||
T((T_CALLED("noqiflush()")));
|
||||
|
||||
if (cur_term != 0) {
|
||||
T((T_CALLED("noqiflush(%p)"), SP_PARM));
|
||||
if ((termp = TerminalOf(SP_PARM)) != 0) {
|
||||
TTY buf;
|
||||
|
||||
BEFORE("noqiflush");
|
||||
buf = cur_term->Nttyb;
|
||||
buf = termp->Nttyb;
|
||||
#ifdef TERMIOS
|
||||
buf.c_lflag |= NOFLSH;
|
||||
result = _nc_set_tty_mode(&buf);
|
||||
result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
|
||||
#else
|
||||
/* FIXME */
|
||||
#endif
|
||||
if (result == OK) {
|
||||
cur_term->Nttyb = buf;
|
||||
}
|
||||
if (result == OK)
|
||||
termp->Nttyb = buf;
|
||||
AFTER("noqiflush");
|
||||
}
|
||||
returnVoid;
|
||||
@ -319,25 +317,28 @@ NCURSES_EXPORT(int)
|
||||
NCURSES_SP_NAME(intrflush) (NCURSES_SP_DCLx WINDOW *win GCC_UNUSED, bool flag)
|
||||
{
|
||||
int result = ERR;
|
||||
TERMINAL *termp;
|
||||
|
||||
T((T_CALLED("intrflush(%d)"), flag));
|
||||
T((T_CALLED("intrflush(%p,%d)"), SP_PARM, flag));
|
||||
if (SP_PARM == 0)
|
||||
returnCode(ERR);
|
||||
|
||||
if (cur_term != 0) {
|
||||
if ((termp = TerminalOf(SP_PARM)) != 0) {
|
||||
TTY buf;
|
||||
|
||||
BEFORE("intrflush");
|
||||
buf = cur_term->Nttyb;
|
||||
buf = termp->Nttyb;
|
||||
#ifdef TERMIOS
|
||||
if (flag)
|
||||
buf.c_lflag &= ~(NOFLSH);
|
||||
else
|
||||
buf.c_lflag |= (NOFLSH);
|
||||
result = _nc_set_tty_mode(&buf);
|
||||
result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf);
|
||||
#else
|
||||
/* FIXME */
|
||||
#endif
|
||||
if (result == OK) {
|
||||
cur_term->Nttyb = buf;
|
||||
termp->Nttyb = buf;
|
||||
}
|
||||
AFTER("intrflush");
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/****************************************************************************
|
||||
* Copyright (c) 2005-2007,2008 Free Software Foundation, Inc. *
|
||||
* Copyright (c) 2005-2008,2009 Free Software Foundation, Inc. *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a *
|
||||
* copy of this software and associated documentation files (the *
|
||||
@ -29,7 +29,7 @@
|
||||
/*
|
||||
* Author: Thomas E. Dickey
|
||||
*
|
||||
* $Id: demo_termcap.c,v 1.7 2008/02/09 18:08:36 tom Exp $
|
||||
* $Id: demo_termcap.c,v 1.11 2009/08/02 00:02:53 tom Exp $
|
||||
*
|
||||
* A simple demo of the termcap interface.
|
||||
*/
|
||||
@ -38,10 +38,25 @@
|
||||
|
||||
#if HAVE_TGETENT
|
||||
|
||||
#if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES)
|
||||
#define USE_CODE_LISTS 1
|
||||
#else
|
||||
#define USE_CODE_LISTS 0
|
||||
#endif
|
||||
|
||||
#define FCOLS 8
|
||||
#define FNAME(type) "%s %-*s = ", #type, FCOLS
|
||||
|
||||
#if USE_CODE_LISTS
|
||||
static bool b_opt = FALSE;
|
||||
static bool n_opt = FALSE;
|
||||
static bool s_opt = FALSE;
|
||||
#endif
|
||||
|
||||
#define isCapName(c) (isgraph(c) && strchr("^#=:\\", c) == 0)
|
||||
|
||||
static void
|
||||
dumpit(char *cap)
|
||||
dumpit(NCURSES_CONST char *cap)
|
||||
{
|
||||
/*
|
||||
* One of the limitations of the termcap interface is that the library
|
||||
@ -59,7 +74,7 @@ dumpit(char *cap)
|
||||
* Note that the strings returned are mostly terminfo format, since
|
||||
* ncurses does not convert except for a handful of special cases.
|
||||
*/
|
||||
printf("str %s = ", cap);
|
||||
printf(FNAME(str), cap);
|
||||
while (*str != 0) {
|
||||
int ch = UChar(*str++);
|
||||
switch (ch) {
|
||||
@ -108,15 +123,17 @@ dumpit(char *cap)
|
||||
}
|
||||
printf("\n");
|
||||
} else if ((num = tgetnum(cap)) >= 0) {
|
||||
printf("num %s = %d\n", cap, num);
|
||||
printf(FNAME(num), cap);
|
||||
printf(" %d\n", num);
|
||||
} else if ((num = tgetflag(cap)) > 0) {
|
||||
printf("flg %s\n", cap);
|
||||
printf(FNAME(flg), cap);
|
||||
printf("%s\n", "true");
|
||||
}
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
static void
|
||||
demo_termcap(char *name)
|
||||
brute_force(const char *name)
|
||||
{
|
||||
char buffer[1024];
|
||||
|
||||
@ -140,23 +157,142 @@ demo_termcap(char *name)
|
||||
}
|
||||
}
|
||||
|
||||
#if USE_CODE_LISTS
|
||||
static void
|
||||
demo_terminfo(NCURSES_CONST char *name)
|
||||
{
|
||||
unsigned n;
|
||||
NCURSES_CONST char *cap;
|
||||
|
||||
printf("Terminal type \"%s\"\n", name);
|
||||
setupterm(name, 1, (int *) 0);
|
||||
|
||||
if (b_opt) {
|
||||
for (n = 0;; ++n) {
|
||||
cap = boolcodes[n];
|
||||
if (cap == 0)
|
||||
break;
|
||||
dumpit(cap);
|
||||
}
|
||||
}
|
||||
|
||||
if (n_opt) {
|
||||
for (n = 0;; ++n) {
|
||||
cap = numcodes[n];
|
||||
if (cap == 0)
|
||||
break;
|
||||
dumpit(cap);
|
||||
}
|
||||
}
|
||||
|
||||
if (s_opt) {
|
||||
for (n = 0;; ++n) {
|
||||
cap = strcodes[n];
|
||||
if (cap == 0)
|
||||
break;
|
||||
dumpit(cap);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
usage(void)
|
||||
{
|
||||
static const char *msg[] =
|
||||
{
|
||||
"Usage: demo_terminfo [options] [terminal]",
|
||||
"",
|
||||
"If no options are given, print all (boolean, numeric, string)",
|
||||
"capabilities for the given terminal, using short names.",
|
||||
"",
|
||||
"Options:",
|
||||
" -a try all names, print capabilities found",
|
||||
" -b print boolean-capabilities",
|
||||
" -n print numeric-capabilities",
|
||||
" -r COUNT repeat for given count",
|
||||
" -s print string-capabilities",
|
||||
};
|
||||
unsigned n;
|
||||
for (n = 0; n < SIZEOF(msg); ++n) {
|
||||
fprintf(stderr, "%s\n", msg[n]);
|
||||
}
|
||||
ExitProgram(EXIT_FAILURE);
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
int n;
|
||||
char *name;
|
||||
bool a_opt = FALSE;
|
||||
|
||||
if (argc > 1) {
|
||||
for (n = 1; n < argc; ++n) {
|
||||
demo_termcap(argv[n]);
|
||||
#if USE_CODE_LISTS
|
||||
int repeat;
|
||||
int r_opt = 1;
|
||||
|
||||
while ((n = getopt(argc, argv, "abnr:s")) != -1) {
|
||||
switch (n) {
|
||||
case 'a':
|
||||
a_opt = TRUE;
|
||||
break;
|
||||
case 'b':
|
||||
b_opt = TRUE;
|
||||
break;
|
||||
case 'n':
|
||||
n_opt = TRUE;
|
||||
break;
|
||||
case 'r':
|
||||
if ((r_opt = atoi(optarg)) <= 0)
|
||||
usage();
|
||||
break;
|
||||
case 's':
|
||||
s_opt = TRUE;
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
break;
|
||||
}
|
||||
} else if ((name = getenv("TERM")) != 0) {
|
||||
demo_termcap(name);
|
||||
} else {
|
||||
static char dumb[] = "dumb";
|
||||
demo_termcap(dumb);
|
||||
}
|
||||
|
||||
if (!(b_opt || n_opt || s_opt)) {
|
||||
b_opt = TRUE;
|
||||
n_opt = TRUE;
|
||||
s_opt = TRUE;
|
||||
}
|
||||
#else
|
||||
a_opt = TRUE;
|
||||
#endif
|
||||
|
||||
if (a_opt) {
|
||||
if (optind < argc) {
|
||||
for (n = optind; n < argc; ++n) {
|
||||
brute_force(argv[n]);
|
||||
}
|
||||
} else if ((name = getenv("TERM")) != 0) {
|
||||
brute_force(name);
|
||||
} else {
|
||||
static char dumb[] = "dumb";
|
||||
brute_force(dumb);
|
||||
}
|
||||
}
|
||||
#if USE_CODE_LISTS
|
||||
else {
|
||||
for (repeat = 0; repeat < r_opt; ++repeat) {
|
||||
if (optind < argc) {
|
||||
for (n = optind; n < argc; ++n) {
|
||||
demo_terminfo(argv[n]);
|
||||
}
|
||||
} else if ((name = getenv("TERM")) != 0) {
|
||||
demo_terminfo(name);
|
||||
} else {
|
||||
static char dumb[] = "dumb";
|
||||
demo_terminfo(dumb);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
ExitProgram(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,7 @@ AUTHOR
|
||||
Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
|
||||
Thomas E. Dickey (beginning revision 1.27 in 1996).
|
||||
|
||||
$Id: ncurses.c,v 1.342 2009/07/18 11:48:42 tom Exp $
|
||||
$Id: ncurses.c,v 1.343 2009/07/30 09:13:37 tom Exp $
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -2890,7 +2890,7 @@ cycle_attr(int ch, unsigned *at_code, chtype *attr)
|
||||
*at_code = 0;
|
||||
break;
|
||||
case 'V':
|
||||
if (*at_code == 1)
|
||||
if (*at_code == 0)
|
||||
*at_code = SIZEOF(attrs_to_cycle) - 1;
|
||||
else
|
||||
*at_code -= 1;
|
||||
|
Loading…
Reference in New Issue
Block a user