aboutsummaryrefslogtreecommitdiff
path: root/contrib/ncurses/test
diff options
context:
space:
mode:
authorPeter Wemm <peter@FreeBSD.org>2000-07-03 09:24:12 +0000
committerPeter Wemm <peter@FreeBSD.org>2000-07-03 09:24:12 +0000
commit15589c42fa2774d2f8ee650f4f31eb8d3a861316 (patch)
tree27e79485df3c9195e6fe58960df47f675f41f1e9 /contrib/ncurses/test
parent6b9085fd58b7602b14be0cd2059285baa764a7ee (diff)
downloadsrc-15589c42fa2774d2f8ee650f4f31eb8d3a861316.tar.gz
src-15589c42fa2774d2f8ee650f4f31eb8d3a861316.zip
Import the most recent ncurses 5.1 prerelease (20000701).
Mostly this is intended to resolve the trace() badness once and for all. Obtained from: ftp://dickey.his.com/ncurses/
Notes
Notes: svn path=/vendor/ncurses/dist/; revision=62449
Diffstat (limited to 'contrib/ncurses/test')
-rw-r--r--contrib/ncurses/test/Makefile.in14
-rw-r--r--contrib/ncurses/test/cardfile.c196
-rwxr-xr-xcontrib/ncurses/test/configure60
-rw-r--r--contrib/ncurses/test/configure.in22
-rw-r--r--contrib/ncurses/test/dots.c6
-rw-r--r--contrib/ncurses/test/filter.c4
-rw-r--r--contrib/ncurses/test/firework.c4
-rw-r--r--contrib/ncurses/test/gdc.c435
-rw-r--r--contrib/ncurses/test/hanoi.c6
-rw-r--r--contrib/ncurses/test/knight.c4
-rw-r--r--contrib/ncurses/test/modules5
-rw-r--r--contrib/ncurses/test/ncurses.c2584
-rw-r--r--contrib/ncurses/test/railroad.c201
-rw-r--r--contrib/ncurses/test/rain.c4
-rw-r--r--contrib/ncurses/test/tclock.c2
-rw-r--r--contrib/ncurses/test/test.priv.h5
-rw-r--r--contrib/ncurses/test/testcurs.c683
-rw-r--r--contrib/ncurses/test/view.c271
-rw-r--r--contrib/ncurses/test/worm.c24
-rw-r--r--contrib/ncurses/test/xmas.c4
20 files changed, 2620 insertions, 1914 deletions
diff --git a/contrib/ncurses/test/Makefile.in b/contrib/ncurses/test/Makefile.in
index b0b9de038ce0..9f573ba0d0b6 100644
--- a/contrib/ncurses/test/Makefile.in
+++ b/contrib/ncurses/test/Makefile.in
@@ -1,6 +1,6 @@
-# $Id: Makefile.in,v 1.54 1999/10/23 20:01:19 tom Exp $
+# $Id: Makefile.in,v 1.58 2000/05/28 01:28:39 tom Exp $
##############################################################################
-# Copyright (c) 1998,1999 Free Software Foundation, Inc. #
+# Copyright (c) 1998,1999,2000 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 "Software"), #
@@ -46,6 +46,7 @@ libdir = @libdir@
includedir = @includedir@
CC = @CC@
+CPP = @CPP@
CFLAGS = @CFLAGS@
CPPFLAGS = -I../test -I$(srcdir) @CPPFLAGS@ -DHAVE_CONFIG_H
@@ -98,6 +99,7 @@ TESTS = \
ncurses$x \
newdemo$x \
rain$x \
+ railroad$x \
tclock$x \
testaddch$x \
testcurs$x \
@@ -161,6 +163,9 @@ newdemo$x: $(MODEL)/newdemo.o $(LOCAL_LIBS)
rain$x: $(MODEL)/rain.o $(LOCAL_LIBS)
@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/rain.o $(LDFLAGS_DEFAULT)
+railroad$x: $(MODEL)/railroad.o $(LOCAL_LIBS)
+ @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/railroad.o $(LDFLAGS_DEFAULT)
+
tclock$x: $(MODEL)/tclock.o $(LOCAL_LIBS)
@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/tclock.o $(LDFLAGS_DEFAULT) $(MATH_LIB)
@@ -182,8 +187,9 @@ worm$x: $(MODEL)/worm.o $(LOCAL_LIBS)
xmas$x: $(MODEL)/xmas.o $(LOCAL_LIBS)
@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/xmas.o $(LDFLAGS_DEFAULT)
-install:
-install.libs:
+libs \
+install \
+install.libs \
install.test:
uninstall:
diff --git a/contrib/ncurses/test/cardfile.c b/contrib/ncurses/test/cardfile.c
index bc2e1adb14cc..980ffbeba94c 100644
--- a/contrib/ncurses/test/cardfile.c
+++ b/contrib/ncurses/test/cardfile.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1999,2000 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 <dickey@clark.net> 1999
*
- * $Id: cardfile.c,v 1.2 1999/06/16 00:41:57 tom Exp $
+ * $Id: cardfile.c,v 1.4 2000/03/19 01:34:00 tom Exp $
*
* File format: text beginning in column 1 is a title; other text forms the content.
*/
@@ -50,11 +50,11 @@
#endif
typedef struct _card {
- struct _card *link;
- PANEL *panel;
- FORM *form;
- char *title;
- char *content;
+ struct _card *link;
+ PANEL *panel;
+ FORM *form;
+ char *title;
+ char *content;
} CARD;
static CARD *all_cards;
@@ -62,37 +62,40 @@ static char default_name[] = "cardfile.dat";
#if !HAVE_STRDUP
#define strdup my_strdup
-static char *strdup (char *s)
+static char *
+strdup(char *s)
{
- char *p = (char *)malloc(strlen(s)+1);
+ char *p = (char *) malloc(strlen(s) + 1);
if (p)
strcpy(p, s);
- return(p);
+ return (p);
}
#endif /* not HAVE_STRDUP */
-static char *skip(char *buffer)
+static char *
+skip(char *buffer)
{
while (isspace(*buffer))
buffer++;
return buffer;
}
-static void trim(char *buffer)
+static void
+trim(char *buffer)
{
unsigned n = strlen(buffer);
while (n-- && isspace(buffer[n]))
- buffer[n] = 0;
+ buffer[n] = 0;
}
/*******************************************************************************/
-static CARD *add_title(const char *title)
+static CARD *
+add_title(const char *title)
{
CARD *card, *p, *q;
- for (p = all_cards, q = 0; p != 0; q = p, p = p->link)
- {
+ for (p = all_cards, q = 0; p != 0; q = p, p = p->link) {
int cmp = strcmp(p->title, title);
if (cmp == 0)
return p;
@@ -100,46 +103,49 @@ static CARD *add_title(const char *title)
break;
}
- card = (CARD *)calloc(1, sizeof(CARD));
+ card = (CARD *) calloc(1, sizeof(CARD));
card->title = strdup(title);
card->content = strdup("");
- if (q == 0)
- {
+ if (q == 0) {
card->link = all_cards;
all_cards = card;
- }
- else
- {
- card->link = q->link;
+ } else {
+ card->link = q->link;
q->link = card;
}
return card;
}
-static void add_content(CARD *card, char *content)
+static void
+add_content(CARD * card, char *content)
{
unsigned total, offset;
content = skip(content);
- if ((total = strlen(content)) != 0)
- {
- if ((offset = strlen(card->content)) != 0)
- {
+ if ((total = strlen(content)) != 0) {
+ if ((offset = strlen(card->content)) != 0) {
total += 1 + offset;
- card->content = (char *)realloc(card->content, total + 1);
+ card->content = (char *) realloc(card->content, total + 1);
strcpy(card->content + offset++, " ");
- }
- else
- {
- card->content = (char *)malloc(total + 1);
+ } else {
+ card->content = (char *) malloc(total + 1);
}
strcpy(card->content + offset, content);
}
}
-static CARD *find_card(char *title)
+static CARD *
+new_card(void)
+{
+ CARD *card = add_title("");
+ add_content(card, "");
+ return card;
+}
+
+static CARD *
+find_card(char *title)
{
CARD *card;
@@ -150,25 +156,21 @@ static CARD *find_card(char *title)
return card;
}
-static void read_data(char *fname)
+static void
+read_data(char *fname)
{
FILE *fp;
CARD *card = 0;
char buffer[BUFSIZ];
- if ((fp = fopen(fname, "r")) != 0)
- {
- while (fgets(buffer, sizeof(buffer), fp))
- {
+ if ((fp = fopen(fname, "r")) != 0) {
+ while (fgets(buffer, sizeof(buffer), fp)) {
trim(buffer);
- if (isspace(*buffer))
- {
+ if (isspace(*buffer)) {
if (card == 0)
card = add_title("");
add_content(card, buffer);
- }
- else if ((card = find_card(buffer)) == 0)
- {
+ } else if ((card = find_card(buffer)) == 0) {
card = add_title(buffer);
}
}
@@ -178,7 +180,8 @@ static void read_data(char *fname)
/*******************************************************************************/
-static void write_data(const char *fname)
+static void
+write_data(const char *fname)
{
FILE *fp;
CARD *p = 0;
@@ -187,17 +190,13 @@ static void write_data(const char *fname)
if (!strcmp(fname, default_name))
fname = "cardfile.out";
- if ((fp = fopen(fname, "w")) != 0)
- {
- for (p = all_cards; p != 0; p = p->link)
- {
+ if ((fp = fopen(fname, "w")) != 0) {
+ for (p = all_cards; p != 0; p = p->link) {
FIELD **f = form_fields(p->form);
- for (n = 0; f[n] != 0; n++)
- {
+ for (n = 0; f[n] != 0; n++) {
char *s = field_buffer(f[n], 0);
if (s != 0
- && (s = strdup(s)) != 0)
- {
+ && (s = strdup(s)) != 0) {
trim(s);
fprintf(fp, "%s%s\n", n ? "\t" : "", s);
free(s);
@@ -213,7 +212,8 @@ static void write_data(const char *fname)
/*
* Count the cards
*/
-static int count_cards(void)
+static int
+count_cards(void)
{
CARD *p;
int count = 0;
@@ -227,12 +227,12 @@ static int count_cards(void)
/*
* Shuffle the panels to keep them in a natural hierarchy.
*/
-static void order_cards(CARD *first, int depth)
+static void
+order_cards(CARD * first, int depth)
{
- if (first)
- {
+ if (first) {
if (depth && first->link)
- order_cards(first->link, depth-1);
+ order_cards(first->link, depth - 1);
top_panel(first->panel);
}
}
@@ -240,17 +240,19 @@ static void order_cards(CARD *first, int depth)
/*
* Return the next card in the list
*/
-static CARD *next_card(CARD *now)
+static CARD *
+next_card(CARD * now)
{
if (now->link)
- now = now->link;
+ now = now->link;
return now;
}
/*
* Return the previous card in the list
*/
-static CARD *prev_card(CARD *now)
+static CARD *
+prev_card(CARD * now)
{
CARD *p;
for (p = all_cards; p != 0; p = p->link)
@@ -259,49 +261,49 @@ static CARD *prev_card(CARD *now)
return now;
}
-
/*******************************************************************************/
-static int form_virtualize(WINDOW *w)
+static int
+form_virtualize(WINDOW *w)
{
- int c = wgetch(w);
+ int c = wgetch(w);
- switch(c)
- {
+ switch (c) {
case CTRL('W'):
- return(MAX_FORM_COMMAND + 4);
+ return (MAX_FORM_COMMAND + 4);
case CTRL('N'):
- return(MAX_FORM_COMMAND + 3);
+ return (MAX_FORM_COMMAND + 3);
case CTRL('P'):
- return(MAX_FORM_COMMAND + 2);
+ return (MAX_FORM_COMMAND + 2);
case CTRL('Q'):
case 033:
- return(MAX_FORM_COMMAND + 1);
+ return (MAX_FORM_COMMAND + 1);
case KEY_BACKSPACE:
- return(REQ_DEL_PREV);
+ return (REQ_DEL_PREV);
case KEY_DC:
- return(REQ_DEL_CHAR);
+ return (REQ_DEL_CHAR);
case KEY_LEFT:
- return(REQ_LEFT_CHAR);
+ return (REQ_LEFT_CHAR);
case KEY_RIGHT:
- return(REQ_RIGHT_CHAR);
+ return (REQ_RIGHT_CHAR);
case KEY_DOWN:
case KEY_NEXT:
- return(REQ_NEXT_FIELD);
+ return (REQ_NEXT_FIELD);
case KEY_UP:
case KEY_PREVIOUS:
- return(REQ_PREV_FIELD);
+ return (REQ_PREV_FIELD);
default:
- return(c);
+ return (c);
}
}
/*******************************************************************************/
-static void cardfile(char *fname)
+static void
+cardfile(char *fname)
{
WINDOW *win;
CARD *p;
@@ -322,9 +324,8 @@ static void cardfile(char *fname)
addstr("Arrow keys move left/right within a field, up/down between fields");
/* make a panel for each CARD */
- for (p = all_cards; p != 0; p = p->link)
- {
- FIELD **f = (FIELD **)calloc(3, sizeof(FIELD *));
+ for (p = all_cards; p != 0; p = p->link) {
+ FIELD **f = (FIELD **) calloc(3, sizeof(FIELD *));
win = newwin(panel_high, panel_wide, x, y);
keypad(win, TRUE);
@@ -336,7 +337,7 @@ static void cardfile(char *fname)
set_field_back(f[0], A_REVERSE);
set_field_buffer(f[0], 0, p->title);
- f[1] = new_field(form_high-1, form_wide, 1, 0, 0, 0);
+ f[1] = new_field(form_high - 1, form_wide, 1, 0, 0, 0);
set_field_buffer(f[1], 0, p->content);
set_field_just(f[1], JUSTIFY_LEFT);
@@ -353,31 +354,28 @@ static void cardfile(char *fname)
order_cards(top_card = all_cards, visible_cards);
- update_panels();
-
- while (!finished)
- {
+ while (!finished) {
update_panels();
doupdate();
- switch(form_driver(top_card->form, ch = form_virtualize(panel_window(top_card->panel))))
- {
+ switch (form_driver(top_card->form, ch =
+ form_virtualize(panel_window(top_card->panel)))) {
case E_OK:
break;
case E_UNKNOWN_COMMAND:
switch (ch) {
- case MAX_FORM_COMMAND+1:
+ case MAX_FORM_COMMAND + 1:
finished = TRUE;
break;
- case MAX_FORM_COMMAND+2:
+ case MAX_FORM_COMMAND + 2:
top_card = prev_card(top_card);
order_cards(top_card, visible_cards);
break;
- case MAX_FORM_COMMAND+3:
+ case MAX_FORM_COMMAND + 3:
top_card = next_card(top_card);
order_cards(top_card, visible_cards);
break;
- case MAX_FORM_COMMAND+4:
+ case MAX_FORM_COMMAND + 4:
write_data(fname);
break;
default:
@@ -394,7 +392,8 @@ static void cardfile(char *fname)
/*******************************************************************************/
-int main(int argc, char *argv[])
+int
+main(int argc, char *argv[])
{
int n;
@@ -402,15 +401,16 @@ int main(int argc, char *argv[])
cbreak();
noecho();
- if (argc > 1)
- {
+ if (argc > 1) {
for (n = 1; n < argc; n++)
read_data(argv[n]);
+ if (count_cards() == 0)
+ new_card();
cardfile(argv[1]);
- }
- else
- {
+ } else {
read_data(default_name);
+ if (count_cards() == 0)
+ new_card();
cardfile(default_name);
}
diff --git a/contrib/ncurses/test/configure b/contrib/ncurses/test/configure
index 649dffe92c2b..2266114152d6 100755
--- a/contrib/ncurses/test/configure
+++ b/contrib/ncurses/test/configure
@@ -1458,21 +1458,22 @@ done
for ac_func in \
-curses_version \
gettimeofday \
napms \
resizeterm \
strdup \
+use_default_colors \
vsscanf \
+wresize \
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1471: checking for $ac_func" >&5
+echo "configure:1472: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1476 "configure"
+#line 1477 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1495,7 +1496,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1520,14 +1521,59 @@ fi
done
+echo $ac_n "checking for function curses_version""... $ac_c" 1>&6
+echo "configure:1526: checking for function curses_version" >&5
+if eval "test \"`echo '$''{'cf_cv_func_curses_version'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+if test "$cross_compiling" = yes; then
+ cf_cv_func_curses_version=unknown
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1535 "configure"
+#include "confdefs.h"
+
+#include <curses.h>
+int main()
+{
+ char temp[1024];
+ sprintf(temp, "%s\n", curses_version());
+ exit(0);
+}
+
+EOF
+if { (eval echo configure:1547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ cf_cv_func_curses_version=yes
+
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ cf_cv_func_curses_version=no
+
+fi
+rm -fr conftest*
+fi
+
+rm -f core
+fi
+
+echo "$ac_t""$cf_cv_func_curses_version" 1>&6
+test "$cf_cv_func_curses_version" = yes && cat >> confdefs.h <<\EOF
+#define HAVE_CURSES_VERSION 1
+EOF
+
+
echo $ac_n "checking if sys/time.h conflicts with sys/select.h""... $ac_c" 1>&6
-echo "configure:1525: checking if sys/time.h conflicts with sys/select.h" >&5
+echo "configure:1571: checking if sys/time.h conflicts with sys/select.h" >&5
if eval "test \"`echo '$''{'cf_cv_sys_time_select'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1531 "configure"
+#line 1577 "configure"
#include "confdefs.h"
#if HAVE_SYS_TIME_H
@@ -1541,7 +1587,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:1545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1591: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cf_cv_sys_time_select=yes
else
diff --git a/contrib/ncurses/test/configure.in b/contrib/ncurses/test/configure.in
index d963022c0bfd..35e2b47cb9ae 100644
--- a/contrib/ncurses/test/configure.in
+++ b/contrib/ncurses/test/configure.in
@@ -28,7 +28,7 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1998
dnl
-dnl $Id: configure.in,v 1.27 1999/10/23 20:01:42 tom Exp $
+dnl $Id: configure.in,v 1.29 1999/12/19 03:12:13 tom Exp $
dnl This is a simple configuration-script for the ncurses test programs that
dnl allows the test-directory to be separately configured against a reference
dnl system (i.e., sysvr4 curses)
@@ -129,14 +129,32 @@ unistd.h \
)
AC_CHECK_FUNCS( \
-curses_version \
gettimeofday \
napms \
resizeterm \
strdup \
+use_default_colors \
vsscanf \
+wresize \
)
+dnl Solaris has a data item 'curses_version', which confuses AC_CHECK_FUNCS.
+dnl It's a character string "SVR4", not documented.
+AC_CACHE_CHECK(for function curses_version, cf_cv_func_curses_version,[
+AC_TRY_RUN([
+#include <curses.h>
+int main()
+{
+ char temp[1024];
+ sprintf(temp, "%s\n", curses_version());
+ exit(0);
+}]
+,[cf_cv_func_curses_version=yes]
+,[cf_cv_func_curses_version=no]
+,[cf_cv_func_curses_version=unknown])
+rm -f core])
+test "$cf_cv_func_curses_version" = yes && AC_DEFINE(HAVE_CURSES_VERSION)
+
dnl ---------------------------------------------------------------------------
dnl [CF_SYS_TIME_SELECT]
AC_MSG_CHECKING(if sys/time.h conflicts with sys/select.h)
diff --git a/contrib/ncurses/test/dots.c b/contrib/ncurses/test/dots.c
index 13ec66a57092..a5ddcaad5888 100644
--- a/contrib/ncurses/test/dots.c
+++ b/contrib/ncurses/test/dots.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1999,2000 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 <dickey@clark.net> 1999
*
- * $Id: dots.c,v 1.2 1999/10/23 13:24:32 tom Exp $
+ * $Id: dots.c,v 1.4 2000/02/13 01:05:13 tom Exp $
*
* A simple demo of the terminfo interface.
*/
@@ -125,7 +125,7 @@ main(
tputs(tparm(cursor_address, y, x), 1, outc);
if (max_colors > 0) {
- z = ranf() * max_colors;
+ z = (int)(ranf() * max_colors);
if (ranf() > 0.01) {
tputs(tparm(set_a_foreground, z), 1, outc);
} else {
diff --git a/contrib/ncurses/test/filter.c b/contrib/ncurses/test/filter.c
index 6057396a89c6..5d161cb64d6e 100644
--- a/contrib/ncurses/test/filter.c
+++ b/contrib/ncurses/test/filter.c
@@ -29,7 +29,7 @@
/*
* Author: Thomas E. Dickey <dickey@clark.net> 1998
*
- * $Id: filter.c,v 1.2 1998/05/10 00:39:27 tom Exp $
+ * $Id: filter.c,v 1.3 1999/11/13 23:39:19 tom Exp $
*/
#include <test.priv.h>
@@ -81,7 +81,7 @@ int main(
if (has_colors()) {
int background = COLOR_BLACK;
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors () != ERR)
background = -1;
#endif
diff --git a/contrib/ncurses/test/firework.c b/contrib/ncurses/test/firework.c
index 557a7bf231ec..ba5cbda2f7d4 100644
--- a/contrib/ncurses/test/firework.c
+++ b/contrib/ncurses/test/firework.c
@@ -1,5 +1,5 @@
/*
- * $Id: firework.c,v 1.15 1999/10/16 21:33:39 tom Exp $
+ * $Id: firework.c,v 1.16 1999/11/13 23:39:16 tom Exp $
*/
#include <test.priv.h>
@@ -133,7 +133,7 @@ main(
if (has_colors()) {
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
my_bg = -1;
#endif
diff --git a/contrib/ncurses/test/gdc.c b/contrib/ncurses/test/gdc.c
index ecef2bb1e1d1..ea88d6c54754 100644
--- a/contrib/ncurses/test/gdc.c
+++ b/contrib/ncurses/test/gdc.c
@@ -6,7 +6,7 @@
* modified 10-18-89 for curses (jrl)
* 10-18-89 added signal handling
*
- * $Id: gdc.c,v 1.10 1997/10/18 20:06:06 tom Exp $
+ * $Id: gdc.c,v 1.14 2000/04/23 00:03:11 tom Exp $
*/
#include <test.priv.h>
@@ -20,216 +20,297 @@
#define XLENGTH 54
#define YDEPTH 5
-/* it won't be */
-static time_t now; /* yeah! */
-static struct tm *tm;
-
-static short disp[11] = {
- 075557, 011111, 071747, 071717, 055711,
- 074717, 074757, 071111, 075757, 075717, 002020
+static short disp[11] =
+{
+ 075557, 011111, 071747, 071717, 055711,
+ 074717, 074757, 071111, 075757, 075717, 002020
};
static long older[6], next[6], newer[6], mask;
-static char scrol;
static int sigtermed = 0;
+static bool redirected = FALSE;
+static bool hascolor = FALSE;
-static int hascolor = 0;
-
-static void set(int, int);
-static void standt(int);
-static void movto(int, int);
-
-static
-RETSIGTYPE sighndl(int signo)
+static RETSIGTYPE
+sighndl(int signo)
{
- signal(signo, sighndl);
- sigtermed=signo;
+ signal(signo, sighndl);
+ sigtermed = signo;
+ if (redirected) {
+ endwin();
+ exit(EXIT_FAILURE);
+ }
}
static void
drawbox(void)
{
- chtype bottom[XLENGTH+1];
- int n;
+ chtype bottom[XLENGTH + 1];
+ int n;
- if(hascolor)
- attrset(COLOR_PAIR(3));
+ if (hascolor)
+ attrset(COLOR_PAIR(3));
- mvaddch(YBASE - 1, XBASE - 1, ACS_ULCORNER);
- hline(ACS_HLINE, XLENGTH);
- mvaddch(YBASE - 1, XBASE + XLENGTH, ACS_URCORNER);
+ mvaddch(YBASE - 1, XBASE - 1, ACS_ULCORNER);
+ hline(ACS_HLINE, XLENGTH);
+ mvaddch(YBASE - 1, XBASE + XLENGTH, ACS_URCORNER);
- mvaddch(YBASE + YDEPTH, XBASE - 1, ACS_LLCORNER);
- mvinchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
- for (n = 0; n < XLENGTH; n++)
- bottom[n] = ACS_HLINE | (bottom[n] & (A_ATTRIBUTES | A_COLOR));
- mvaddchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
- mvaddch(YBASE + YDEPTH, XBASE + XLENGTH, ACS_LRCORNER);
+ mvaddch(YBASE + YDEPTH, XBASE - 1, ACS_LLCORNER);
+ mvinchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
+ for (n = 0; n < XLENGTH; n++)
+ bottom[n] = ACS_HLINE | (bottom[n] & (A_ATTRIBUTES | A_COLOR));
+ mvaddchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
+ mvaddch(YBASE + YDEPTH, XBASE + XLENGTH, ACS_LRCORNER);
- move(YBASE, XBASE - 1);
- vline(ACS_VLINE, YDEPTH);
+ move(YBASE, XBASE - 1);
+ vline(ACS_VLINE, YDEPTH);
- move(YBASE, XBASE + XLENGTH);
- vline(ACS_VLINE, YDEPTH);
+ move(YBASE, XBASE + XLENGTH);
+ vline(ACS_VLINE, YDEPTH);
- if(hascolor)
- attrset(COLOR_PAIR(2));
+ if (hascolor)
+ attrset(COLOR_PAIR(2));
}
-int
-main(int argc, char *argv[])
+static void
+standt(int on)
{
-long t, a;
-int i, j, s, k;
-int n = 0;
-
- signal(SIGINT,sighndl);
- signal(SIGTERM,sighndl);
- signal(SIGKILL,sighndl);
-
- initscr();
- cbreak();
- noecho();
- nodelay(stdscr, 1);
- curs_set(0);
-
- hascolor = has_colors();
-
- if(hascolor) {
- int bg = COLOR_BLACK;
- start_color();
-#ifdef NCURSES_VERSION
- if (use_default_colors() == OK)
- bg = -1;
-#endif
- init_pair(1, COLOR_BLACK, COLOR_RED);
- init_pair(2, COLOR_RED, bg);
- init_pair(3, COLOR_WHITE, bg);
- attrset(COLOR_PAIR(2));
+ if (on) {
+ if (hascolor) {
+ attron(COLOR_PAIR(1));
+ } else {
+ attron(A_STANDOUT);
}
-
- clear();
- refresh();
- while(--argc > 0) {
- if(**++argv == '-')
- scrol = 1;
- else
- n = atoi(*argv);
+ } else {
+ if (hascolor) {
+ attron(COLOR_PAIR(2));
+ } else {
+ attroff(A_STANDOUT);
}
-
- drawbox();
- do {
- char buf[30];
-
- mask = 0;
- time(&now);
- tm = localtime(&now);
- set(tm->tm_sec%10, 0);
- set(tm->tm_sec/10, 4);
- set(tm->tm_min%10, 10);
- set(tm->tm_min/10, 14);
- set(tm->tm_hour%10, 20);
- set(tm->tm_hour/10, 24);
- set(10, 7);
- set(10, 17);
- for(k=0; k<6; k++) {
- if(scrol) {
- for(i=0; i<5; i++)
- newer[i] = (newer[i]&~mask) | (newer[i+1]&mask);
- newer[5] = (newer[5]&~mask) | (next[k]&mask);
- } else
- newer[k] = (newer[k]&~mask) | (next[k]&mask);
- next[k] = 0;
- for(s=1; s>=0; s--) {
- standt(s);
- for(i=0; i<6; i++) {
- if((a = (newer[i]^older[i])&(s ? newer : older)[i]) != 0) {
- for(j=0,t=1<<26; t; t>>=1,j++) {
- if(a&t) {
- if(!(a&(t<<1))) {
- movto(YBASE + i, XBASE + 2*j);
- }
- addstr(" ");
- }
- }
- }
- if(!s) {
- older[i] = newer[i];
- }
- }
- if(!s) {
- if (scrol)
- drawbox();
- refresh();
- if (scrol)
- napms(150);
- }
- }
- }
-
- /* this depends on the detailed format of ctime(3) */
- (void) strcpy(buf, ctime(&now));
- (void) strcpy(buf + 10, buf + 19);
- mvaddstr(16, 30, buf);
-
- movto(6, 0);
- drawbox();
- refresh();
- sleep(1);
- while(wgetch(stdscr) != ERR)
- continue;
- if (sigtermed) {
- standend();
- clear();
- refresh();
- curs_set(1);
- endwin();
- fprintf(stderr, "gdc terminated by signal %d\n", sigtermed);
- return EXIT_FAILURE;
- }
- } while(--n);
- standend();
- clear();
- refresh();
- curs_set(1);
- endwin();
- return EXIT_SUCCESS;
+ }
}
static void
set(int t, int n)
{
-int i, m;
+ int i, m;
- m = 7<<n;
- for(i=0; i<5; i++) {
- next[i] |= ((disp[t]>>(4-i)*3)&07)<<n;
- mask |= (next[i]^older[i])&m;
- }
- if(mask&m)
- mask |= m;
+ m = 7 << n;
+ for (i = 0; i < 5; i++) {
+ next[i] |= ((disp[t] >> (4 - i) * 3) & 07) << n;
+ mask |= (next[i] ^ older[i]) & m;
+ }
+ if (mask & m)
+ mask |= m;
}
static void
-standt(int on)
+usage(void)
{
- if (on) {
- if(hascolor) {
- attron(COLOR_PAIR(1));
- } else {
- attron(A_STANDOUT);
+ static const char *msg[] =
+ {
+ "Usage: gdc [options] [count]"
+ ,""
+ ,"Options:"
+ ," -n redirect input to /dev/null"
+ ," -s scroll each number into place, rather than flipping"
+ ,""
+ ,"If you specify a count, gdc runs for that number of seconds"
+ };
+ unsigned j;
+ for (j = 0; j < SIZEOF(msg); j++)
+ fprintf(stderr, "%s\n", msg[j]);
+ exit(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+ time_t now;
+ struct tm *tm;
+ long t, a;
+ int i, j, s, k;
+ int count = 0;
+ FILE *ofp = stdout;
+ FILE *ifp = stdin;
+ bool scrol = FALSE;
+
+ signal(SIGINT, sighndl);
+ signal(SIGTERM, sighndl);
+ signal(SIGKILL, sighndl);
+
+ while ((k = getopt(argc, argv, "sn")) != EOF) {
+ switch (k) {
+ case 's':
+ scrol = TRUE;
+ break;
+ case 'n':
+ ifp = fopen("/dev/null", "r");
+ redirected = TRUE;
+ break;
+ default:
+ usage();
+ }
+ }
+ if (optind < argc) {
+ count = atoi(argv[optind++]);
+ }
+ if (optind < argc)
+ usage();
+
+ if (redirected) {
+ char *name = getenv("TERM");
+ if (name == 0
+ || newterm(name, ofp, ifp) == 0) {
+ fprintf(stderr, "cannot open terminal\n");
+ exit(EXIT_FAILURE);
+ }
+
+ } else {
+ initscr();
+ }
+ cbreak();
+ noecho();
+ nodelay(stdscr, 1);
+ curs_set(0);
+
+ hascolor = has_colors();
+
+ if (hascolor) {
+ int bg = COLOR_BLACK;
+ start_color();
+#ifdef HAVE_USE_DEFAULT_COLORS
+ if (use_default_colors() == OK)
+ bg = -1;
+#endif
+ init_pair(1, COLOR_BLACK, COLOR_RED);
+ init_pair(2, COLOR_RED, bg);
+ init_pair(3, COLOR_WHITE, bg);
+ attrset(COLOR_PAIR(2));
+ }
+
+ restart:
+ for (j = 0; j < 5; j++)
+ older[j] = newer[j] = next[j] = 0;
+
+ clear();
+ drawbox();
+
+ do {
+ char buf[30];
+
+ time(&now);
+ tm = localtime(&now);
+
+ mask = 0;
+ set(tm->tm_sec % 10, 0);
+ set(tm->tm_sec / 10, 4);
+ set(tm->tm_min % 10, 10);
+ set(tm->tm_min / 10, 14);
+ set(tm->tm_hour % 10, 20);
+ set(tm->tm_hour / 10, 24);
+ set(10, 7);
+ set(10, 17);
+
+ for (k = 0; k < 6; k++) {
+ if (scrol) {
+ for (i = 0; i < 5; i++)
+ newer[i] = (newer[i] & ~mask) | (newer[i + 1] & mask);
+ newer[5] = (newer[5] & ~mask) | (next[k] & mask);
+ } else
+ newer[k] = (newer[k] & ~mask) | (next[k] & mask);
+ next[k] = 0;
+ for (s = 1; s >= 0; s--) {
+ standt(s);
+ for (i = 0; i < 6; i++) {
+ if ((a = (newer[i] ^ older[i]) & (s ? newer : older)[i])
+ != 0) {
+ for (j = 0, t = 1 << 26; t; t >>= 1, j++) {
+ if (a & t) {
+ if (!(a & (t << 1))) {
+ move(YBASE + i, XBASE + 2 * j);
+ }
+ addstr(" ");
+ }
+ }
+ }
+ if (!s) {
+ older[i] = newer[i];
+ }
}
- } else {
- if(hascolor) {
- attron(COLOR_PAIR(2));
- } else {
- attroff(A_STANDOUT);
+ if (!s) {
+ if (scrol)
+ drawbox();
+ refresh();
+ /*
+ * If we're scrolling, space out the refreshes to fake
+ * movement. That's 7 frames, or 6 intervals, which would
+ * be 166 msec if we spread it out over a second. It looks
+ * better (but will well on a slow terminal, e.g., less
+ * than 9600bd) to squeeze that into a half-second, and use
+ * half of 170 msec to ensure that the program doesn't eat
+ * a lot of time when asking what time it is, at the top of
+ * this loop -TD
+ */
+ if (scrol)
+ napms(85);
}
+ }
}
-}
-static void
-movto(int line, int col)
-{
- move(line, col);
+ /* this depends on the detailed format of ctime(3) */
+ (void) strcpy(buf, ctime(&now));
+ (void) strcpy(buf + 10, buf + 19);
+ mvaddstr(16, 30, buf);
+
+ move(6, 0);
+ drawbox();
+ refresh();
+
+ /*
+ * If we're not scrolling, wait 1000 msec (1 sec). Use napms() rather
+ * than sleep() because the latter does odd things on some systems,
+ * e.g., suspending output as well.
+ */
+ if (scrol)
+ napms(500);
+ else
+ napms(1000);
+
+ /*
+ * This is a safe way to check if we're interrupted - making the signal
+ * handler set a flag that we can check. Since we're running
+ * nodelay(), the wgetch() call returns immediately, and in particular
+ * will return an error if interrupted. This works only if we can
+ * read from the input, of course.
+ */
+ switch (wgetch(stdscr)) {
+ case 'q':
+ count = 1;
+ break;
+ case 's':
+ nodelay(stdscr, FALSE);
+ break;
+ case ' ':
+ nodelay(stdscr, TRUE);
+ break;
+#ifdef KEY_RESIZE
+ case KEY_RESIZE:
+#endif
+ case '?':
+ goto restart;
+ case ERR:
+ if (sigtermed) {
+ standend();
+ endwin();
+ fprintf(stderr, "gdc terminated by signal %d\n", sigtermed);
+ return EXIT_FAILURE;
+ }
+ default:
+ continue;
+ }
+ } while (--count);
+ standend();
+ endwin();
+ return EXIT_SUCCESS;
}
diff --git a/contrib/ncurses/test/hanoi.c b/contrib/ncurses/test/hanoi.c
index 3ee64b0a0d14..23a864624b01 100644
--- a/contrib/ncurses/test/hanoi.c
+++ b/contrib/ncurses/test/hanoi.c
@@ -14,7 +14,7 @@
*
* Date: 05.Nov.90
*
- * $Id: hanoi.c,v 1.16 1999/10/23 15:01:01 tom Exp $
+ * $Id: hanoi.c,v 1.18 2000/04/01 20:01:08 tom Exp $
*/
#include <test.priv.h>
@@ -97,7 +97,7 @@ unsigned char AutoFlag = 0;
Usage();
return EXIT_FAILURE;
}
-#ifdef NCURSES_VERSION
+#ifdef TRACE
trace(TRACE_MAXIMUM);
#endif
initscr();
@@ -105,7 +105,7 @@ unsigned char AutoFlag = 0;
int i;
int bg = COLOR_BLACK;
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
bg = -1;
#endif
diff --git a/contrib/ncurses/test/knight.c b/contrib/ncurses/test/knight.c
index fe3101198776..ad923b42b1de 100644
--- a/contrib/ncurses/test/knight.c
+++ b/contrib/ncurses/test/knight.c
@@ -6,7 +6,7 @@
* Eric S. Raymond <esr@snark.thyrsus.com> July 22 1995. Mouse support
* added September 20th 1995.
*
- * $Id: knight.c,v 1.14 1997/08/20 16:22:38 hjl Exp $
+ * $Id: knight.c,v 1.15 1999/11/13 23:39:10 tom Exp $
*/
#include <test.priv.h>
@@ -98,7 +98,7 @@ static void init (void)
int bg = COLOR_BLACK;
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
bg = -1;
#endif
diff --git a/contrib/ncurses/test/modules b/contrib/ncurses/test/modules
index 3c69bbd45752..583f8c76cc8b 100644
--- a/contrib/ncurses/test/modules
+++ b/contrib/ncurses/test/modules
@@ -1,7 +1,7 @@
# Test-Program modules
-# $Id: modules,v 1.11 1999/10/23 00:41:02 tom Exp $
+# $Id: modules,v 1.13 2000/02/13 01:05:13 tom Exp $
##############################################################################
-# Copyright (c) 1999 Free Software Foundation, Inc. #
+# Copyright (c) 1998,1999,2000 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 "Software"), #
@@ -49,6 +49,7 @@ lrtest progs $(srcdir)
ncurses progs $(srcdir) ../include/panel.h ../include/menu.h ../include/form.h
newdemo progs $(srcdir)
rain progs $(srcdir) ../include/term.h
+railroad progs $(srcdir) ../include/termcap.h
tclock progs $(srcdir)
testaddch progs $(srcdir)
testcurs progs $(srcdir)
diff --git a/contrib/ncurses/test/ncurses.c b/contrib/ncurses/test/ncurses.c
index aa24a4261809..074ca7065597 100644
--- a/contrib/ncurses/test/ncurses.c
+++ b/contrib/ncurses/test/ncurses.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,2000 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 *
@@ -39,7 +39,7 @@ DESCRIPTION
AUTHOR
Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
-$Id: ncurses.c,v 1.120 1999/10/23 20:01:30 tom Exp $
+$Id: ncurses.c,v 1.129 2000/06/17 20:02:22 tom Exp $
***************************************************************************/
@@ -88,7 +88,7 @@ $Id: ncurses.c,v 1.120 1999/10/23 20:01:30 tom Exp $
#ifdef NCURSES_VERSION
#ifdef TRACE
-static int save_trace = TRACE_ORDINARY|TRACE_CALLS;
+static int save_trace = TRACE_ORDINARY | TRACE_CALLS;
extern int _nc_tracing;
#endif
@@ -100,13 +100,13 @@ extern int _nc_tracing;
#define mmask_t chtype /* not specified in XSI */
#define attr_t chtype /* not specified in XSI */
-#define ACS_S3 (acs_map['p']) /* scan line 3 */
-#define ACS_S7 (acs_map['r']) /* scan line 7 */
-#define ACS_LEQUAL (acs_map['y']) /* less/equal */
-#define ACS_GEQUAL (acs_map['z']) /* greater/equal */
-#define ACS_PI (acs_map['{']) /* Pi */
-#define ACS_NEQUAL (acs_map['|']) /* not equal */
-#define ACS_STERLING (acs_map['}']) /* UK pound sign */
+#define ACS_S3 (acs_map['p']) /* scan line 3 */
+#define ACS_S7 (acs_map['r']) /* scan line 7 */
+#define ACS_LEQUAL (acs_map['y']) /* less/equal */
+#define ACS_GEQUAL (acs_map['z']) /* greater/equal */
+#define ACS_PI (acs_map['{']) /* Pi */
+#define ACS_NEQUAL (acs_map['|']) /* not equal */
+#define ACS_STERLING (acs_map['}']) /* UK pound sign */
#endif
@@ -117,118 +117,125 @@ extern int _nc_tracing;
#define QUIT CTRL('Q')
#define ESCAPE CTRL('[')
-#define BLANK ' ' /* this is the background character */
+#define BLANK ' ' /* this is the background character */
/* The behavior of mvhline, mvvline for negative/zero length is unspecified,
* though we can rely on negative x/y values to stop the macro.
*/
-static void do_h_line(int y, int x, chtype c, int to)
+static void
+do_h_line(int y, int x, chtype c, int to)
{
- if ((to) > (x))
- mvhline(y, x, c, (to) - (x));
+ if ((to) > (x))
+ mvhline(y, x, c, (to) - (x));
}
-static void do_v_line(int y, int x, chtype c, int to)
+static void
+do_v_line(int y, int x, chtype c, int to)
{
- if ((to) > (y))
- mvvline(y, x, c, (to) - (y));
+ if ((to) > (y))
+ mvvline(y, x, c, (to) - (y));
}
/* Common function to allow ^T to toggle trace-mode in the middle of a test
* so that trace-files can be made smaller.
*/
-static int wGetchar(WINDOW *win)
+static int
+wGetchar(WINDOW *win)
{
- int c;
+ int c;
#ifdef TRACE
- while ((c = wgetch(win)) == CTRL('T')) {
- if (_nc_tracing) {
- save_trace = _nc_tracing;
- _tracef("TOGGLE-TRACING OFF");
- _nc_tracing = 0;
- } else {
- _nc_tracing = save_trace;
- }
- trace(_nc_tracing);
- if (_nc_tracing)
- _tracef("TOGGLE-TRACING ON");
+ while ((c = wgetch(win)) == CTRL('T')) {
+ if (_nc_tracing) {
+ save_trace = _nc_tracing;
+ _tracef("TOGGLE-TRACING OFF");
+ _nc_tracing = 0;
+ } else {
+ _nc_tracing = save_trace;
}
+ trace(_nc_tracing);
+ if (_nc_tracing)
+ _tracef("TOGGLE-TRACING ON");
+ }
#else
- c = wgetch(win);
+ c = wgetch(win);
#endif
- return c;
+ return c;
}
#define Getchar() wGetchar(stdscr)
-static void Pause(void)
+static void
+Pause(void)
{
- move(LINES - 1, 0);
- addstr("Press any key to continue... ");
- (void) Getchar();
+ move(LINES - 1, 0);
+ addstr("Press any key to continue... ");
+ (void) Getchar();
}
-static void Cannot(const char *what)
+static void
+Cannot(const char *what)
{
- printw("\nThis %s terminal %s\n\n", getenv("TERM"), what);
- Pause();
+ printw("\nThis %s terminal %s\n\n", getenv("TERM"), what);
+ Pause();
}
-static void ShellOut(bool message)
+static void
+ShellOut(bool message)
{
- if (message)
- addstr("Shelling out...");
- def_prog_mode();
- endwin();
- system("sh");
- if (message)
- addstr("returned from shellout.\n");
- refresh();
+ if (message)
+ addstr("Shelling out...");
+ def_prog_mode();
+ endwin();
+ system("sh");
+ if (message)
+ addstr("returned from shellout.\n");
+ refresh();
}
#ifdef NCURSES_MOUSE_VERSION
-static const char *mouse_decode(MEVENT const *ep)
+static const char *
+mouse_decode(MEVENT const *ep)
{
- static char buf[80];
+ static char buf[80];
- (void) sprintf(buf, "id %2d at (%2d, %2d, %2d) state %4lx = {",
- ep->id, ep->x, ep->y, ep->z, ep->bstate);
+ (void) sprintf(buf, "id %2d at (%2d, %2d, %2d) state %4lx = {",
+ ep->id, ep->x, ep->y, ep->z, ep->bstate);
#define SHOW(m, s) if ((ep->bstate & m)==m) {strcat(buf,s); strcat(buf, ", ");}
- SHOW(BUTTON1_RELEASED, "release-1")
- SHOW(BUTTON1_PRESSED, "press-1")
- SHOW(BUTTON1_CLICKED, "click-1")
- SHOW(BUTTON1_DOUBLE_CLICKED, "doubleclick-1")
- SHOW(BUTTON1_TRIPLE_CLICKED, "tripleclick-1")
- SHOW(BUTTON1_RESERVED_EVENT, "reserved-1")
- SHOW(BUTTON2_RELEASED, "release-2")
- SHOW(BUTTON2_PRESSED, "press-2")
- SHOW(BUTTON2_CLICKED, "click-2")
- SHOW(BUTTON2_DOUBLE_CLICKED, "doubleclick-2")
- SHOW(BUTTON2_TRIPLE_CLICKED, "tripleclick-2")
- SHOW(BUTTON2_RESERVED_EVENT, "reserved-2")
- SHOW(BUTTON3_RELEASED, "release-3")
- SHOW(BUTTON3_PRESSED, "press-3")
- SHOW(BUTTON3_CLICKED, "click-3")
- SHOW(BUTTON3_DOUBLE_CLICKED, "doubleclick-3")
- SHOW(BUTTON3_TRIPLE_CLICKED, "tripleclick-3")
- SHOW(BUTTON3_RESERVED_EVENT, "reserved-3")
- SHOW(BUTTON4_RELEASED, "release-4")
- SHOW(BUTTON4_PRESSED, "press-4")
- SHOW(BUTTON4_CLICKED, "click-4")
- SHOW(BUTTON4_DOUBLE_CLICKED, "doubleclick-4")
- SHOW(BUTTON4_TRIPLE_CLICKED, "tripleclick-4")
- SHOW(BUTTON4_RESERVED_EVENT, "reserved-4")
- SHOW(BUTTON_CTRL, "ctrl")
- SHOW(BUTTON_SHIFT, "shift")
- SHOW(BUTTON_ALT, "alt")
- SHOW(ALL_MOUSE_EVENTS, "all-events")
- SHOW(REPORT_MOUSE_POSITION, "position")
+ SHOW(BUTTON1_RELEASED, "release-1");
+ SHOW(BUTTON1_PRESSED, "press-1");
+ SHOW(BUTTON1_CLICKED, "click-1");
+ SHOW(BUTTON1_DOUBLE_CLICKED, "doubleclick-1");
+ SHOW(BUTTON1_TRIPLE_CLICKED, "tripleclick-1");
+ SHOW(BUTTON1_RESERVED_EVENT, "reserved-1");
+ SHOW(BUTTON2_RELEASED, "release-2");
+ SHOW(BUTTON2_PRESSED, "press-2");
+ SHOW(BUTTON2_CLICKED, "click-2");
+ SHOW(BUTTON2_DOUBLE_CLICKED, "doubleclick-2");
+ SHOW(BUTTON2_TRIPLE_CLICKED, "tripleclick-2");
+ SHOW(BUTTON2_RESERVED_EVENT, "reserved-2");
+ SHOW(BUTTON3_RELEASED, "release-3");
+ SHOW(BUTTON3_PRESSED, "press-3");
+ SHOW(BUTTON3_CLICKED, "click-3");
+ SHOW(BUTTON3_DOUBLE_CLICKED, "doubleclick-3");
+ SHOW(BUTTON3_TRIPLE_CLICKED, "tripleclick-3");
+ SHOW(BUTTON3_RESERVED_EVENT, "reserved-3");
+ SHOW(BUTTON4_RELEASED, "release-4");
+ SHOW(BUTTON4_PRESSED, "press-4");
+ SHOW(BUTTON4_CLICKED, "click-4");
+ SHOW(BUTTON4_DOUBLE_CLICKED, "doubleclick-4");
+ SHOW(BUTTON4_TRIPLE_CLICKED, "tripleclick-4");
+ SHOW(BUTTON4_RESERVED_EVENT, "reserved-4");
+ SHOW(BUTTON_CTRL, "ctrl");
+ SHOW(BUTTON_SHIFT, "shift");
+ SHOW(BUTTON_ALT, "alt");
+ SHOW(ALL_MOUSE_EVENTS, "all-events");
+ SHOW(REPORT_MOUSE_POSITION, "position");
#undef SHOW
- if (buf[strlen(buf)-1] == ' ')
- buf[strlen(buf)-2] = '\0';
- (void) strcat(buf, "}");
- return(buf);
+ if (buf[strlen(buf) - 1] == ' ')
+ buf[strlen(buf) - 2] = '\0';
+ (void) strcat(buf, "}");
+ return (buf);
}
#endif /* NCURSES_MOUSE_VERSION */
@@ -238,19 +245,20 @@ static const char *mouse_decode(MEVENT const *ep)
*
****************************************************************************/
-static void getch_test(void)
+static void
+getch_test(void)
/* test the keypad feature */
{
-char buf[BUFSIZ];
-int c;
-int incount = 0, firsttime = 0;
-bool blocking = TRUE;
-int y, x;
+ char buf[BUFSIZ];
+ int c;
+ int incount = 0, firsttime = 0;
+ bool blocking = TRUE;
+ int y, x;
refresh();
#ifdef NCURSES_MOUSE_VERSION
- mousemask(ALL_MOUSE_EVENTS, (mmask_t *)0);
+ mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0);
#endif
(void) printw("Delay in 10ths of a second (<CR> for blocking input)? ");
@@ -259,70 +267,59 @@ int y, x;
noecho();
nonl();
- if (isdigit(buf[0]))
- {
+ if (isdigit(buf[0])) {
timeout(atoi(buf) * 100);
blocking = FALSE;
}
c = '?';
raw();
- for (;;)
- {
- if (firsttime++)
- {
+ for (;;) {
+ if (firsttime++) {
printw("Key pressed: %04o ", c);
#ifdef NCURSES_MOUSE_VERSION
- if (c == KEY_MOUSE)
- {
- MEVENT event;
+ if (c == KEY_MOUSE) {
+ MEVENT event;
getmouse(&event);
printw("KEY_MOUSE, %s\n", mouse_decode(&event));
- }
- else
-#endif /* NCURSES_MOUSE_VERSION */
- if (c >= KEY_MIN)
- {
+ } else
+#endif /* NCURSES_MOUSE_VERSION */
+ if (c >= KEY_MIN) {
(void) addstr(keyname(c));
addch('\n');
- }
- else if (c > 0x80)
- {
+ } else if (c > 0x80) {
int c2 = (c & 0x7f);
if (isprint(c2))
(void) printw("M-%c", c2);
else
(void) printw("M-%s", unctrl(c2));
addstr(" (high-half character)\n");
- }
- else
- {
+ } else {
if (isprint(c))
(void) printw("%c (ASCII printable character)\n", c);
else
(void) printw("%s (ASCII control character)\n", unctrl(c));
}
getyx(stdscr, y, x);
- if (y >= LINES-1)
- move(0,0);
+ if (y >= LINES - 1)
+ move(0, 0);
clrtoeol();
}
- if (c == 'g')
- {
+ if (c == 'g') {
addstr("getstr test: ");
- echo(); getstr(buf); noecho();
+ echo();
+ getstr(buf);
+ noecho();
printw("I saw `%s'.\n", buf);
}
- if (c == 's')
- {
+ if (c == 's') {
ShellOut(TRUE);
}
if (c == 'x' || c == 'q' || (c == ERR && blocking))
break;
- if (c == '?')
- {
+ if (c == '?') {
addstr("Type any key to see its keypad value. Also:\n");
addstr("g -- triggers a getstr test\n");
addstr("s -- shell out\n");
@@ -335,12 +332,12 @@ int y, x;
(void) printw("%05d: input timed out\n", incount++);
else {
(void) printw("%05d: input error\n", incount++);
- break;
+ break;
}
}
#ifdef NCURSES_MOUSE_VERSION
- mousemask(0, (mmask_t *)0);
+ mousemask(0, (mmask_t *) 0);
#endif
timeout(-1);
erase();
@@ -349,27 +346,31 @@ int y, x;
endwin();
}
-static int show_attr(int row, int skip, chtype attr, const char *name, bool once)
+static int
+show_attr(int row, int skip, chtype attr, const char *name, bool once)
{
int ncv = tigetnum("ncv");
mvprintw(row, 8, "%s mode:", name);
mvprintw(row, 24, "|");
- if (skip) printw("%*s", skip, " ");
+ if (skip)
+ printw("%*s", skip, " ");
if (once)
attron(attr);
else
- attrset(attr);
+ attrset(attr);
addstr("abcde fghij klmno pqrst uvwxy z");
if (once)
attroff(attr);
- if (skip) printw("%*s", skip, " ");
+ if (skip)
+ printw("%*s", skip, " ");
printw("|");
if (attr != A_NORMAL) {
if (!(termattrs() & attr)) {
printw(" (N/A)");
} else if (ncv > 0 && (getbkgd(stdscr) & A_COLOR)) {
- static const attr_t table[] = {
+ static const attr_t table[] =
+ {
A_STANDOUT,
A_UNDERLINE,
A_REVERSE,
@@ -382,9 +383,9 @@ static int show_attr(int row, int skip, chtype attr, const char *name, bool once
};
unsigned n;
bool found = FALSE;
- for (n = 0; n < sizeof(table)/sizeof(table[0]); n++) {
+ for (n = 0; n < sizeof(table) / sizeof(table[0]); n++) {
if ((table[n] & attr) != 0
- && ((1 << n) & ncv) != 0) {
+ && ((1 << n) & ncv) != 0) {
found = TRUE;
break;
}
@@ -396,7 +397,8 @@ static int show_attr(int row, int skip, chtype attr, const char *name, bool once
return row + 2;
}
-static bool attr_getc(int *skip, int *fg, int *bg)
+static bool
+attr_getc(int *skip, int *fg, int *bg)
{
int ch = Getchar();
@@ -409,36 +411,49 @@ static bool attr_getc(int *skip, int *fg, int *bg)
return TRUE;
} else if (has_colors()) {
switch (ch) {
- case 'f': *fg = (*fg + 1); break;
- case 'F': *fg = (*fg - 1); break;
- case 'b': *bg = (*bg + 1); break;
- case 'B': *bg = (*bg - 1); break;
+ case 'f':
+ *fg = (*fg + 1);
+ break;
+ case 'F':
+ *fg = (*fg - 1);
+ break;
+ case 'b':
+ *bg = (*bg + 1);
+ break;
+ case 'B':
+ *bg = (*bg - 1);
+ break;
default:
return FALSE;
}
- if (*fg >= COLORS) *fg = 0;
- if (*fg < 0) *fg = COLORS - 1;
- if (*bg >= COLORS) *bg = 0;
- if (*bg < 0) *bg = COLORS - 1;
+ if (*fg >= COLORS)
+ *fg = 0;
+ if (*fg < 0)
+ *fg = COLORS - 1;
+ if (*bg >= COLORS)
+ *bg = 0;
+ if (*bg < 0)
+ *bg = COLORS - 1;
return TRUE;
}
return FALSE;
}
-static void attr_test(void)
+static void
+attr_test(void)
/* test text attributes */
{
int n;
int skip = tigetnum("xmc");
int fg = COLOR_BLACK; /* color pair 0 is special */
int bg = COLOR_BLACK;
- bool *pairs = (bool *)calloc(COLOR_PAIRS, sizeof(bool));
+ bool *pairs = (bool *) calloc(COLOR_PAIRS, sizeof(bool));
pairs[0] = TRUE;
if (skip < 0)
- skip = 0;
+ skip = 0;
- n = skip; /* make it easy */
+ n = skip; /* make it easy */
do {
int row = 2;
@@ -447,7 +462,7 @@ static void attr_test(void)
if (has_colors()) {
int pair = (fg * COLORS) + bg;
if (!pairs[pair]) {
- init_pair(pair, fg, bg);
+ init_pair(pair, fg, bg);
pairs[pair] = TRUE;
}
normal |= COLOR_PAIR(pair);
@@ -457,30 +472,30 @@ static void attr_test(void)
mvaddstr(0, 20, "Character attribute test display");
- row = show_attr(row, n, A_STANDOUT, "STANDOUT", TRUE);
- row = show_attr(row, n, A_REVERSE, "REVERSE", TRUE);
- row = show_attr(row, n, A_BOLD, "BOLD", TRUE);
+ row = show_attr(row, n, A_STANDOUT, "STANDOUT", TRUE);
+ row = show_attr(row, n, A_REVERSE, "REVERSE", TRUE);
+ row = show_attr(row, n, A_BOLD, "BOLD", TRUE);
row = show_attr(row, n, A_UNDERLINE, "UNDERLINE", TRUE);
- row = show_attr(row, n, A_DIM, "DIM", TRUE);
- row = show_attr(row, n, A_BLINK, "BLINK", TRUE);
- row = show_attr(row, n, A_PROTECT, "PROTECT", TRUE);
- row = show_attr(row, n, A_INVIS, "INVISIBLE", TRUE);
- row = show_attr(row, n, A_NORMAL, "NORMAL", FALSE);
+ row = show_attr(row, n, A_DIM, "DIM", TRUE);
+ row = show_attr(row, n, A_BLINK, "BLINK", TRUE);
+ row = show_attr(row, n, A_PROTECT, "PROTECT", TRUE);
+ row = show_attr(row, n, A_INVIS, "INVISIBLE", TRUE);
+ row = show_attr(row, n, A_NORMAL, "NORMAL", FALSE);
mvprintw(row, 8,
- "This terminal does %shave the magic-cookie glitch",
- tigetnum("xmc") > -1 ? "" : "not ");
- mvprintw(row+1, 8,
- "Enter a digit to set gaps on each side of displayed attributes");
- mvprintw(row+2, 8,
- "^L = repaint");
+ "This terminal does %shave the magic-cookie glitch",
+ tigetnum("xmc") > -1 ? "" : "not ");
+ mvprintw(row + 1, 8,
+ "Enter a digit to set gaps on each side of displayed attributes");
+ mvprintw(row + 2, 8,
+ "^L = repaint");
if (has_colors())
printw(". f/F/b/F toggle colors (now %d/%d)", fg, bg);
- refresh();
+ refresh();
} while (attr_getc(&n, &fg, &bg));
- free((char *)pairs);
+ free((char *) pairs);
bkgdset(A_NORMAL | BLANK);
erase();
endwin();
@@ -501,10 +516,19 @@ static NCURSES_CONST char *color_names[] =
"blue",
"magenta",
"cyan",
- "white"
+ "white",
+ "BLACK",
+ "RED",
+ "GREEN",
+ "YELLOW",
+ "BLUE",
+ "MAGENTA",
+ "CYAN",
+ "WHITE"
};
-static void show_color_name(int y, int x, int color)
+static void
+show_color_name(int y, int x, int color)
{
if (COLORS > 8)
mvprintw(y, x, "%02d ", color);
@@ -512,7 +536,8 @@ static void show_color_name(int y, int x, int color)
mvaddstr(y, x, color_names[color]);
}
-static void color_test(void)
+static void
+color_test(void)
/* generate a color test pattern */
{
int i;
@@ -525,24 +550,22 @@ static void color_test(void)
width = (COLORS > 8) ? 4 : 8;
hello = (COLORS > 8) ? "Test" : "Hello";
- for (base = 0; base < 2; base++)
- {
- top = (COLORS > 8) ? 0 : base * (COLORS+3);
+ for (base = 0; base < 2; base++) {
+ top = (COLORS > 8) ? 0 : base * (COLORS + 3);
clrtobot();
(void) mvprintw(top + 1, 0,
- "%dx%d matrix of foreground/background colors, bright *%s*\n",
- COLORS, COLORS,
- base ? "on" : "off");
+ "%dx%d matrix of foreground/background colors, bright *%s*\n",
+ COLORS, COLORS,
+ base ? "on" : "off");
for (i = 0; i < COLORS; i++)
- show_color_name(top + 2, (i+1) * width, i);
+ show_color_name(top + 2, (i + 1) * width, i);
for (i = 0; i < COLORS; i++)
show_color_name(top + 3 + i, 0, i);
- for (i = 1; i < COLOR_PAIRS; i++)
- {
+ for (i = 1; i < COLOR_PAIRS; i++) {
init_pair(i, i % COLORS, i / COLORS);
- attron((attr_t)COLOR_PAIR(i));
+ attron((attr_t) COLOR_PAIR(i));
if (base)
- attron((attr_t)A_BOLD);
+ attron((attr_t) A_BOLD);
mvaddstr(top + 3 + (i / COLORS), (i % COLORS + 1) * width, hello);
attrset(A_NORMAL);
}
@@ -554,57 +577,59 @@ static void color_test(void)
endwin();
}
-static void change_color(int current, int field, int value, int usebase)
+static void
+change_color(int current, int field, int value, int usebase)
{
- short red, green, blue;
+ short red, green, blue;
- if (usebase)
- color_content(current, &red, &green, &blue);
- else
- red = green = blue = 0;
+ if (usebase)
+ color_content(current, &red, &green, &blue);
+ else
+ red = green = blue = 0;
- switch (field) {
- case 0:
- red += value;
- break;
- case 1:
- green += value;
- break;
- case 2:
- blue += value;
- break;
- }
+ switch (field) {
+ case 0:
+ red += value;
+ break;
+ case 1:
+ green += value;
+ break;
+ case 2:
+ blue += value;
+ break;
+ }
- if (init_color(current, red, green, blue) == ERR)
- beep();
+ if (init_color(current, red, green, blue) == ERR)
+ beep();
}
-static void color_edit(void)
+static void
+color_edit(void)
/* display the color test pattern, without trying to edit colors */
{
- int i, this_c = 0, value = 0, current = 0, field = 0;
+ int i, this_c = 0, value = 0, current = 0, field = 0;
int last_c;
+ int max_colors = COLORS > 16 ? 16 : COLORS;
refresh();
- for (i = 0; i < COLORS; i++)
+ for (i = 0; i < max_colors; i++)
init_pair(i, COLOR_WHITE, i);
- mvprintw(LINES-2, 0, "Number: %d", value);
+ mvprintw(LINES - 2, 0, "Number: %d", value);
do {
- short red, green, blue;
+ short red, green, blue;
attron(A_BOLD);
mvaddstr(0, 20, "Color RGB Value Editing");
attroff(A_BOLD);
- for (i = 0; i < COLORS; i++)
- {
+ for (i = 0; i < max_colors; i++) {
mvprintw(2 + i, 0, "%c %-8s:",
- (i == current ? '>' : ' '),
- (i < (int) SIZEOF(color_names)
- ? color_names[i] : ""));
+ (i == current ? '>' : ' '),
+ (i < (int) SIZEOF(color_names)
+ ? color_names[i] : ""));
attrset(COLOR_PAIR(i));
addstr(" ");
attrset(A_NORMAL);
@@ -619,24 +644,30 @@ static void color_edit(void)
color_content(i, &red, &green, &blue);
addstr(" R = ");
- if (current == i && field == 0) attron(A_STANDOUT);
+ if (current == i && field == 0)
+ attron(A_STANDOUT);
printw("%04d", red);
- if (current == i && field == 0) attrset(A_NORMAL);
+ if (current == i && field == 0)
+ attrset(A_NORMAL);
addstr(", G = ");
- if (current == i && field == 1) attron(A_STANDOUT);
+ if (current == i && field == 1)
+ attron(A_STANDOUT);
printw("%04d", green);
- if (current == i && field == 1) attrset(A_NORMAL);
+ if (current == i && field == 1)
+ attrset(A_NORMAL);
addstr(", B = ");
- if (current == i && field == 2) attron(A_STANDOUT);
+ if (current == i && field == 2)
+ attron(A_STANDOUT);
printw("%04d", blue);
- if (current == i && field == 2) attrset(A_NORMAL);
+ if (current == i && field == 2)
+ attrset(A_NORMAL);
attrset(A_NORMAL);
addstr(")");
}
- mvaddstr(COLORS + 3, 0,
+ mvaddstr(max_colors + 3, 0,
"Use up/down to select a color, left/right to change fields.");
- mvaddstr(COLORS + 4, 0,
+ mvaddstr(max_colors + 4, 0,
"Modify field by typing nnn=, nnn-, or nnn+. ? for help.");
move(2 + current, 0);
@@ -644,16 +675,15 @@ static void color_edit(void)
last_c = this_c;
this_c = Getchar();
if (isdigit(this_c) && !isdigit(last_c))
- value = 0;
+ value = 0;
- switch (this_c)
- {
+ switch (this_c) {
case KEY_UP:
- current = (current == 0 ? (COLORS - 1) : current - 1);
+ current = (current == 0 ? (max_colors - 1) : current - 1);
break;
case KEY_DOWN:
- current = (current == (COLORS - 1) ? 0 : current + 1);
+ current = (current == (max_colors - 1) ? 0 : current + 1);
break;
case KEY_RIGHT:
@@ -664,8 +694,16 @@ static void color_edit(void)
field = (field == 0 ? 2 : field - 1);
break;
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
value = value * 10 + (this_c - '0');
break;
@@ -683,18 +721,18 @@ static void color_edit(void)
case '?':
erase();
- P(" RGB Value Editing Help");
- P("");
- P("You are in the RGB value editor. Use the arrow keys to select one of");
- P("the fields in one of the RGB triples of the current colors; the one");
- P("currently selected will be reverse-video highlighted.");
- P("");
- P("To change a field, enter the digits of the new value; they are echoed");
- P("as entered. Finish by typing `='. The change will take effect instantly.");
- P("To increment or decrement a value, use the same procedure, but finish");
- P("with a `+' or `-'.");
- P("");
- P("To quit, do `x' or 'q'");
+ P(" RGB Value Editing Help");
+ P("");
+ P("You are in the RGB value editor. Use the arrow keys to select one of");
+ P("the fields in one of the RGB triples of the current colors; the one");
+ P("currently selected will be reverse-video highlighted.");
+ P("");
+ P("To change a field, enter the digits of the new value; they are echoed");
+ P("as entered. Finish by typing `='. The change will take effect instantly.");
+ P("To increment or decrement a value, use the same procedure, but finish");
+ P("with a `+' or `-'.");
+ P("");
+ P("To quit, do `x' or 'q'");
Pause();
erase();
@@ -708,7 +746,7 @@ static void color_edit(void)
beep();
break;
}
- mvprintw(LINES-2, 0, "Number: %d", value);
+ mvprintw(LINES - 2, 0, "Number: %d", value);
clrtoeol();
} while
(this_c != 'x' && this_c != 'q');
@@ -723,17 +761,17 @@ static void color_edit(void)
*
****************************************************************************/
-static void slk_test(void)
+static void
+slk_test(void)
/* exercise the soft keys */
{
- int c, fmt = 1;
+ int c, fmt = 1;
char buf[9];
c = CTRL('l');
do {
move(0, 0);
- switch(c)
- {
+ switch (c) {
case CTRL('l'):
erase();
attron(A_BOLD);
@@ -772,7 +810,7 @@ static void slk_test(void)
case 's':
mvprintw(20, 0, "Press Q to stop the scrolling-test: ");
while ((c = Getchar()) != 'Q' && (c != ERR))
- addch((chtype)c);
+ addch((chtype) c);
break;
case 'd':
@@ -791,15 +829,22 @@ static void slk_test(void)
fmt = 2;
break;
- case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
(void) mvaddstr(20, 0, "Please enter the label value: ");
echo();
wgetnstr(stdscr, buf, 8);
noecho();
slk_set((c - '0'), buf, fmt);
slk_refresh();
- move(20, 0); clrtoeol();
+ move(20, 0);
+ clrtoeol();
break;
case 'x':
@@ -812,7 +857,7 @@ static void slk_test(void)
} while
((c = Getchar()) != EOF);
- done:
+ done:
erase();
endwin();
}
@@ -826,121 +871,127 @@ static void slk_test(void)
/* ISO 6429: codes 0x80 to 0x9f may be control characters that cause the
* terminal to perform functions. The remaining codes can be graphic.
*/
-static void show_upper_chars(int first)
+static void
+show_upper_chars(int first)
{
- bool C1 = (first == 128);
- int code;
- int last = first + 31;
- int reply;
+ bool C1 = (first == 128);
+ int code;
+ int last = first + 31;
+ int reply;
- erase();
- attron(A_BOLD);
- mvprintw(0, 20, "Display of %s Character Codes %d to %d",
- C1 ? "C1" : "GR", first, last);
- attroff(A_BOLD);
- refresh();
+ erase();
+ attron(A_BOLD);
+ mvprintw(0, 20, "Display of %s Character Codes %d to %d",
+ C1 ? "C1" : "GR", first, last);
+ attroff(A_BOLD);
+ refresh();
- for (code = first; code <= last; code++) {
- int row = 4 + ((code - first) % 16);
- int col = ((code - first) / 16) * COLS / 2;
- char tmp[80];
- sprintf(tmp, "%3d (0x%x)", code, code);
- mvprintw(row, col, "%*s: ", COLS/4, tmp);
- if (C1)
- nodelay(stdscr, TRUE);
- echochar(code);
- if (C1) {
- /* (yes, this _is_ crude) */
- while ((reply = Getchar()) != ERR) {
- addch(reply);
- napms(10);
- }
- nodelay(stdscr, FALSE);
- }
+ for (code = first; code <= last; code++) {
+ int row = 4 + ((code - first) % 16);
+ int col = ((code - first) / 16) * COLS / 2;
+ char tmp[80];
+ sprintf(tmp, "%3d (0x%x)", code, code);
+ mvprintw(row, col, "%*s: ", COLS / 4, tmp);
+ if (C1)
+ nodelay(stdscr, TRUE);
+ echochar(code);
+ if (C1) {
+ /* (yes, this _is_ crude) */
+ while ((reply = Getchar()) != ERR) {
+ addch(reply);
+ napms(10);
+ }
+ nodelay(stdscr, FALSE);
}
+ }
}
-static int show_1_acs(int n, const char *name, chtype code)
+static int
+show_1_acs(int n, const char *name, chtype code)
{
- const int height = 16;
- int row = 4 + (n % height);
- int col = (n / height) * COLS / 2;
- mvprintw(row, col, "%*s : ", COLS/4, name);
- addch(code);
- return n + 1;
+ const int height = 16;
+ int row = 4 + (n % height);
+ int col = (n / height) * COLS / 2;
+ mvprintw(row, col, "%*s : ", COLS / 4, name);
+ addch(code);
+ return n + 1;
}
-static void show_acs_chars(void)
+static void
+show_acs_chars(void)
/* display the ACS character set */
{
- int n;
+ int n;
#define BOTH(name) #name, name
- erase();
- attron(A_BOLD);
- mvaddstr(0, 20, "Display of the ACS Character Set");
- attroff(A_BOLD);
- refresh();
+ erase();
+ attron(A_BOLD);
+ mvaddstr(0, 20, "Display of the ACS Character Set");
+ attroff(A_BOLD);
+ refresh();
- n = show_1_acs(0, BOTH(ACS_ULCORNER));
- n = show_1_acs(n, BOTH(ACS_LLCORNER));
- n = show_1_acs(n, BOTH(ACS_URCORNER));
- n = show_1_acs(n, BOTH(ACS_LRCORNER));
- n = show_1_acs(n, BOTH(ACS_RTEE));
- n = show_1_acs(n, BOTH(ACS_LTEE));
- n = show_1_acs(n, BOTH(ACS_BTEE));
- n = show_1_acs(n, BOTH(ACS_TTEE));
- n = show_1_acs(n, BOTH(ACS_HLINE));
- n = show_1_acs(n, BOTH(ACS_VLINE));
- n = show_1_acs(n, BOTH(ACS_PLUS));
- n = show_1_acs(n, BOTH(ACS_S1));
- n = show_1_acs(n, BOTH(ACS_S9));
- n = show_1_acs(n, BOTH(ACS_DIAMOND));
- n = show_1_acs(n, BOTH(ACS_CKBOARD));
- n = show_1_acs(n, BOTH(ACS_DEGREE));
- n = show_1_acs(n, BOTH(ACS_PLMINUS));
- n = show_1_acs(n, BOTH(ACS_BULLET));
- n = show_1_acs(n, BOTH(ACS_LARROW));
- n = show_1_acs(n, BOTH(ACS_RARROW));
- n = show_1_acs(n, BOTH(ACS_DARROW));
- n = show_1_acs(n, BOTH(ACS_UARROW));
- n = show_1_acs(n, BOTH(ACS_BOARD));
- n = show_1_acs(n, BOTH(ACS_LANTERN));
- n = show_1_acs(n, BOTH(ACS_BLOCK));
- n = show_1_acs(n, BOTH(ACS_S3));
- n = show_1_acs(n, BOTH(ACS_S7));
- n = show_1_acs(n, BOTH(ACS_LEQUAL));
- n = show_1_acs(n, BOTH(ACS_GEQUAL));
- n = show_1_acs(n, BOTH(ACS_PI));
- n = show_1_acs(n, BOTH(ACS_NEQUAL));
- n = show_1_acs(n, BOTH(ACS_STERLING));
-}
-
-static void acs_display(void)
-{
- int c = 'a';
-
- do {
- switch (c) {
- case 'a':
- show_acs_chars();
- break;
- case '0':
- case '1':
- case '2':
- case '3':
- show_upper_chars((c - '0') * 32 + 128);
- break;
- }
- mvprintw(LINES-3,0, "Note: ANSI terminals may not display C1 characters.");
- mvprintw(LINES-2,0, "Select: a=ACS, 0=C1, 1,2,3=GR characters, q=quit");
- refresh();
- } while ((c = Getchar()) != 'x' && c != 'q');
+ n = show_1_acs(0, BOTH(ACS_ULCORNER));
+ n = show_1_acs(n, BOTH(ACS_LLCORNER));
+ n = show_1_acs(n, BOTH(ACS_URCORNER));
+ n = show_1_acs(n, BOTH(ACS_LRCORNER));
+ n = show_1_acs(n, BOTH(ACS_RTEE));
+ n = show_1_acs(n, BOTH(ACS_LTEE));
+ n = show_1_acs(n, BOTH(ACS_BTEE));
+ n = show_1_acs(n, BOTH(ACS_TTEE));
+ n = show_1_acs(n, BOTH(ACS_HLINE));
+ n = show_1_acs(n, BOTH(ACS_VLINE));
+ n = show_1_acs(n, BOTH(ACS_PLUS));
+ n = show_1_acs(n, BOTH(ACS_S1));
+ n = show_1_acs(n, BOTH(ACS_S9));
+ n = show_1_acs(n, BOTH(ACS_DIAMOND));
+ n = show_1_acs(n, BOTH(ACS_CKBOARD));
+ n = show_1_acs(n, BOTH(ACS_DEGREE));
+ n = show_1_acs(n, BOTH(ACS_PLMINUS));
+ n = show_1_acs(n, BOTH(ACS_BULLET));
+ n = show_1_acs(n, BOTH(ACS_LARROW));
+ n = show_1_acs(n, BOTH(ACS_RARROW));
+ n = show_1_acs(n, BOTH(ACS_DARROW));
+ n = show_1_acs(n, BOTH(ACS_UARROW));
+ n = show_1_acs(n, BOTH(ACS_BOARD));
+ n = show_1_acs(n, BOTH(ACS_LANTERN));
+ n = show_1_acs(n, BOTH(ACS_BLOCK));
+ n = show_1_acs(n, BOTH(ACS_S3));
+ n = show_1_acs(n, BOTH(ACS_S7));
+ n = show_1_acs(n, BOTH(ACS_LEQUAL));
+ n = show_1_acs(n, BOTH(ACS_GEQUAL));
+ n = show_1_acs(n, BOTH(ACS_PI));
+ n = show_1_acs(n, BOTH(ACS_NEQUAL));
+ n = show_1_acs(n, BOTH(ACS_STERLING));
+}
- Pause();
- erase();
- endwin();
+static void
+acs_display(void)
+{
+ int c = 'a';
+
+ do {
+ switch (c) {
+ case 'a':
+ show_acs_chars();
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ show_upper_chars((c - '0') * 32 + 128);
+ break;
+ }
+ mvprintw(LINES - 3, 0,
+ "Note: ANSI terminals may not display C1 characters.");
+ mvprintw(LINES - 2, 0,
+ "Select: a=ACS, 0=C1, 1,2,3=GR characters, q=quit");
+ refresh();
+ } while ((c = Getchar()) != 'x' && c != 'q');
+
+ Pause();
+ erase();
+ endwin();
}
/*
@@ -961,58 +1012,59 @@ test_sgr_attributes(void)
}
bkgdset(normal);
erase();
- mvprintw( 1,20, "Graphic rendition test pattern:");
+ mvprintw(1, 20, "Graphic rendition test pattern:");
- mvprintw( 4, 1, "vanilla");
+ mvprintw(4, 1, "vanilla");
#define set_sgr(mask) bkgdset((normal^(mask)));
set_sgr(A_BOLD);
- mvprintw( 4,40, "bold");
+ mvprintw(4, 40, "bold");
set_sgr(A_UNDERLINE);
- mvprintw( 6, 6, "underline");
+ mvprintw(6, 6, "underline");
- set_sgr(A_BOLD|A_UNDERLINE);
- mvprintw( 6,45, "bold underline");
+ set_sgr(A_BOLD | A_UNDERLINE);
+ mvprintw(6, 45, "bold underline");
set_sgr(A_BLINK);
- mvprintw( 8, 1, "blink");
+ mvprintw(8, 1, "blink");
- set_sgr(A_BLINK|A_BOLD);
- mvprintw( 8,40, "bold blink");
+ set_sgr(A_BLINK | A_BOLD);
+ mvprintw(8, 40, "bold blink");
- set_sgr(A_UNDERLINE|A_BLINK);
+ set_sgr(A_UNDERLINE | A_BLINK);
mvprintw(10, 6, "underline blink");
- set_sgr(A_BOLD|A_UNDERLINE|A_BLINK);
- mvprintw(10,45, "bold underline blink");
+ set_sgr(A_BOLD | A_UNDERLINE | A_BLINK);
+ mvprintw(10, 45, "bold underline blink");
set_sgr(A_REVERSE);
mvprintw(12, 1, "negative");
- set_sgr(A_BOLD|A_REVERSE);
- mvprintw(12,40, "bold negative");
+ set_sgr(A_BOLD | A_REVERSE);
+ mvprintw(12, 40, "bold negative");
- set_sgr(A_UNDERLINE|A_REVERSE);
+ set_sgr(A_UNDERLINE | A_REVERSE);
mvprintw(14, 6, "underline negative");
- set_sgr(A_BOLD|A_UNDERLINE|A_REVERSE);
- mvprintw(14,45, "bold underline negative");
+ set_sgr(A_BOLD | A_UNDERLINE | A_REVERSE);
+ mvprintw(14, 45, "bold underline negative");
- set_sgr(A_BLINK|A_REVERSE);
+ set_sgr(A_BLINK | A_REVERSE);
mvprintw(16, 1, "blink negative");
- set_sgr(A_BOLD|A_BLINK|A_REVERSE);
- mvprintw(16,40, "bold blink negative");
+ set_sgr(A_BOLD | A_BLINK | A_REVERSE);
+ mvprintw(16, 40, "bold blink negative");
- set_sgr(A_UNDERLINE|A_BLINK|A_REVERSE);
+ set_sgr(A_UNDERLINE | A_BLINK | A_REVERSE);
mvprintw(18, 6, "underline blink negative");
- set_sgr(A_BOLD|A_UNDERLINE|A_BLINK|A_REVERSE);
- mvprintw(18,45, "bold underline blink negative");
+ set_sgr(A_BOLD | A_UNDERLINE | A_BLINK | A_REVERSE);
+ mvprintw(18, 45, "bold underline blink negative");
bkgdset(normal);
- mvprintw(LINES-2,1, "%s background. ", pass == 0 ? "Dark" : "Light");
+ mvprintw(LINES - 2, 1, "%s background. ", pass == 0 ? "Dark" :
+ "Light");
clrtoeol();
Pause();
}
@@ -1030,196 +1082,240 @@ test_sgr_attributes(void)
#define BOTLINES 4 /* number of line stolen from screen bottom */
-typedef struct
-{
+typedef struct {
int y, x;
-}
-pair;
+} pair;
#define FRAME struct frame
FRAME
{
- FRAME *next, *last;
- bool do_scroll;
- bool do_keypad;
- WINDOW *wind;
+ FRAME *next, *last;
+ bool do_scroll;
+ bool do_keypad;
+ WINDOW *wind;
};
/* We need to know if these flags are actually set, so don't look in FRAME.
* These names are known to work with SVr4 curses as well as ncurses.
*/
-static bool HaveKeypad(FRAME *curp)
+static bool
+HaveKeypad(FRAME * curp)
{
- WINDOW *win = (curp ? curp->wind : stdscr);
- return win->_use_keypad;
+ WINDOW *win = (curp ? curp->wind : stdscr);
+ return win->_use_keypad;
}
-static bool HaveScroll(FRAME *curp)
+static bool
+HaveScroll(FRAME * curp)
{
- WINDOW *win = (curp ? curp->wind : stdscr);
- return win->_scroll;
+ WINDOW *win = (curp ? curp->wind : stdscr);
+ return win->_scroll;
}
-static void newwin_legend(FRAME *curp)
+static void
+newwin_legend(FRAME * curp)
{
- static const struct {
- const char *msg;
- int code;
- } legend[] = {
- { "^C = create window", 0 },
- { "^N = next window", 0 },
- { "^P = previous window", 0 },
- { "^F = scroll forward", 0 },
- { "^B = scroll backward", 0 },
- { "^K = keypad(%s)", 1 },
- { "^S = scrollok(%s)", 2 },
- { "^W = save window to file", 0 },
- { "^R = restore window", 0 },
-#ifdef NCURSES_VERSION
- { "^X = resize", 0 },
+ static const struct {
+ const char *msg;
+ int code;
+ } legend[] = {
+ {
+ "^C = create window", 0
+ },
+ {
+ "^N = next window", 0
+ },
+ {
+ "^P = previous window", 0
+ },
+ {
+ "^F = scroll forward", 0
+ },
+ {
+ "^B = scroll backward", 0
+ },
+ {
+ "^K = keypad(%s)", 1
+ },
+ {
+ "^S = scrollok(%s)", 2
+ },
+ {
+ "^W = save window to file", 0
+ },
+ {
+ "^R = restore window", 0
+ },
+#ifdef HAVE_WRESIZE
+ {
+ "^X = resize", 0
+ },
#endif
- { "^Q%s = exit", 3 }
- };
- size_t n;
- int y, x;
- bool do_keypad = HaveKeypad(curp);
- bool do_scroll = HaveScroll(curp);
- char buf[BUFSIZ];
-
- move(LINES-4, 0);
- for (n = 0; n < SIZEOF(legend); n++) {
- switch (legend[n].code) {
- default:
- strcpy(buf, legend[n].msg);
- break;
- case 1:
- sprintf(buf, legend[n].msg, do_keypad ? "yes" : "no");
- break;
- case 2:
- sprintf(buf, legend[n].msg, do_scroll ? "yes" : "no");
- break;
- case 3:
- sprintf(buf, legend[n].msg, do_keypad ? "/ESC" : "");
- break;
- }
- getyx(stdscr, y, x);
- addstr((COLS < (x + 3 + (int)strlen(buf))) ? "\n" : (n ? ", " : ""));
- addstr(buf);
+ {
+ "^Q%s = exit", 3
}
- clrtoeol();
+ };
+ size_t n;
+ int y, x;
+ bool do_keypad = HaveKeypad(curp);
+ bool do_scroll = HaveScroll(curp);
+ char buf[BUFSIZ];
+
+ move(LINES - 4, 0);
+ for (n = 0; n < SIZEOF(legend); n++) {
+ switch (legend[n].code) {
+ default:
+ strcpy(buf, legend[n].msg);
+ break;
+ case 1:
+ sprintf(buf, legend[n].msg, do_keypad ? "yes" : "no");
+ break;
+ case 2:
+ sprintf(buf, legend[n].msg, do_scroll ? "yes" : "no");
+ break;
+ case 3:
+ sprintf(buf, legend[n].msg, do_keypad ? "/ESC" : "");
+ break;
+ }
+ getyx(stdscr, y, x);
+ addstr((COLS < (x + 3 + (int) strlen(buf))) ? "\n" : (n ? ", " : ""));
+ addstr(buf);
+ }
+ clrtoeol();
}
-static void transient(FRAME *curp, NCURSES_CONST char *msg)
+static void
+transient(FRAME * curp, NCURSES_CONST char *msg)
{
newwin_legend(curp);
- if (msg)
- {
+ if (msg) {
mvaddstr(LINES - 1, 0, msg);
refresh();
napms(1000);
}
- move(LINES-1, 0);
+ move(LINES - 1, 0);
printw("%s characters are echoed, window should %sscroll.",
HaveKeypad(curp) ? "Non-arrow" : "All other",
- HaveScroll(curp) ? "" : "not " );
+ HaveScroll(curp) ? "" : "not ");
clrtoeol();
}
-static void newwin_report(FRAME *curp)
+static void
+newwin_report(FRAME * curp)
/* report on the cursor's current position, then restore it */
{
- WINDOW *win = (curp != 0) ? curp->wind : stdscr;
- int y, x;
+ WINDOW *win = (curp != 0) ? curp->wind : stdscr;
+ int y, x;
- if (win != stdscr)
- transient(curp, (char *)0);
- getyx(win, y, x);
- move(LINES - 1, COLS - 17);
- printw("Y = %2d X = %2d", y, x);
- if (win != stdscr)
- refresh();
- else
- wmove(win, y, x);
+ if (win != stdscr)
+ transient(curp, (char *) 0);
+ getyx(win, y, x);
+ move(LINES - 1, COLS - 17);
+ printw("Y = %2d X = %2d", y, x);
+ if (win != stdscr)
+ refresh();
+ else
+ wmove(win, y, x);
}
-static pair *selectcell(int uli, int ulj, int lri, int lrj)
+static pair *
+selectcell(int uli, int ulj, int lri, int lrj)
/* arrows keys move cursor, return location at current on non-arrow key */
{
- static pair res; /* result cell */
- int si = lri - uli + 1; /* depth of the select area */
- int sj = lrj - ulj + 1; /* width of the select area */
- int i = 0, j = 0; /* offsets into the select area */
+ static pair res; /* result cell */
+ int si = lri - uli + 1; /* depth of the select area */
+ int sj = lrj - ulj + 1; /* width of the select area */
+ int i = 0, j = 0; /* offsets into the select area */
res.y = uli;
res.x = ulj;
- for (;;)
- {
+ for (;;) {
move(uli + i, ulj + j);
- newwin_report((FRAME *)0);
+ newwin_report((FRAME *) 0);
- switch(Getchar())
- {
- case KEY_UP: i += si - 1; break;
- case KEY_DOWN: i++; break;
- case KEY_LEFT: j += sj - 1; break;
- case KEY_RIGHT: j++; break;
+ switch (Getchar()) {
+ case KEY_UP:
+ i += si - 1;
+ break;
+ case KEY_DOWN:
+ i++;
+ break;
+ case KEY_LEFT:
+ j += sj - 1;
+ break;
+ case KEY_RIGHT:
+ j++;
+ break;
case QUIT:
- case ESCAPE: return((pair *)0);
+ case ESCAPE:
+ return ((pair *) 0);
#ifdef NCURSES_MOUSE_VERSION
case KEY_MOUSE:
{
- MEVENT event;
+ MEVENT event;
getmouse(&event);
if (event.y > uli && event.x > ulj) {
- i = event.y - uli;
- j = event.x - ulj;
+ i = event.y - uli;
+ j = event.x - ulj;
} else {
- beep();
- break;
+ beep();
+ break;
}
}
/* FALLTHRU */
#endif
- default: res.y = uli + i; res.x = ulj + j; return(&res);
+ default:
+ res.y = uli + i;
+ res.x = ulj + j;
+ return (&res);
}
i %= si;
j %= sj;
}
}
-static void outerbox(pair ul, pair lr, bool onoff)
+static void
+outerbox(pair ul, pair lr, bool onoff)
/* draw or erase a box *outside* the given pair of corners */
{
- mvaddch(ul.y-1, lr.x-1, onoff ? ACS_ULCORNER : ' ');
- mvaddch(ul.y-1, lr.x+1, onoff ? ACS_URCORNER : ' ');
- mvaddch(lr.y+1, lr.x+1, onoff ? ACS_LRCORNER : ' ');
- mvaddch(lr.y+1, ul.x-1, onoff ? ACS_LLCORNER : ' ');
- move(ul.y-1, ul.x); hline(onoff ? ACS_HLINE : ' ', lr.x - ul.x + 1);
- move(ul.y, ul.x-1); vline(onoff ? ACS_VLINE : ' ', lr.y - ul.y + 1);
- move(lr.y+1, ul.x); hline(onoff ? ACS_HLINE : ' ', lr.x - ul.x + 1);
- move(ul.y, lr.x+1); vline(onoff ? ACS_VLINE : ' ', lr.y - ul.y + 1);
-}
-
-static WINDOW *getwindow(void)
+ mvaddch(ul.y - 1, lr.x - 1, onoff ? ACS_ULCORNER : ' ');
+ mvaddch(ul.y - 1, lr.x + 1, onoff ? ACS_URCORNER : ' ');
+ mvaddch(lr.y + 1, lr.x + 1, onoff ? ACS_LRCORNER : ' ');
+ mvaddch(lr.y + 1, ul.x - 1, onoff ? ACS_LLCORNER : ' ');
+ move(ul.y - 1, ul.x);
+ hline(onoff ? ACS_HLINE : ' ', lr.x - ul.x + 1);
+ move(ul.y, ul.x - 1);
+ vline(onoff ? ACS_VLINE : ' ', lr.y - ul.y + 1);
+ move(lr.y + 1, ul.x);
+ hline(onoff ? ACS_HLINE : ' ', lr.x - ul.x + 1);
+ move(ul.y, lr.x + 1);
+ vline(onoff ? ACS_VLINE : ' ', lr.y - ul.y + 1);
+}
+
+static WINDOW *
+getwindow(void)
/* Ask user for a window definition */
{
- WINDOW *rwindow;
- pair ul, lr, *tmp;
+ WINDOW *rwindow;
+ pair ul, lr, *tmp;
- move(0, 0); clrtoeol();
+ move(0, 0);
+ clrtoeol();
addstr("Use arrows to move cursor, anything else to mark corner 1");
refresh();
- if ((tmp = selectcell(2, 1, LINES-BOTLINES-2, COLS-2)) == (pair *)0)
- return((WINDOW *)0);
+ if ((tmp = selectcell(2, 1, LINES - BOTLINES - 2, COLS - 2)) == (pair *) 0)
+ return ((WINDOW *) 0);
memcpy(&ul, tmp, sizeof(pair));
- mvaddch(ul.y-1, ul.x-1, ACS_ULCORNER);
- move(0, 0); clrtoeol();
+ mvaddch(ul.y - 1, ul.x - 1, ACS_ULCORNER);
+ move(0, 0);
+ clrtoeol();
addstr("Use arrows to move cursor, anything else to mark corner 2");
refresh();
- if ((tmp = selectcell(ul.y, ul.x, LINES-BOTLINES-2, COLS-2)) == (pair *)0)
- return((WINDOW *)0);
+ if ((tmp = selectcell(ul.y, ul.x, LINES - BOTLINES - 2, COLS - 2)) ==
+ (pair *) 0)
+ return ((WINDOW *) 0);
memcpy(&lr, tmp, sizeof(pair));
rwindow = subwin(stdscr, lr.y - ul.y + 1, lr.x - ul.x + 1, ul.y, ul.x);
@@ -1229,78 +1325,78 @@ static WINDOW *getwindow(void)
wrefresh(rwindow);
- move(0, 0); clrtoeol();
- return(rwindow);
+ move(0, 0);
+ clrtoeol();
+ return (rwindow);
}
-static void newwin_move(FRAME *curp, int dy, int dx)
+static void
+newwin_move(FRAME * curp, int dy, int dx)
{
- WINDOW *win = (curp != 0) ? curp->wind : stdscr;
- int cur_y, cur_x;
- int max_y, max_x;
+ WINDOW *win = (curp != 0) ? curp->wind : stdscr;
+ int cur_y, cur_x;
+ int max_y, max_x;
- getyx(win, cur_y, cur_x);
- getmaxyx(win, max_y, max_x);
- if ((cur_x += dx) < 0)
- cur_x = 0;
- else if (cur_x >= max_x)
- cur_x = max_x - 1;
- if ((cur_y += dy) < 0)
- cur_y = 0;
- else if (cur_y >= max_y)
- cur_y = max_y - 1;
- wmove(win, cur_y, cur_x);
+ getyx(win, cur_y, cur_x);
+ getmaxyx(win, max_y, max_x);
+ if ((cur_x += dx) < 0)
+ cur_x = 0;
+ else if (cur_x >= max_x)
+ cur_x = max_x - 1;
+ if ((cur_y += dy) < 0)
+ cur_y = 0;
+ else if (cur_y >= max_y)
+ cur_y = max_y - 1;
+ wmove(win, cur_y, cur_x);
}
-static FRAME *delete_framed(FRAME *fp, bool showit)
+static FRAME *
+delete_framed(FRAME * fp, bool showit)
{
- FRAME *np;
+ FRAME *np;
- fp->last->next = fp->next;
- fp->next->last = fp->last;
+ fp->last->next = fp->next;
+ fp->next->last = fp->last;
- if (showit) {
- werase(fp->wind);
- wrefresh(fp->wind);
- }
- delwin(fp->wind);
+ if (showit) {
+ werase(fp->wind);
+ wrefresh(fp->wind);
+ }
+ delwin(fp->wind);
- np = (fp == fp->next) ? 0 : fp->next;
- free(fp);
- return np;
+ np = (fp == fp->next) ? 0 : fp->next;
+ free(fp);
+ return np;
}
-static void acs_and_scroll(void)
+static void
+acs_and_scroll(void)
/* Demonstrate windows */
{
- int c, i;
+ int c, i;
FILE *fp;
- FRAME *current = (FRAME *)0, *neww;
+ FRAME *current = (FRAME *) 0, *neww;
WINDOW *usescr = stdscr;
#define DUMPFILE "screendump"
#ifdef NCURSES_MOUSE_VERSION
- mousemask(BUTTON1_CLICKED, (mmask_t *)0);
+ mousemask(BUTTON1_CLICKED, (mmask_t *) 0);
#endif
c = CTRL('C');
raw();
do {
- transient((FRAME *)0, (char *)0);
- switch(c)
- {
+ transient((FRAME *) 0, (char *) 0);
+ switch (c) {
case CTRL('C'):
neww = (FRAME *) calloc(1, sizeof(FRAME));
- if ((neww->wind = getwindow()) == (WINDOW *)0)
+ if ((neww->wind = getwindow()) == (WINDOW *) 0)
goto breakout;
- if (current == 0) /* First element, */
- {
- neww->next = neww; /* so point it at itself */
+ if (current == 0) { /* First element, */
+ neww->next = neww; /* so point it at itself */
neww->last = neww;
- }
- else
- {
+ } else {
neww->next = current->next;
neww->last = current;
neww->last->next = neww;
@@ -1316,27 +1412,27 @@ static void acs_and_scroll(void)
current->do_scroll = HaveScroll(current);
break;
- case CTRL('N'): /* go to next window */
+ case CTRL('N'): /* go to next window */
if (current)
current = current->next;
break;
- case CTRL('P'): /* go to previous window */
+ case CTRL('P'): /* go to previous window */
if (current)
current = current->last;
break;
- case CTRL('F'): /* scroll current window forward */
+ case CTRL('F'): /* scroll current window forward */
if (current)
wscrl(current->wind, 1);
break;
- case CTRL('B'): /* scroll current window backwards */
+ case CTRL('B'): /* scroll current window backwards */
if (current)
wscrl(current->wind, -1);
break;
- case CTRL('K'): /* toggle keypad mode for current */
+ case CTRL('K'): /* toggle keypad mode for current */
if (current) {
current->do_keypad = !current->do_keypad;
keypad(current->wind, current->do_keypad);
@@ -1350,13 +1446,12 @@ static void acs_and_scroll(void)
}
break;
- case CTRL('W'): /* save and delete window */
+ case CTRL('W'): /* save and delete window */
if (current == current->next)
break;
- if ((fp = fopen(DUMPFILE, "w")) == (FILE *)0)
+ if ((fp = fopen(DUMPFILE, "w")) == (FILE *) 0)
transient(current, "Can't open screen dump file");
- else
- {
+ else {
(void) putwin(current->wind, fp);
(void) fclose(fp);
@@ -1364,11 +1459,10 @@ static void acs_and_scroll(void)
}
break;
- case CTRL('R'): /* restore window */
- if ((fp = fopen(DUMPFILE, "r")) == (FILE *)0)
+ case CTRL('R'): /* restore window */
+ if ((fp = fopen(DUMPFILE, "r")) == (FILE *) 0)
transient(current, "Can't open screen dump file");
- else
- {
+ else {
neww = (FRAME *) calloc(1, sizeof(FRAME));
neww->next = current->next;
@@ -1383,22 +1477,21 @@ static void acs_and_scroll(void)
}
break;
-#ifdef NCURSES_VERSION
- case CTRL('X'): /* resize window */
- if (current)
- {
+#ifdef HAVE_WRESIZE
+ case CTRL('X'): /* resize window */
+ if (current) {
pair *tmp, ul, lr;
int mx, my;
- move(0, 0); clrtoeol();
+ move(0, 0);
+ clrtoeol();
addstr("Use arrows to move cursor, anything else to mark new corner");
refresh();
getbegyx(current->wind, ul.y, ul.x);
- tmp = selectcell(ul.y, ul.x, LINES-BOTLINES-2, COLS-2);
- if (tmp == (pair *)0)
- {
+ tmp = selectcell(ul.y, ul.x, LINES - BOTLINES - 2, COLS - 2);
+ if (tmp == (pair *) 0) {
beep();
break;
}
@@ -1411,23 +1504,21 @@ static void acs_and_scroll(void)
/* strictly cosmetic hack for the test */
getmaxyx(current->wind, my, mx);
- if (my > tmp->y - ul.y)
- {
- getyx(current->wind, lr.y, lr.x);
- wmove(current->wind, tmp->y - ul.y + 1, 0);
- wclrtobot(current->wind);
- wmove(current->wind, lr.y, lr.x);
+ if (my > tmp->y - ul.y) {
+ getyx(current->wind, lr.y, lr.x);
+ wmove(current->wind, tmp->y - ul.y + 1, 0);
+ wclrtobot(current->wind);
+ wmove(current->wind, lr.y, lr.x);
}
if (mx > tmp->x - ul.x)
- for (i = 0; i < my; i++)
- {
- wmove(current->wind, i, tmp->x - ul.x + 1);
- wclrtoeol(current->wind);
- }
+ for (i = 0; i < my; i++) {
+ wmove(current->wind, i, tmp->x - ul.x + 1);
+ wclrtoeol(current->wind);
+ }
wnoutrefresh(current->wind);
memcpy(&lr, tmp, sizeof(pair));
- (void) wresize(current->wind, lr.y-ul.y+0, lr.x-ul.x+0);
+ (void) wresize(current->wind, lr.y - ul.y + 0, lr.x - ul.x + 0);
getbegyx(current->wind, ul.y, ul.x);
getmaxyx(current->wind, lr.y, lr.x);
@@ -1437,11 +1528,12 @@ static void acs_and_scroll(void)
wnoutrefresh(stdscr);
wnoutrefresh(current->wind);
- move(0, 0); clrtoeol();
+ move(0, 0);
+ clrtoeol();
doupdate();
}
break;
-#endif /* NCURSES_VERSION */
+#endif /* HAVE_WRESIZE */
case KEY_F(10): /* undocumented --- use this to test area clears */
selectcell(0, 0, LINES - 1, COLS - 1);
@@ -1450,16 +1542,16 @@ static void acs_and_scroll(void)
break;
case KEY_UP:
- newwin_move(current, -1, 0);
+ newwin_move(current, -1, 0);
break;
case KEY_DOWN:
- newwin_move(current, 1, 0);
+ newwin_move(current, 1, 0);
break;
case KEY_LEFT:
- newwin_move(current, 0, -1);
+ newwin_move(current, 0, -1);
break;
case KEY_RIGHT:
- newwin_move(current, 0, 1);
+ newwin_move(current, 0, 1);
break;
case KEY_BACKSPACE:
@@ -1469,9 +1561,9 @@ static void acs_and_scroll(void)
int y, x;
getyx(current->wind, y, x);
if (--x < 0) {
- if (--y < 0)
- break;
- x = getmaxx(current->wind) - 1;
+ if (--y < 0)
+ break;
+ x = getmaxx(current->wind) - 1;
}
mvwdelch(current->wind, y, x);
}
@@ -1483,7 +1575,7 @@ static void acs_and_scroll(void)
default:
if (current)
- waddch(current->wind, (chtype)c);
+ waddch(current->wind, (chtype) c);
else
beep();
break;
@@ -1493,16 +1585,16 @@ static void acs_and_scroll(void)
wrefresh(usescr);
} while
((c = wGetchar(usescr)) != QUIT
- && !((c == ESCAPE) && (usescr->_use_keypad))
- && (c != ERR));
+ && !((c == ESCAPE) && (usescr->_use_keypad))
+ && (c != ERR));
- breakout:
+ breakout:
while (current != 0)
- current = delete_framed(current, FALSE);
+ current = delete_framed(current, FALSE);
scrollok(stdscr, TRUE); /* reset to driver's default */
#ifdef NCURSES_MOUSE_VERSION
- mousemask(0, (mmask_t *)0);
+ mousemask(0, (mmask_t *) 0);
#endif
noraw();
erase();
@@ -1520,12 +1612,12 @@ static unsigned long nap_msec = 1;
static NCURSES_CONST char *mod[] =
{
- "test ",
- "TEST ",
- "(**) ",
- "*()* ",
- "<--> ",
- "LAST "
+ "test ",
+ "TEST ",
+ "(**) ",
+ "*()* ",
+ "<--> ",
+ "LAST "
};
/*+-------------------------------------------------------------------------
@@ -1535,19 +1627,19 @@ static void
wait_a_while(unsigned long msec GCC_UNUSED)
{
#if HAVE_NAPMS
- if(nap_msec == 1)
- wGetchar(stdscr);
- else
- napms(nap_msec);
+ if (nap_msec == 1)
+ wGetchar(stdscr);
+ else
+ napms(nap_msec);
#else
- if(nap_msec == 1)
- wGetchar(stdscr);
- else if(msec > 1000L)
- sleep((int)msec/1000L);
- else
- sleep(1);
+ if (nap_msec == 1)
+ wGetchar(stdscr);
+ else if (msec > 1000L)
+ sleep((int) msec / 1000L);
+ else
+ sleep(1);
#endif
-} /* end of wait_a_while */
+} /* end of wait_a_while */
/*+-------------------------------------------------------------------------
saywhat(text)
@@ -1555,10 +1647,10 @@ wait_a_while(unsigned long msec GCC_UNUSED)
static void
saywhat(NCURSES_CONST char *text)
{
- wmove(stdscr,LINES - 1,0);
- wclrtoeol(stdscr);
- waddstr(stdscr, text);
-} /* end of saywhat */
+ wmove(stdscr, LINES - 1, 0);
+ wclrtoeol(stdscr);
+ waddstr(stdscr, text);
+} /* end of saywhat */
/*+-------------------------------------------------------------------------
mkpanel(rows,cols,tly,tlx) - alloc a win and panel and associate them
@@ -1566,34 +1658,34 @@ saywhat(NCURSES_CONST char *text)
static PANEL *
mkpanel(int color, int rows, int cols, int tly, int tlx)
{
-WINDOW *win;
-PANEL *pan = 0;
-
- if ((win = newwin(rows, cols, tly, tlx)) != 0) {
- if ((pan = new_panel(win)) == 0) {
- delwin(win);
- } else if (has_colors()) {
- int fg = (color == COLOR_BLUE) ? COLOR_WHITE : COLOR_BLACK;
- int bg = color;
- init_pair(color, fg, bg);
- wbkgdset(win, COLOR_PAIR(color) | ' ');
- } else {
- wbkgdset(win, A_BOLD | ' ');
- }
+ WINDOW *win;
+ PANEL *pan = 0;
+
+ if ((win = newwin(rows, cols, tly, tlx)) != 0) {
+ if ((pan = new_panel(win)) == 0) {
+ delwin(win);
+ } else if (has_colors()) {
+ int fg = (color == COLOR_BLUE) ? COLOR_WHITE : COLOR_BLACK;
+ int bg = color;
+ init_pair(color, fg, bg);
+ wbkgdset(win, COLOR_PAIR(color) | ' ');
+ } else {
+ wbkgdset(win, A_BOLD | ' ');
}
- return pan;
-} /* end of mkpanel */
+ }
+ return pan;
+} /* end of mkpanel */
/*+-------------------------------------------------------------------------
rmpanel(pan)
--------------------------------------------------------------------------*/
static void
-rmpanel(PANEL *pan)
+rmpanel(PANEL * pan)
{
-WINDOW *win = panel_window(pan);
- del_panel(pan);
- delwin(win);
-} /* end of rmpanel */
+ WINDOW *win = panel_window(pan);
+ del_panel(pan);
+ delwin(win);
+} /* end of rmpanel */
/*+-------------------------------------------------------------------------
pflush()
@@ -1601,227 +1693,243 @@ WINDOW *win = panel_window(pan);
static void
pflush(void)
{
- update_panels();
- doupdate();
-} /* end of pflush */
+ update_panels();
+ doupdate();
+} /* end of pflush */
/*+-------------------------------------------------------------------------
fill_panel(win)
--------------------------------------------------------------------------*/
static void
-fill_panel(PANEL *pan)
+fill_panel(PANEL * pan)
{
-WINDOW *win = panel_window(pan);
-int num = ((const char *)panel_userptr(pan))[1];
-int y,x;
+ WINDOW *win = panel_window(pan);
+ int num = ((const char *) panel_userptr(pan))[1];
+ int y, x;
- wmove(win,1,1);
- wprintw(win,"-pan%c-", num);
- wclrtoeol(win);
- box(win, 0, 0);
- for(y = 2; y < getmaxy(win) - 1; y++)
- {
- for(x = 1; x < getmaxx(win) - 1; x++)
- {
- wmove(win,y,x);
- waddch(win,num);
- }
+ wmove(win, 1, 1);
+ wprintw(win, "-pan%c-", num);
+ wclrtoeol(win);
+ box(win, 0, 0);
+ for (y = 2; y < getmaxy(win) - 1; y++) {
+ for (x = 1; x < getmaxx(win) - 1; x++) {
+ wmove(win, y, x);
+ waddch(win, num);
}
-} /* end of fill_panel */
+ }
+} /* end of fill_panel */
-static void demo_panels(void)
+static void
+demo_panels(void)
{
-int itmp;
-register int y,x;
+ int itmp;
+ register int y, x;
- refresh();
+ refresh();
- for(y = 0; y < LINES - 1; y++)
- {
- for(x = 0; x < COLS; x++)
- wprintw(stdscr,"%d",(y + x) % 10);
+ for (y = 0; y < LINES - 1; y++) {
+ for (x = 0; x < COLS; x++)
+ wprintw(stdscr, "%d", (y + x) % 10);
+ }
+ for (y = 0; y < 5; y++) {
+ PANEL *p1;
+ PANEL *p2;
+ PANEL *p3;
+ PANEL *p4;
+ PANEL *p5;
+
+ p1 = mkpanel(COLOR_RED,
+ LINES / 2 - 2,
+ COLS / 8 + 1,
+ 0,
+ 0);
+ set_panel_userptr(p1, "p1");
+
+ p2 = mkpanel(COLOR_GREEN,
+ LINES / 2 + 1,
+ COLS / 7,
+ LINES / 4,
+ COLS / 10);
+ set_panel_userptr(p2, "p2");
+
+ p3 = mkpanel(COLOR_YELLOW,
+ LINES / 4,
+ COLS / 10,
+ LINES / 2,
+ COLS / 9);
+ set_panel_userptr(p3, "p3");
+
+ p4 = mkpanel(COLOR_BLUE,
+ LINES / 2 - 2,
+ COLS / 8,
+ LINES / 2 - 2,
+ COLS / 3);
+ set_panel_userptr(p4, "p4");
+
+ p5 = mkpanel(COLOR_MAGENTA,
+ LINES / 2 - 2,
+ COLS / 8,
+ LINES / 2,
+ COLS / 2 - 2);
+ set_panel_userptr(p5, "p5");
+
+ fill_panel(p1);
+ fill_panel(p2);
+ fill_panel(p3);
+ fill_panel(p4);
+ fill_panel(p5);
+ hide_panel(p4);
+ hide_panel(p5);
+ pflush();
+ saywhat("press any key to continue");
+ wait_a_while(nap_msec);
+
+ saywhat("h3 s1 s2 s4 s5; press any key to continue");
+ move_panel(p1, 0, 0);
+ hide_panel(p3);
+ show_panel(p1);
+ show_panel(p2);
+ show_panel(p4);
+ show_panel(p5);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s1; press any key to continue");
+ show_panel(p1);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s2; press any key to continue");
+ show_panel(p2);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("m2; press any key to continue");
+ move_panel(p2, LINES / 3 + 1, COLS / 8);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s3;");
+ show_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("m3; press any key to continue");
+ move_panel(p3, LINES / 4 + 1, COLS / 15);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("b3; press any key to continue");
+ bottom_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s4; press any key to continue");
+ show_panel(p4);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s5; press any key to continue");
+ show_panel(p5);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t3; press any key to continue");
+ top_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t1; press any key to continue");
+ top_panel(p1);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t2; press any key to continue");
+ top_panel(p2);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t3; press any key to continue");
+ top_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t4; press any key to continue");
+ top_panel(p4);
+ pflush();
+ wait_a_while(nap_msec);
+
+ for (itmp = 0; itmp < 6; itmp++) {
+ WINDOW *w4 = panel_window(p4);
+ WINDOW *w5 = panel_window(p5);
+
+ saywhat("m4; press any key to continue");
+ wmove(w4, LINES / 8, 1);
+ waddstr(w4, mod[itmp]);
+ move_panel(p4, LINES / 6, itmp * (COLS / 8));
+ wmove(w5, LINES / 6, 1);
+ waddstr(w5, mod[itmp]);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("m5; press any key to continue");
+ wmove(w4, LINES / 6, 1);
+ waddstr(w4, mod[itmp]);
+ move_panel(p5, LINES / 3 - 1, (itmp * 10) + 6);
+ wmove(w5, LINES / 8, 1);
+ waddstr(w5, mod[itmp]);
+ pflush();
+ wait_a_while(nap_msec);
}
- for(y = 0; y < 5; y++)
- {
- PANEL *p1;
- PANEL *p2;
- PANEL *p3;
- PANEL *p4;
- PANEL *p5;
-
- p1 = mkpanel(COLOR_RED, LINES/2 - 2, COLS/8 + 1, 0, 0);
- set_panel_userptr(p1,"p1");
-
- p2 = mkpanel(COLOR_GREEN, LINES/2 + 1, COLS/7, LINES/4, COLS/10);
- set_panel_userptr(p2,"p2");
-
- p3 = mkpanel(COLOR_YELLOW, LINES/4, COLS/10, LINES/2, COLS/9);
- set_panel_userptr(p3,"p3");
-
- p4 = mkpanel(COLOR_BLUE, LINES/2 - 2, COLS/8, LINES/2 - 2, COLS/3);
- set_panel_userptr(p4,"p4");
-
- p5 = mkpanel(COLOR_MAGENTA, LINES/2 - 2, COLS/8, LINES/2, COLS/2 - 2);
- set_panel_userptr(p5,"p5");
-
- fill_panel(p1);
- fill_panel(p2);
- fill_panel(p3);
- fill_panel(p4);
- fill_panel(p5);
- hide_panel(p4);
- hide_panel(p5);
- pflush();
- saywhat("press any key to continue");
- wait_a_while(nap_msec);
-
- saywhat("h3 s1 s2 s4 s5; press any key to continue");
- move_panel(p1,0,0);
- hide_panel(p3);
- show_panel(p1);
- show_panel(p2);
- show_panel(p4);
- show_panel(p5);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s1; press any key to continue");
- show_panel(p1);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s2; press any key to continue");
- show_panel(p2);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("m2; press any key to continue");
- move_panel(p2, LINES/3 + 1, COLS / 8);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s3;");
- show_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("m3; press any key to continue");
- move_panel(p3, LINES/4 + 1, COLS / 15);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("b3; press any key to continue");
- bottom_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s4; press any key to continue");
- show_panel(p4);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s5; press any key to continue");
- show_panel(p5);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t3; press any key to continue");
- top_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t1; press any key to continue");
- top_panel(p1);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t2; press any key to continue");
- top_panel(p2);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t3; press any key to continue");
- top_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t4; press any key to continue");
- top_panel(p4);
- pflush();
- wait_a_while(nap_msec);
-
- for(itmp = 0; itmp < 6; itmp++)
- {
- WINDOW *w4 = panel_window(p4);
- WINDOW *w5 = panel_window(p5);
-
- saywhat("m4; press any key to continue");
- wmove(w4, LINES/8, 1);
- waddstr(w4,mod[itmp]);
- move_panel(p4, LINES/6, itmp*(COLS/8));
- wmove(w5, LINES/6, 1);
- waddstr(w5,mod[itmp]);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("m5; press any key to continue");
- wmove(w4, LINES/6, 1);
- waddstr(w4,mod[itmp]);
- move_panel(p5, LINES/3 - 1,(itmp*10) + 6);
- wmove(w5, LINES/8, 1);
- waddstr(w5,mod[itmp]);
- pflush();
- wait_a_while(nap_msec);
- }
- saywhat("m4; press any key to continue");
- move_panel(p4, LINES/6, itmp*(COLS/8));
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t5; press any key to continue");
- top_panel(p5);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t2; press any key to continue");
- top_panel(p2);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t1; press any key to continue");
- top_panel(p1);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("d2; press any key to continue");
- rmpanel(p2);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("h3; press any key to continue");
- hide_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("d1; press any key to continue");
- rmpanel(p1);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("d4; press any key to continue");
- rmpanel(p4);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("d5; press any key to continue");
- rmpanel(p5);
- pflush();
- wait_a_while(nap_msec);
- if(nap_msec == 1)
- break;
- nap_msec = 100L;
- }
+ saywhat("m4; press any key to continue");
+ move_panel(p4, LINES / 6, itmp * (COLS / 8));
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t5; press any key to continue");
+ top_panel(p5);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t2; press any key to continue");
+ top_panel(p2);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t1; press any key to continue");
+ top_panel(p1);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("d2; press any key to continue");
+ rmpanel(p2);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("h3; press any key to continue");
+ hide_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("d1; press any key to continue");
+ rmpanel(p1);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("d4; press any key to continue");
+ rmpanel(p4);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("d5; press any key to continue");
+ rmpanel(p5);
+ pflush();
+ wait_a_while(nap_msec);
+ if (nap_msec == 1)
+ break;
+ nap_msec = 100L;
+ }
erase();
endwin();
@@ -1837,40 +1945,45 @@ register int y,x;
static bool show_panner_legend = TRUE;
-static int panner_legend(int line)
-{
- static const char *const legend[] = {
- "Use arrow keys (or U,D,L,R) to pan, q to quit (?,t,s flags)",
- "Use ! to shell-out. Toggle legend:?, timer:t, scroll mark:s.",
- "Use +,- (or j,k) to grow/shrink the panner vertically.",
- "Use <,> (or h,l) to grow/shrink the panner horizontally."
- };
- int n = (SIZEOF(legend) - (LINES - line));
- if (line < LINES && (n >= 0)) {
- move(line, 0);
- if (show_panner_legend)
- printw("%s", legend[n]);
- clrtoeol();
- return show_panner_legend;
- }
- return FALSE;
+static int
+panner_legend(int line)
+{
+ static const char *const legend[] =
+ {
+ "Use arrow keys (or U,D,L,R) to pan, q to quit (?,t,s flags)",
+ "Use ! to shell-out. Toggle legend:?, timer:t, scroll mark:s.",
+ "Use +,- (or j,k) to grow/shrink the panner vertically.",
+ "Use <,> (or h,l) to grow/shrink the panner horizontally."
+ };
+ int n = (SIZEOF(legend) - (LINES - line));
+ if (line < LINES && (n >= 0)) {
+ move(line, 0);
+ if (show_panner_legend)
+ printw("%s", legend[n]);
+ clrtoeol();
+ return show_panner_legend;
+ }
+ return FALSE;
}
-static void panner_h_cleanup(int from_y, int from_x, int to_x)
+static void
+panner_h_cleanup(int from_y, int from_x, int to_x)
{
- if (!panner_legend(from_y))
- do_h_line(from_y, from_x, ' ', to_x);
+ if (!panner_legend(from_y))
+ do_h_line(from_y, from_x, ' ', to_x);
}
-static void panner_v_cleanup(int from_y, int from_x, int to_y)
+static void
+panner_v_cleanup(int from_y, int from_x, int to_y)
{
- if (!panner_legend(from_y))
- do_v_line(from_y, from_x, ' ', to_y);
+ if (!panner_legend(from_y))
+ do_v_line(from_y, from_x, ' ', to_y);
}
-static void panner(WINDOW *pad,
- int top_x, int top_y, int porty, int portx,
- int (*pgetc)(WINDOW *))
+static void
+panner(WINDOW *pad,
+ int top_x, int top_y, int porty, int portx,
+ int (*pgetc) (WINDOW *))
{
#if HAVE_GETTIMEOFDAY
struct timeval before, after;
@@ -1892,13 +2005,16 @@ static void panner(WINDOW *pad,
* the port size of the pad to accommodate this. Ncurses automatically
* resizes all of the normal windows to fit on the new screen.
*/
- if (top_x > COLS) top_x = COLS;
- if (portx > COLS) portx = COLS;
- if (top_y > LINES) top_y = LINES;
- if (porty > LINES) porty = LINES;
+ if (top_x > COLS)
+ top_x = COLS;
+ if (portx > COLS)
+ portx = COLS;
+ if (top_y > LINES)
+ top_y = LINES;
+ if (porty > LINES)
+ porty = LINES;
#endif
- switch(c)
- {
+ switch (c) {
case KEY_REFRESH:
erase();
@@ -1915,7 +2031,7 @@ static void panner(WINDOW *pad,
case 't':
timing = !timing;
if (!timing)
- panner_legend(LINES-1);
+ panner_legend(LINES - 1);
break;
#endif
case 's':
@@ -1925,41 +2041,37 @@ static void panner(WINDOW *pad,
/* Move the top-left corner of the pad, keeping the bottom-right
* corner fixed.
*/
- case 'h': /* increase-columns: move left edge to left */
+ case 'h': /* increase-columns: move left edge to left */
if (top_x <= 0)
beep();
- else
- {
+ else {
panner_v_cleanup(top_y, top_x, porty);
top_x--;
}
break;
- case 'j': /* decrease-lines: move top-edge down */
+ case 'j': /* decrease-lines: move top-edge down */
if (top_y >= porty)
beep();
- else
- {
+ else {
panner_h_cleanup(top_y - 1, top_x - (top_x > 0), portx);
top_y++;
}
break;
- case 'k': /* increase-lines: move top-edge up */
+ case 'k': /* increase-lines: move top-edge up */
if (top_y <= 0)
beep();
- else
- {
+ else {
top_y--;
panner_h_cleanup(top_y, top_x, portx);
}
break;
- case 'l': /* decrease-columns: move left-edge to right */
+ case 'l': /* decrease-columns: move left-edge to right */
if (top_x >= portx)
beep();
- else
- {
+ else {
panner_v_cleanup(top_y - (top_y > 0), top_x - 1, porty);
top_x++;
}
@@ -1968,47 +2080,43 @@ static void panner(WINDOW *pad,
/* Move the bottom-right corner of the pad, keeping the top-left
* corner fixed.
*/
- case KEY_IC: /* increase-columns: move right-edge to right */
+ case KEY_IC: /* increase-columns: move right-edge to right */
if (portx >= pxmax || portx >= COLS)
beep();
- else
- {
+ else {
panner_v_cleanup(top_y - (top_y > 0), portx - 1, porty);
++portx;
}
break;
- case KEY_IL: /* increase-lines: move bottom-edge down */
+ case KEY_IL: /* increase-lines: move bottom-edge down */
if (porty >= pymax || porty >= LINES)
beep();
- else
- {
+ else {
panner_h_cleanup(porty - 1, top_x - (top_x > 0), portx);
++porty;
}
break;
- case KEY_DC: /* decrease-columns: move bottom edge up */
+ case KEY_DC: /* decrease-columns: move bottom edge up */
if (portx <= top_x)
beep();
- else
- {
+ else {
portx--;
panner_v_cleanup(top_y - (top_y > 0), portx, porty);
}
break;
- case KEY_DL: /* decrease-lines */
+ case KEY_DL: /* decrease-lines */
if (porty <= top_y)
beep();
- else
- {
+ else {
porty--;
panner_h_cleanup(porty, top_x - (top_x > 0), portx);
}
break;
- case KEY_LEFT: /* pan leftwards */
+ case KEY_LEFT: /* pan leftwards */
if (basex > 0)
basex--;
else
@@ -2022,20 +2130,34 @@ static void panner(WINDOW *pad,
beep();
break;
- case KEY_UP: /* pan upwards */
+ case KEY_UP: /* pan upwards */
if (basey > 0)
basey--;
else
beep();
break;
- case KEY_DOWN: /* pan downwards */
+ case KEY_DOWN: /* pan downwards */
if (basey + porty - (pxmax > portx) < pymax)
basey++;
else
beep();
break;
+ case 'H':
+ case KEY_HOME:
+ case KEY_FIND:
+ basey = 0;
+ break;
+
+ case 'E':
+ case KEY_END:
+ case KEY_SELECT:
+ basey = pymax - porty;
+ if (basey < 0)
+ basey = 0;
+ break;
+
default:
beep();
break;
@@ -2046,11 +2168,11 @@ static void panner(WINDOW *pad,
do_h_line(top_y - 1, top_x, ACS_HLINE, portx);
if (scrollers && (pxmax > portx - 1)) {
- int length = (portx - top_x - 1);
+ int length = (portx - top_x - 1);
float ratio = ((float) length) / ((float) pxmax);
- lowend = (int)(top_x + (basex * ratio));
- highend = (int)(top_x + ((basex + length) * ratio));
+ lowend = (int) (top_x + (basex * ratio));
+ highend = (int) (top_x + ((basex + length) * ratio));
do_h_line(porty - 1, top_x, ACS_HLINE, lowend);
if (highend < portx) {
@@ -2059,24 +2181,24 @@ static void panner(WINDOW *pad,
attroff(A_REVERSE);
do_h_line(porty - 1, highend + 1, ACS_HLINE, portx);
}
- } else
+ } else
do_h_line(porty - 1, top_x, ACS_HLINE, portx);
if (scrollers && (pymax > porty - 1)) {
- int length = (porty - top_y - 1);
+ int length = (porty - top_y - 1);
float ratio = ((float) length) / ((float) pymax);
- lowend = (int)(top_y + (basey * ratio));
- highend = (int)(top_y + ((basey + length) * ratio));
+ lowend = (int) (top_y + (basey * ratio));
+ highend = (int) (top_y + ((basey + length) * ratio));
do_v_line(top_y, portx - 1, ACS_VLINE, lowend);
- if (highend < porty) {
+ if (highend < porty) {
attron(A_REVERSE);
do_v_line(lowend, portx - 1, ' ', highend + 1);
attroff(A_REVERSE);
do_v_line(highend + 1, portx - 1, ACS_VLINE, porty);
}
- } else
+ } else
do_v_line(top_y, portx - 1, ACS_VLINE, porty);
mvaddch(top_y - 1, portx - 1, ACS_URCORNER);
@@ -2089,21 +2211,21 @@ static void panner(WINDOW *pad,
wnoutrefresh(stdscr);
pnoutrefresh(pad,
- basey, basex,
- top_y, top_x,
- porty - (pxmax > portx) - 1,
- portx - (pymax > porty) - 1);
+ basey, basex,
+ top_y, top_x,
+ porty - (pxmax > portx) - 1,
+ portx - (pymax > porty) - 1);
doupdate();
#if HAVE_GETTIMEOFDAY
if (timing) {
- double elapsed;
- gettimeofday(&after, 0);
- elapsed = (after.tv_sec + after.tv_usec / 1.0e6)
- - (before.tv_sec + before.tv_usec / 1.0e6);
- move(LINES-1, COLS-20);
- printw("Secs: %2.03f", elapsed);
- refresh();
+ double elapsed;
+ gettimeofday(&after, 0);
+ elapsed = (after.tv_sec + after.tv_usec / 1.0e6)
+ - (before.tv_sec + before.tv_usec / 1.0e6);
+ move(LINES - 1, COLS - 20);
+ printw("Secs: %2.03f", elapsed);
+ refresh();
}
#endif
@@ -2114,47 +2236,69 @@ static void panner(WINDOW *pad,
}
static
-int padgetch(WINDOW *win)
+int
+padgetch(WINDOW *win)
{
- int c;
+ int c;
- switch(c = wGetchar(win))
- {
- case '!': ShellOut(FALSE); return KEY_REFRESH;
- case CTRL('r'): endwin(); refresh(); return KEY_REFRESH;
- case CTRL('l'): return KEY_REFRESH;
- case 'U': return(KEY_UP);
- case 'D': return(KEY_DOWN);
- case 'R': return(KEY_RIGHT);
- case 'L': return(KEY_LEFT);
- case '+': return(KEY_IL);
- case '-': return(KEY_DL);
- case '>': return(KEY_IC);
- case '<': return(KEY_DC);
- case ERR: /* FALLTHRU */
- case 'q': return(KEY_EXIT);
- default: return(c);
+ switch (c = wGetchar(win)) {
+ case '!':
+ ShellOut(FALSE);
+ return KEY_REFRESH;
+ case CTRL('r'):
+ endwin();
+ refresh();
+ return KEY_REFRESH;
+ case CTRL('l'):
+ return KEY_REFRESH;
+ case 'U':
+ return (KEY_UP);
+ case 'D':
+ return (KEY_DOWN);
+ case 'R':
+ return (KEY_RIGHT);
+ case 'L':
+ return (KEY_LEFT);
+ case '+':
+ return (KEY_IL);
+ case '-':
+ return (KEY_DL);
+ case '>':
+ return (KEY_IC);
+ case '<':
+ return (KEY_DC);
+ case ERR: /* FALLTHRU */
+ case 'q':
+ return (KEY_EXIT);
+ default:
+ return (c);
}
}
-static void demo_pad(void)
+#define PAD_HIGH 200
+#define PAD_WIDE 200
+
+static void
+demo_pad(void)
/* Demonstrate pads. */
{
int i, j;
unsigned gridcount = 0;
- WINDOW *panpad = newpad(200, 200);
+ WINDOW *panpad = newpad(PAD_HIGH, PAD_WIDE);
- for (i = 0; i < 200; i++)
- {
- for (j = 0; j < 200; j++)
- if (i % GRIDSIZE == 0 && j % GRIDSIZE == 0)
- {
+ if (panpad == 0) {
+ Cannot("cannot create requested pad");
+ return;
+ }
+
+ for (i = 0; i < PAD_HIGH; i++) {
+ for (j = 0; j < PAD_WIDE; j++)
+ if (i % GRIDSIZE == 0 && j % GRIDSIZE == 0) {
if (i == 0 || j == 0)
waddch(panpad, '+');
else
- waddch(panpad, (chtype)('A' + (gridcount++ % 26)));
- }
- else if (i % GRIDSIZE == 0)
+ waddch(panpad, (chtype) ('A' + (gridcount++ % 26)));
+ } else if (i % GRIDSIZE == 0)
waddch(panpad, '-');
else if (j % GRIDSIZE == 0)
waddch(panpad, '|');
@@ -2172,7 +2316,7 @@ static void demo_pad(void)
* We'll still be able to widen it during a test, since that's required
* for testing boundaries.
*/
- panner(panpad, 2, 2, LINES - 5, COLS-15, padgetch);
+ panner(panpad, 2, 2, LINES - 5, COLS - 15, padgetch);
delwin(panpad);
endwin();
@@ -2186,7 +2330,8 @@ static void demo_pad(void)
*
****************************************************************************/
-static void Continue (WINDOW *win)
+static void
+Continue(WINDOW *win)
{
noecho();
wmove(win, 10, 1);
@@ -2195,32 +2340,29 @@ static void Continue (WINDOW *win)
wGetchar(win);
}
-static void flushinp_test(WINDOW *win)
+static void
+flushinp_test(WINDOW *win)
/* Input test, adapted from John Burnell's PDCurses tester */
{
int w, h, bx, by, sw, sh, i;
WINDOW *subWin;
- wclear (win);
+ wclear(win);
- getmaxyx(win, h, w);
+ getmaxyx(win, h, w);
getbegyx(win, by, bx);
sw = w / 3;
sh = h / 3;
- if((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == 0)
- return;
+ if ((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == 0)
+ return;
#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(2,COLOR_CYAN,COLOR_BLUE);
- wattrset(subWin, COLOR_PAIR(2) | A_BOLD);
+ if (has_colors()) {
+ init_pair(2, COLOR_CYAN, COLOR_BLUE);
+ wbkgd(subWin, COLOR_PAIR(2) | ' ');
}
- else
- wattrset(subWin, A_BOLD);
-#else
- wattrset(subWin, A_BOLD);
#endif
+ wattrset(subWin, A_BOLD);
box(subWin, ACS_VLINE, ACS_HLINE);
mvwaddstr(subWin, 2, 1, "This is a subwindow");
wrefresh(win);
@@ -2237,29 +2379,28 @@ static void flushinp_test(WINDOW *win)
mvwaddstr(win, 2, 1, "Type random keys for 5 seconds.");
mvwaddstr(win, 3, 1,
- "These should be discarded (not echoed) after the subwindow goes away.");
+ "These should be discarded (not echoed) after the subwindow goes away.");
wrefresh(win);
- for (i = 0; i < 5; i++)
- {
- mvwprintw (subWin, 1, 1, "Time = %d", i);
+ for (i = 0; i < 5; i++) {
+ mvwprintw(subWin, 1, 1, "Time = %d", i);
wrefresh(subWin);
napms(1000);
flushinp();
}
- delwin (subWin);
+ delwin(subWin);
werase(win);
flash();
wrefresh(win);
napms(1000);
mvwaddstr(win, 2, 1,
- "If you were still typing when the window timer expired,");
+ "If you were still typing when the window timer expired,");
mvwaddstr(win, 3, 1,
- "or else you typed nothing at all while it was running,");
+ "or else you typed nothing at all while it was running,");
mvwaddstr(win, 4, 1,
- "test was invalid. You'll see garbage or nothing at all. ");
+ "test was invalid. You'll see garbage or nothing at all. ");
mvwaddstr(win, 6, 1, "Press a key");
wmove(win, 9, 10);
wrefresh(win);
@@ -2267,7 +2408,7 @@ static void flushinp_test(WINDOW *win)
wGetchar(win);
flushinp();
mvwaddstr(win, 12, 0,
- "If you see any key other than what you typed, flushinp() is broken.");
+ "If you see any key other than what you typed, flushinp() is broken.");
Continue(win);
wmove(win, 9, 10);
@@ -2276,7 +2417,7 @@ static void flushinp_test(WINDOW *win)
wmove(win, 12, 0);
clrtoeol();
waddstr(win,
- "What you typed should now have been deleted; if not, wdelch() failed.");
+ "What you typed should now have been deleted; if not, wdelch() failed.");
Continue(win);
cbreak();
@@ -2293,66 +2434,69 @@ static void flushinp_test(WINDOW *win)
#define MENU_Y 8
#define MENU_X 8
-static int menu_virtualize(int c)
+static int
+menu_virtualize(int c)
{
if (c == '\n' || c == KEY_EXIT)
- return(MAX_COMMAND + 1);
+ return (MAX_COMMAND + 1);
else if (c == 'u')
- return(REQ_SCR_ULINE);
+ return (REQ_SCR_ULINE);
else if (c == 'd')
- return(REQ_SCR_DLINE);
+ return (REQ_SCR_DLINE);
else if (c == 'b' || c == KEY_NPAGE)
- return(REQ_SCR_UPAGE);
+ return (REQ_SCR_UPAGE);
else if (c == 'f' || c == KEY_PPAGE)
- return(REQ_SCR_DPAGE);
+ return (REQ_SCR_DPAGE);
else if (c == 'n' || c == KEY_DOWN)
- return(REQ_NEXT_ITEM);
+ return (REQ_NEXT_ITEM);
else if (c == 'p' || c == KEY_UP)
- return(REQ_PREV_ITEM);
+ return (REQ_PREV_ITEM);
else if (c == ' ')
- return(REQ_TOGGLE_ITEM);
+ return (REQ_TOGGLE_ITEM);
else {
if (c != KEY_MOUSE)
beep();
- return(c);
+ return (c);
}
}
static const char *animals[] =
{
"Lions", "Tigers", "Bears", "(Oh my!)", "Newts", "Platypi", "Lemurs",
- (char *)0
+ (char *) 0
};
-static void menu_test(void)
+static void
+menu_test(void)
{
- MENU *m;
- ITEM *items[SIZEOF(animals)];
- ITEM **ip = items;
- const char **ap;
- int mrows, mcols, c;
- WINDOW *menuwin;
+ MENU *m;
+ ITEM *items[SIZEOF(animals)];
+ ITEM **ip = items;
+ const char **ap;
+ int mrows, mcols, c;
+ WINDOW *menuwin;
#ifdef NCURSES_MOUSE_VERSION
- mousemask(ALL_MOUSE_EVENTS, (mmask_t *)0);
+ mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0);
#endif
mvaddstr(0, 0, "This is the menu test:");
mvaddstr(2, 0, " Use up and down arrow to move the select bar.");
mvaddstr(3, 0, " 'n' and 'p' act like arrows.");
- mvaddstr(4, 0, " 'b' and 'f' scroll up/down (page), 'u' and 'd' (line).");
+ mvaddstr(4, 0,
+ " 'b' and 'f' scroll up/down (page), 'u' and 'd' (line).");
mvaddstr(5, 0, " Press return to exit.");
refresh();
for (ap = animals; *ap; ap++)
*ip++ = new_item(*ap, "");
- *ip = (ITEM *)0;
+ *ip = (ITEM *) 0;
m = new_menu(items);
- set_menu_format(m, (SIZEOF(animals)+1)/2, 1);
+ set_menu_format(m, (SIZEOF(animals) + 1) / 2, 1);
scale_menu(m, &mrows, &mcols);
- menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X);
+ menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X);
set_menu_win(m, menuwin);
keypad(menuwin, TRUE);
box(menuwin, 0, 0);
@@ -2368,7 +2512,7 @@ static void menu_test(void)
}
(void) mvprintw(LINES - 2, 0,
- "You chose: %s\n", item_name(current_item(m)));
+ "You chose: %s\n", item_name(current_item(m)));
(void) addstr("Press any key to continue...");
wGetchar(stdscr);
@@ -2379,17 +2523,18 @@ static void menu_test(void)
for (ip = items; *ip; ip++)
free_item(*ip);
#ifdef NCURSES_MOUSE_VERSION
- mousemask(0, (mmask_t *)0);
+ mousemask(0, (mmask_t *) 0);
#endif
}
#ifdef TRACE
#define T_TBL(name) { #name, name }
static struct {
- const char *name;
- int mask;
+ const char *name;
+ int mask;
} t_tbl[] = {
- T_TBL(TRACE_DISABLE),
+
+ T_TBL(TRACE_DISABLE),
T_TBL(TRACE_TIMES),
T_TBL(TRACE_TPUTS),
T_TBL(TRACE_UPDATE),
@@ -2402,41 +2547,45 @@ static struct {
T_TBL(TRACE_BITS),
T_TBL(TRACE_ICALLS),
T_TBL(TRACE_CCALLS),
+ T_TBL(TRACE_DATABASE),
T_TBL(TRACE_MAXIMUM),
- { (char *)0, 0 }
+ {
+ (char *) 0, 0
+ }
};
-static char *tracetrace(int tlevel)
+static char *
+tracetrace(int tlevel)
{
- static char *buf;
- int n;
+ static char *buf;
+ int n;
if (buf == 0) {
size_t need = 12;
for (n = 0; t_tbl[n].name != 0; n++)
need += strlen(t_tbl[n].name) + 2;
- buf = (char *)malloc(need);
+ buf = (char *) malloc(need);
}
sprintf(buf, "0x%02x = {", tlevel);
if (tlevel == 0) {
sprintf(buf + strlen(buf), "%s, ", t_tbl[0].name);
} else {
for (n = 1; t_tbl[n].name != 0; n++)
- if ((tlevel & t_tbl[n].mask) == t_tbl[n].mask)
- {
+ if ((tlevel & t_tbl[n].mask) == t_tbl[n].mask) {
strcat(buf, t_tbl[n].name);
strcat(buf, ", ");
}
}
if (buf[strlen(buf) - 2] == ',')
buf[strlen(buf) - 2] = '\0';
- return(strcat(buf,"}"));
+ return (strcat(buf, "}"));
}
/* fake a dynamically reconfigurable menu using the 0th entry to deselect
* the others
*/
-static int run_trace_menu(MENU *m)
+static int
+run_trace_menu(MENU * m)
{
ITEM **items;
ITEM *i, **p;
@@ -2451,14 +2600,14 @@ static int run_trace_menu(MENU *m)
i = current_item(m);
if (i == items[0]) {
if (item_value(i)) {
- for (p = items+1; *p != 0; p++)
+ for (p = items + 1; *p != 0; p++)
if (item_value(*p)) {
set_item_value(*p, FALSE);
changed = TRUE;
}
}
} else {
- for (p = items+1; *p != 0; p++)
+ for (p = items + 1; *p != 0; p++)
if (item_value(*p)) {
set_item_value(items[0], FALSE);
changed = TRUE;
@@ -2471,15 +2620,16 @@ static int run_trace_menu(MENU *m)
}
}
-static void trace_set(void)
+static void
+trace_set(void)
/* interactively set the trace level */
{
- MENU *m;
- ITEM *items[SIZEOF(t_tbl)];
- ITEM **ip = items;
- int mrows, mcols, newtrace;
- int n;
- WINDOW *menuwin;
+ MENU *m;
+ ITEM *items[SIZEOF(t_tbl)];
+ ITEM **ip = items;
+ int mrows, mcols, newtrace;
+ int n;
+ WINDOW *menuwin;
mvaddstr(0, 0, "Interactively set trace level:");
mvaddstr(2, 0, " Press space bar to toggle a selection.");
@@ -2491,7 +2641,7 @@ static void trace_set(void)
for (n = 0; t_tbl[n].name != 0; n++)
*ip++ = new_item(t_tbl[n].name, "");
- *ip = (ITEM *)0;
+ *ip = (ITEM *) 0;
m = new_menu(items);
@@ -2499,7 +2649,7 @@ static void trace_set(void)
scale_menu(m, &mrows, &mcols);
menu_opts_off(m, O_ONEVALUE);
- menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X);
+ menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X);
set_menu_win(m, menuwin);
keypad(menuwin, TRUE);
box(menuwin, 0, 0);
@@ -2527,7 +2677,7 @@ static void trace_set(void)
_tracef("trace level interactively set to %s", tracetrace(_nc_tracing));
(void) mvprintw(LINES - 2, 0,
- "Trace level is %s\n", tracetrace(_nc_tracing));
+ "Trace level is %s\n", tracetrace(_nc_tracing));
(void) addstr("Press any key to continue...");
wGetchar(stdscr);
@@ -2547,38 +2697,39 @@ static void trace_set(void)
*
****************************************************************************/
#if USE_LIBFORM
-static FIELD *make_label(int frow, int fcol, NCURSES_CONST char *label)
+static FIELD *
+make_label(int frow, int fcol, NCURSES_CONST char *label)
{
- FIELD *f = new_field(1, strlen(label), frow, fcol, 0, 0);
+ FIELD *f = new_field(1, strlen(label), frow, fcol, 0, 0);
- if (f)
- {
+ if (f) {
set_field_buffer(f, 0, label);
set_field_opts(f, field_opts(f) & ~O_ACTIVE);
}
- return(f);
+ return (f);
}
-static FIELD *make_field(int frow, int fcol, int rows, int cols, bool secure)
+static FIELD *
+make_field(int frow, int fcol, int rows, int cols, bool secure)
{
- FIELD *f = new_field(rows, cols, frow, fcol, 0, secure ? 1 : 0);
+ FIELD *f = new_field(rows, cols, frow, fcol, 0, secure ? 1 : 0);
if (f) {
set_field_back(f, A_UNDERLINE);
- set_field_userptr(f, (void *)0);
+ set_field_userptr(f, (void *) 0);
}
- return(f);
+ return (f);
}
-static void display_form(FORM *f)
+static void
+display_form(FORM * f)
{
- WINDOW *w;
+ WINDOW *w;
int rows, cols;
scale_form(f, &rows, &cols);
- if ((w =newwin(rows+2, cols+4, 0, 0)) != (WINDOW *)0)
- {
+ if ((w = newwin(rows + 2, cols + 4, 0, 0)) != (WINDOW *) 0) {
set_form_win(f, w);
set_form_sub(f, derwin(w, rows, cols, 1, 2));
box(w, 0, 0);
@@ -2589,10 +2740,11 @@ static void display_form(FORM *f)
wrefresh(w);
}
-static void erase_form(FORM *f)
+static void
+erase_form(FORM * f)
{
- WINDOW *w = form_win(f);
- WINDOW *s = form_sub(f);
+ WINDOW *w = form_win(f);
+ WINDOW *s = form_sub(f);
unpost_form(f);
werase(w);
@@ -2601,17 +2753,18 @@ static void erase_form(FORM *f)
delwin(w);
}
-static int edit_secure(FIELD *me, int c)
+static int
+edit_secure(FIELD * me, int c)
{
- int rows, cols, frow, fcol, nbuf;
+ int rows, cols, frow, fcol, nrow, nbuf;
- if (field_info(me, &rows, &cols, &frow, &fcol, (int *)0, &nbuf) == E_OK
- && nbuf > 0) {
+ if (field_info(me, &rows, &cols, &frow, &fcol, &nrow, &nbuf) == E_OK
+ && nbuf > 0) {
char temp[80];
long len;
strcpy(temp, field_buffer(me, 1));
- len = (long)(char *) field_userptr(me);
+ len = (long) (char *) field_userptr(me);
if (c <= KEY_MAX) {
if (isgraph(c)) {
temp[len++] = c;
@@ -2652,62 +2805,137 @@ static int edit_secure(FIELD *me, int c)
temp[--len] = 0;
set_field_buffer(me, 1, temp);
}
- break;
+ break;
}
}
- set_field_userptr(me, (void *)len);
- }
- return c;
+ set_field_userptr(me, (void *) len);
+ }
+ return c;
}
-static int form_virtualize(FORM *f, WINDOW *w)
+static int
+form_virtualize(FORM * f, WINDOW *w)
{
static const struct {
int code;
int result;
} lookup[] = {
- { CTRL('A'), REQ_NEXT_CHOICE },
- { CTRL('B'), REQ_PREV_WORD },
- { CTRL('C'), REQ_CLR_EOL },
- { CTRL('D'), REQ_DOWN_FIELD },
- { CTRL('E'), REQ_END_FIELD },
- { CTRL('F'), REQ_NEXT_PAGE },
- { CTRL('G'), REQ_DEL_WORD },
- { CTRL('H'), REQ_DEL_PREV },
- { CTRL('I'), REQ_INS_CHAR },
- { CTRL('K'), REQ_CLR_EOF },
- { CTRL('L'), REQ_LEFT_FIELD },
- { CTRL('M'), REQ_NEW_LINE },
- { CTRL('N'), REQ_NEXT_FIELD },
- { CTRL('O'), REQ_INS_LINE },
- { CTRL('P'), REQ_PREV_FIELD },
- { CTRL('R'), REQ_RIGHT_FIELD },
- { CTRL('S'), REQ_BEG_FIELD },
- { CTRL('U'), REQ_UP_FIELD },
- { CTRL('V'), REQ_DEL_CHAR },
- { CTRL('W'), REQ_NEXT_WORD },
- { CTRL('X'), REQ_CLR_FIELD },
- { CTRL('Y'), REQ_DEL_LINE },
- { CTRL('Z'), REQ_PREV_CHOICE },
- { ESCAPE, MAX_FORM_COMMAND + 1 },
- { KEY_BACKSPACE, REQ_DEL_PREV },
- { KEY_DOWN, REQ_DOWN_CHAR },
- { KEY_END, REQ_LAST_FIELD },
- { KEY_HOME, REQ_FIRST_FIELD },
- { KEY_LEFT, REQ_LEFT_CHAR },
- { KEY_LL, REQ_LAST_FIELD },
- { KEY_NEXT, REQ_NEXT_FIELD },
- { KEY_NPAGE, REQ_NEXT_PAGE },
- { KEY_PPAGE, REQ_PREV_PAGE },
- { KEY_PREVIOUS, REQ_PREV_FIELD },
- { KEY_RIGHT, REQ_RIGHT_CHAR },
- { KEY_UP, REQ_UP_CHAR },
- { QUIT, MAX_FORM_COMMAND + 1 }
+ {
+ CTRL('A'), REQ_NEXT_CHOICE
+ },
+ {
+ CTRL('B'), REQ_PREV_WORD
+ },
+ {
+ CTRL('C'), REQ_CLR_EOL
+ },
+ {
+ CTRL('D'), REQ_DOWN_FIELD
+ },
+ {
+ CTRL('E'), REQ_END_FIELD
+ },
+ {
+ CTRL('F'), REQ_NEXT_PAGE
+ },
+ {
+ CTRL('G'), REQ_DEL_WORD
+ },
+ {
+ CTRL('H'), REQ_DEL_PREV
+ },
+ {
+ CTRL('I'), REQ_INS_CHAR
+ },
+ {
+ CTRL('K'), REQ_CLR_EOF
+ },
+ {
+ CTRL('L'), REQ_LEFT_FIELD
+ },
+ {
+ CTRL('M'), REQ_NEW_LINE
+ },
+ {
+ CTRL('N'), REQ_NEXT_FIELD
+ },
+ {
+ CTRL('O'), REQ_INS_LINE
+ },
+ {
+ CTRL('P'), REQ_PREV_FIELD
+ },
+ {
+ CTRL('R'), REQ_RIGHT_FIELD
+ },
+ {
+ CTRL('S'), REQ_BEG_FIELD
+ },
+ {
+ CTRL('U'), REQ_UP_FIELD
+ },
+ {
+ CTRL('V'), REQ_DEL_CHAR
+ },
+ {
+ CTRL('W'), REQ_NEXT_WORD
+ },
+ {
+ CTRL('X'), REQ_CLR_FIELD
+ },
+ {
+ CTRL('Y'), REQ_DEL_LINE
+ },
+ {
+ CTRL('Z'), REQ_PREV_CHOICE
+ },
+ {
+ ESCAPE, MAX_FORM_COMMAND + 1
+ },
+ {
+ KEY_BACKSPACE, REQ_DEL_PREV
+ },
+ {
+ KEY_DOWN, REQ_DOWN_CHAR
+ },
+ {
+ KEY_END, REQ_LAST_FIELD
+ },
+ {
+ KEY_HOME, REQ_FIRST_FIELD
+ },
+ {
+ KEY_LEFT, REQ_LEFT_CHAR
+ },
+ {
+ KEY_LL, REQ_LAST_FIELD
+ },
+ {
+ KEY_NEXT, REQ_NEXT_FIELD
+ },
+ {
+ KEY_NPAGE, REQ_NEXT_PAGE
+ },
+ {
+ KEY_PPAGE, REQ_PREV_PAGE
+ },
+ {
+ KEY_PREVIOUS, REQ_PREV_FIELD
+ },
+ {
+ KEY_RIGHT, REQ_RIGHT_CHAR
+ },
+ {
+ KEY_UP, REQ_UP_CHAR
+ },
+ {
+ QUIT, MAX_FORM_COMMAND + 1
+ }
};
- static int mode = REQ_INS_MODE;
- int c = wGetchar(w);
- unsigned n;
+ static int mode = REQ_INS_MODE;
+ int c = wGetchar(w);
+ unsigned n;
FIELD *me = current_field(f);
if (c == CTRL(']')) {
@@ -2717,7 +2945,7 @@ static int form_virtualize(FORM *f, WINDOW *w)
mode = REQ_INS_MODE;
c = mode;
} else {
- for (n = 0; n < sizeof(lookup)/sizeof(lookup[0]); n++) {
+ for (n = 0; n < sizeof(lookup) / sizeof(lookup[0]); n++) {
if (lookup[n].code == c) {
c = lookup[n].result;
break;
@@ -2739,25 +2967,26 @@ static int form_virtualize(FORM *f, WINDOW *w)
return c;
}
-static int my_form_driver(FORM *form, int c)
+static int
+my_form_driver(FORM * form, int c)
{
if (c == (MAX_FORM_COMMAND + 1)
- && form_driver(form, REQ_VALIDATION) == E_OK)
- return(TRUE);
- else
- {
+ && form_driver(form, REQ_VALIDATION) == E_OK)
+ return (TRUE);
+ else {
beep();
- return(FALSE);
+ return (FALSE);
}
}
-static void demo_forms(void)
+static void
+demo_forms(void)
{
- WINDOW *w;
- FORM *form;
- FIELD *f[12], *secure;
- int finished = 0, c;
- unsigned n = 0;
+ WINDOW *w;
+ FORM *form;
+ FIELD *f[12], *secure;
+ int finished = 0, c;
+ unsigned n = 0;
move(18, 0);
addstr("Defined form-traversal keys: ^Q/ESC- exit form\n");
@@ -2788,8 +3017,8 @@ static void demo_forms(void)
f[n++] = make_field(6, 0, 4, 46, FALSE);
f[n++] = make_label(5, 20, "Password:");
secure =
- f[n++] = make_field(5, 30, 1, 9, TRUE);
- f[n++] = (FIELD *)0;
+ f[n++] = make_field(5, 30, 1, 9, TRUE);
+ f[n++] = (FIELD *) 0;
form = new_form(f);
@@ -2797,10 +3026,9 @@ static void demo_forms(void)
w = form_win(form);
raw();
- while (!finished)
- {
- switch(form_driver(form, c = form_virtualize(form, w)))
- {
+ nonl(); /* lets us read ^M's */
+ while (!finished) {
+ switch (form_driver(form, c = form_virtualize(form, w))) {
case E_OK:
mvaddstr(5, 57, field_buffer(secure, 1));
clrtoeol();
@@ -2819,10 +3047,11 @@ static void demo_forms(void)
free_form(form);
for (c = 0; f[c] != 0; c++)
- free_field(f[c]);
+ free_field(f[c]);
noraw();
+ nl();
}
-#endif /* USE_LIBFORM */
+#endif /* USE_LIBFORM */
/****************************************************************************
*
@@ -2830,42 +3059,42 @@ static void demo_forms(void)
*
****************************************************************************/
-static void fillwin(WINDOW *win, char ch)
+static void
+fillwin(WINDOW *win, char ch)
{
int y, x;
int y1, x1;
getmaxyx(win, y1, x1);
- for (y = 0; y < y1; y++)
- {
+ for (y = 0; y < y1; y++) {
wmove(win, y, 0);
for (x = 0; x < x1; x++)
waddch(win, ch);
}
}
-static void crosswin(WINDOW *win, char ch)
+static void
+crosswin(WINDOW *win, char ch)
{
int y, x;
int y1, x1;
getmaxyx(win, y1, x1);
- for (y = 0; y < y1; y++)
- {
+ for (y = 0; y < y1; y++) {
for (x = 0; x < x1; x++)
if (((x > (x1 - 1) / 3) && (x <= (2 * (x1 - 1)) / 3))
- || (((y > (y1 - 1) / 3) && (y <= (2 * (y1 - 1)) / 3))))
- {
+ || (((y > (y1 - 1) / 3) && (y <= (2 * (y1 - 1)) / 3)))) {
wmove(win, y, x);
waddch(win, ch);
}
}
}
-static void overlap_test(void)
+static void
+overlap_test(void)
/* test effects of overlapping windows */
{
- int ch;
+ int ch;
WINDOW *win1 = newwin(9, 20, 3, 3);
WINDOW *win2 = newwin(9, 20, 9, 16);
@@ -2877,7 +3106,6 @@ static void overlap_test(void)
printw("the shared region of two overlapping windows A and B. The cross\n");
printw("pattern in each window does not overlap the other.\n");
-
move(18, 0);
printw("a = refresh A, then B, then doupdate. b = refresh B, then A, then doupdaute\n");
printw("c = fill window A with letter A. d = fill window B with letter B.\n");
@@ -2887,8 +3115,7 @@ static void overlap_test(void)
printw("^Q/ESC = terminate test.");
while ((ch = Getchar()) != QUIT && ch != ESCAPE)
- switch (ch)
- {
+ switch (ch) {
case 'a': /* refresh window A first, then B */
wnoutrefresh(win1);
wnoutrefresh(win2);
@@ -2952,8 +3179,7 @@ static bool
do_single_test(const char c)
/* perform a single specified test */
{
- switch (c)
- {
+ switch (c) {
case 'a':
getch_test();
break;
@@ -3023,12 +3249,12 @@ do_single_test(const char c)
#endif
case 's':
- overlap_test();
+ overlap_test();
break;
#if USE_LIBMENU && defined(TRACE)
case 't':
- trace_set();
+ trace_set();
break;
#endif
@@ -3045,10 +3271,14 @@ do_single_test(const char c)
static void
usage(void)
{
- static const char *const tbl[] = {
- "Usage: ncurses [options]"
+ static const char *const tbl[] =
+ {
+ "Usage: ncurses [options]"
,""
,"Options:"
+#ifdef NCURSES_VERSION
+ ," -d use default-colors if terminal supports them"
+#endif
," -e fmt specify format for soft-keys test (e)"
," -f rip-off footer line (can repeat)"
," -h rip-off header line (can repeat)"
@@ -3058,7 +3288,7 @@ usage(void)
#endif
};
size_t n;
- for (n = 0; n < sizeof(tbl)/sizeof(tbl[0]); n++)
+ for (n = 0; n < sizeof(tbl) / sizeof(tbl[0]); n++)
fprintf(stderr, "%s\n", tbl[n]);
exit(EXIT_FAILURE);
}
@@ -3075,30 +3305,33 @@ set_terminal_modes(void)
}
#ifdef SIGUSR1
-static RETSIGTYPE announce_sig(int sig)
+static RETSIGTYPE
+announce_sig(int sig)
{
(void) fprintf(stderr, "Handled signal %d\r\n", sig);
}
#endif
-static int rip_footer(WINDOW *win, int columns)
+static int
+rip_footer(WINDOW *win, int columns)
{
- wbkgd(win, A_REVERSE);
- werase(win);
- wmove(win, 0, 0);
- wprintw(win, "footer: %d columns", columns);
- wnoutrefresh(win);
- return OK;
+ wbkgd(win, A_REVERSE);
+ werase(win);
+ wmove(win, 0, 0);
+ wprintw(win, "footer: %d columns", columns);
+ wnoutrefresh(win);
+ return OK;
}
-static int rip_header(WINDOW *win, int columns)
+static int
+rip_header(WINDOW *win, int columns)
{
- wbkgd(win, A_REVERSE);
- werase(win);
- wmove(win, 0, 0);
- wprintw(win, "header: %d columns", columns);
- wnoutrefresh(win);
- return OK;
+ wbkgd(win, A_REVERSE);
+ werase(win);
+ wmove(win, 0, 0);
+ wprintw(win, "header: %d columns", columns);
+ wnoutrefresh(win);
+ return OK;
}
/*+-------------------------------------------------------------------------
@@ -3108,23 +3341,31 @@ static int rip_header(WINDOW *win, int columns)
int
main(int argc, char *argv[])
{
- int command, c;
- int my_e_param = 1;
+ int command, c;
+ int my_e_param = 1;
+#ifdef NCURSES_VERSION
+ bool default_colors = FALSE;
+#endif
#if HAVE_LOCALE_H
setlocale(LC_CTYPE, "");
#endif
- while ((c = getopt(argc, argv, "e:fhs:t:")) != EOF) {
+ while ((c = getopt(argc, argv, "de:fhs:t:")) != EOF) {
switch (c) {
+#ifdef NCURSES_VERSION
+ case 'd':
+ default_colors = TRUE;
+ break;
+#endif
case 'e':
my_e_param = atoi(optarg);
#ifdef NCURSES_VERSION
if (my_e_param > 3) /* allow extended layouts */
- usage();
+ usage();
#else
if (my_e_param > 1)
- usage();
+ usage();
#endif
break;
case 'f':
@@ -3159,7 +3400,7 @@ main(int argc, char *argv[])
trace(save_trace);
#else
if (!isatty(fileno(stdin)))
- trace(save_trace);
+ trace(save_trace);
#endif /* USE_LIBMENU */
#endif /* TRACE */
@@ -3176,7 +3417,13 @@ main(int argc, char *argv[])
bkgdset(BLANK);
/* tests, in general, will want these modes */
- start_color();
+ if (has_colors()) {
+ start_color();
+#ifdef NCURSES_VERSION
+ if (default_colors)
+ use_default_colors();
+#endif
+ }
set_terminal_modes();
def_prog_mode();
@@ -3190,9 +3437,9 @@ main(int argc, char *argv[])
(void) printf("Welcome to %s. Press ? for help.\n", curses_version());
#elif defined(NCURSES_VERSION_MAJOR) && defined(NCURSES_VERSION_MINOR) && defined(NCURSES_VERSION_PATCH)
(void) printf("Welcome to ncurses %d.%d.%d. Press ? for help.\n",
- NCURSES_VERSION_MAJOR,
- NCURSES_VERSION_MINOR,
- NCURSES_VERSION_PATCH);
+ NCURSES_VERSION_MAJOR,
+ NCURSES_VERSION_MINOR,
+ NCURSES_VERSION_PATCH);
#else
(void) puts("Welcome to ncurses. Press ? for help.");
#endif
@@ -3226,7 +3473,7 @@ main(int argc, char *argv[])
(void) puts("? = repeat this command summary");
(void) fputs("> ", stdout);
- (void) fflush(stdout); /* necessary under SVr4 curses */
+ (void) fflush(stdout); /* necessary under SVr4 curses */
/*
* This used to be an 'fgets()' call. However (on Linux, at least)
@@ -3234,41 +3481,44 @@ main(int argc, char *argv[])
* input stream to be flushed when switching between the two.
*/
command = 0;
- for(;;) {
- char ch;
- if (read(fileno(stdin), &ch, 1) <= 0) {
- if (command == 0)
- command = 'q';
- break;
- } else if (command == 0 && !isspace(ch)) {
- command = ch;
- } else if (ch == '\n' || ch == '\r') {
- if (command != 0)
- break;
- (void) fputs("> ", stdout);
- (void) fflush(stdout);
- }
+ for (;;) {
+ char ch;
+ if (read(fileno(stdin), &ch, 1) <= 0) {
+ if (command == 0)
+ command = 'q';
+ break;
+ } else if (command == 0 && !isspace(ch)) {
+ command = ch;
+ } else if (ch == '\n' || ch == '\r') {
+ if (command != 0)
+ break;
+ (void) fputs("> ", stdout);
+ (void) fflush(stdout);
+ }
}
if (do_single_test(command)) {
- /*
- * This may be overkill; it's intended to reset everything back
- * to the initial terminal modes so that tests don't get in
- * each other's way.
- */
- flushinp();
- set_terminal_modes();
- reset_prog_mode();
- clear();
- refresh();
- endwin();
- if (command == '?') {
- (void) puts("This is the ncurses capability tester.");
- (void) puts("You may select a test from the main menu by typing the");
- (void) puts("key letter of the choice (the letter to left of the =)");
- (void) puts("at the > prompt. The commands `x' or `q' will exit.");
- }
- continue;
+ /*
+ * This may be overkill; it's intended to reset everything back
+ * to the initial terminal modes so that tests don't get in
+ * each other's way.
+ */
+ flushinp();
+ set_terminal_modes();
+ reset_prog_mode();
+ clear();
+ refresh();
+ endwin();
+ if (command == '?') {
+ (void) puts("This is the ncurses capability tester.");
+ (void)
+ puts("You may select a test from the main menu by typing the");
+ (void)
+ puts("key letter of the choice (the letter to left of the =)");
+ (void)
+ puts("at the > prompt. The commands `x' or `q' will exit.");
+ }
+ continue;
}
} while
(command != 'q');
diff --git a/contrib/ncurses/test/railroad.c b/contrib/ncurses/test/railroad.c
new file mode 100644
index 000000000000..d3dc2eae8024
--- /dev/null
+++ b/contrib/ncurses/test/railroad.c
@@ -0,0 +1,201 @@
+/****************************************************************************
+ * Copyright (c) 2000 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 *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************/
+
+/*
+ * Author: Thomas E. Dickey <dickey@clark.net> 2000
+ *
+ * $Id: railroad.c,v 1.1 2000/01/15 02:41:27 tom Exp $
+ *
+ * A simple demo of the termcap interface.
+ */
+#include <test.priv.h>
+
+#include <termcap.h>
+#include <ctype.h>
+#include <signal.h>
+
+static char *finisC;
+static char *finisS;
+static char *finisU;
+
+static char *startC;
+static char *startS;
+static char *startU;
+
+static char *backup;
+
+static bool interrupted = FALSE;
+
+static int
+outc(int c)
+{
+ if (interrupted) {
+ char tmp = c;
+ write(STDOUT_FILENO, &tmp, 1);
+ } else {
+ putc(c, stdout);
+ }
+ return 0;
+}
+
+static void
+PutChar(int ch)
+{
+ putchar(ch);
+ fflush(stdout);
+ napms(50); /* not really termcap... */
+}
+
+static void
+Backup(void)
+{
+ tputs(backup != 0 ? backup : "\b", 1, outc);
+}
+
+static void
+ShowCursor(int flag)
+{
+ if (startC != 0 && finisC != 0) {
+ tputs(flag ? startC : finisC, 1, outc);
+ }
+}
+
+static void
+StandOut(int flag)
+{
+ if (startS != 0 && finisS != 0) {
+ tputs(flag ? startS : finisS, 1, outc);
+ }
+}
+
+static void
+Underline(int flag)
+{
+ if (startU != 0 && finisU != 0) {
+ tputs(flag ? startU : finisU, 1, outc);
+ }
+}
+
+static void
+ShowSign(char *string)
+{
+ int ch, first, last;
+
+ while (*string != 0) {
+ ch = *string;
+ last = ch;
+ if (isalpha(ch)) {
+ first = isupper(ch) ? 'A' : 'a';
+ } else if (isdigit(ch)) {
+ first = '0';
+ } else {
+ first = ch;
+ }
+ if (first < last) {
+ Underline(1);
+ while (first < last) {
+ PutChar(first);
+ Backup();
+ first++;
+ }
+ Underline(0);
+ }
+ StandOut(1);
+ PutChar(ch);
+ StandOut(0);
+ fflush(stdout);
+ string++;
+ }
+ putchar('\n');
+}
+
+static void
+cleanup(void)
+{
+ Underline(0);
+ StandOut(0);
+ ShowCursor(1);
+}
+
+static void
+onsig(int n GCC_UNUSED)
+{
+ interrupted = TRUE;
+ cleanup();
+ exit(EXIT_FAILURE);
+}
+
+static void
+railroad(char **args)
+{
+ char *name = getenv("TERM");
+ char buffer[1024];
+ char area[1024], *ap = area;
+ int j;
+
+ if (name == 0)
+ name = "dumb";
+ if (tgetent(buffer, name)) {
+ startS = tgetstr("so", &ap);
+ finisS = tgetstr("se", &ap);
+
+ startU = tgetstr("us", &ap);
+ finisU = tgetstr("ue", &ap);
+
+ backup = tgetstr("le", &ap);
+
+ startC = tgetstr("ve", &ap);
+ finisC = tgetstr("vi", &ap);
+
+ ShowCursor(0);
+
+ for (j = SIGHUP; j <= SIGTERM; j++)
+ if (signal(j, SIG_IGN) != SIG_IGN)
+ signal(j, onsig);
+
+ while (*args) {
+ ShowSign(*args++);
+ }
+ ShowCursor(1);
+ }
+}
+
+int
+main(
+ int argc,
+ char *argv[])
+{
+ if (argc > 1) {
+ railroad(argv + 1);
+ } else {
+ static char *hello[] =
+ {"Hello World", 0};
+ railroad(hello);
+ }
+ return EXIT_SUCCESS;
+}
diff --git a/contrib/ncurses/test/rain.c b/contrib/ncurses/test/rain.c
index 646ab96ee639..262f87d279b9 100644
--- a/contrib/ncurses/test/rain.c
+++ b/contrib/ncurses/test/rain.c
@@ -1,5 +1,5 @@
/*
- * $Id: rain.c,v 1.13 1999/10/23 01:31:26 tom Exp $
+ * $Id: rain.c,v 1.14 1999/11/13 23:39:07 tom Exp $
*/
#include <test.priv.h>
@@ -42,7 +42,7 @@ float c;
if (has_colors()) {
int bg = COLOR_BLACK;
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
bg = -1;
#endif
diff --git a/contrib/ncurses/test/tclock.c b/contrib/ncurses/test/tclock.c
index 0c79568411be..838f45e70920 100644
--- a/contrib/ncurses/test/tclock.c
+++ b/contrib/ncurses/test/tclock.c
@@ -128,7 +128,7 @@ main(
if (has_colors()) {
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
my_bg = -1;
#endif
diff --git a/contrib/ncurses/test/test.priv.h b/contrib/ncurses/test/test.priv.h
index 0ae433195e42..affed8d7e76a 100644
--- a/contrib/ncurses/test/test.priv.h
+++ b/contrib/ncurses/test/test.priv.h
@@ -29,7 +29,7 @@
/****************************************************************************
* Author: Thomas E. Dickey <dickey@clark.net> 1996 *
****************************************************************************/
-/* $Id: test.priv.h,v 1.15 1998/02/11 12:14:04 tom Exp $ */
+/* $Id: test.priv.h,v 1.16 2000/04/15 17:52:08 tom Exp $ */
#if HAVE_CONFIG_H
#include <ncurses_cfg.h>
#endif
@@ -68,6 +68,9 @@ extern int optind;
#if defined(NCURSES_VERSION) && HAVE_NC_ALLOC_H
#include <nc_alloc.h>
+#else
+#define typeMalloc(type,n) (type *) malloc(n * sizeof(type))
+#define typeRealloc(type,n,p) (type *) realloc(p, n * sizeof(type))
#endif
#ifndef ExitProgram
diff --git a/contrib/ncurses/test/testcurs.c b/contrib/ncurses/test/testcurs.c
index ff776570e2e8..5fa054a943a5 100644
--- a/contrib/ncurses/test/testcurs.c
+++ b/contrib/ncurses/test/testcurs.c
@@ -7,7 +7,7 @@
* wrs(5/28/93) -- modified to be consistent (perform identically) with either
* PDCurses or under Unix System V, R4
*
- * $Id: testcurs.c,v 1.19 1999/02/14 00:42:28 tom Exp $
+ * $Id: testcurs.c,v 1.22 2000/06/17 23:23:34 tom Exp $
*/
#include <test.priv.h>
@@ -17,103 +17,102 @@
char *XCursesProgramName = "testcurs";
#endif
-static int initTest (WINDOW **);
-static void display_menu (int,int);
-static void inputTest (WINDOW *);
-static void introTest (WINDOW *);
-static void outputTest (WINDOW *);
-static void padTest (WINDOW *);
-static void scrollTest (WINDOW *);
-# if defined(PDCURSES) && !defined(XCURSES)
-static void resizeTest (WINDOW *);
+static int initTest(WINDOW **);
+static void display_menu(int, int);
+static void inputTest(WINDOW *);
+static void introTest(WINDOW *);
+static void outputTest(WINDOW *);
+static void padTest(WINDOW *);
+static void scrollTest(WINDOW *);
+#if defined(PDCURSES) && !defined(XCURSES)
+static void resizeTest(WINDOW *);
#endif
-struct commands
-{
- NCURSES_CONST char *text;
- void (*function)(WINDOW *);
+struct commands {
+ NCURSES_CONST char *text;
+ void (*function) (WINDOW *);
};
typedef struct commands COMMAND;
const COMMAND command[] =
{
- {"Intro Test", introTest},
- {"Pad Test", padTest},
-# if defined(PDCURSES) && !defined(XCURSES)
- {"Resize Test", resizeTest},
+ {"Intro Test", introTest},
+ {"Pad Test", padTest},
+#if defined(PDCURSES) && !defined(XCURSES)
+ {"Resize Test", resizeTest},
#endif
- {"Scroll Test", scrollTest},
- {"Input Test", inputTest},
- {"Output Test", outputTest}
+ {"Scroll Test", scrollTest},
+ {"Input Test", inputTest},
+ {"Output Test", outputTest}
};
#define MAX_OPTIONS ((sizeof(command)/sizeof(command[0])))
-int width, height;
+int width, height;
int
main(
- int argc GCC_UNUSED,
- char *argv[] GCC_UNUSED)
+ int argc GCC_UNUSED,
+ char *argv[]GCC_UNUSED)
{
-WINDOW *win;
-int key,old_option=(-1),new_option=0;
-bool quit=FALSE;
+ WINDOW *win;
+ int key, old_option = (-1), new_option = 0;
+ bool quit = FALSE;
#ifdef PDCDEBUG
- PDC_debug("testcurs started\n");
+ PDC_debug("testcurs started\n");
#endif
- if (!initTest (&win)) return EXIT_FAILURE;
+ if (!initTest(&win))
+ return EXIT_FAILURE;
+ erase();
+ display_menu(old_option, new_option);
+ while (1) {
#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(1,COLOR_WHITE,COLOR_BLUE);
- wbkgd(win, COLOR_PAIR(1));
- }
- else
- wbkgd(win, A_REVERSE);
+ if (has_colors()) {
+ init_pair(1, COLOR_WHITE, COLOR_BLUE);
+ wbkgd(win, COLOR_PAIR(1));
+ } else
+ wbkgd(win, A_REVERSE);
#else
- wbkgd(win, A_REVERSE);
+ wbkgd(win, A_REVERSE);
#endif
+ werase(win);
+
+ noecho();
+ keypad(stdscr, TRUE);
+ raw();
+ key = getch();
+ switch (key) {
+ case 10:
+ case 13:
+ case KEY_ENTER:
+ erase();
+ refresh();
+ (*command[new_option].function) (win);
+ erase();
+ display_menu(old_option, new_option);
+ break;
+ case KEY_UP:
+ new_option = (new_option == 0) ? new_option : new_option - 1;
+ display_menu(old_option, new_option);
+ break;
+ case KEY_DOWN:
+ new_option = (new_option == MAX_OPTIONS - 1) ? new_option :
+ new_option + 1;
+ display_menu(old_option, new_option);
+ break;
+ case 'Q':
+ case 'q':
+ quit = TRUE;
+ break;
+ default:
+ break;
+ }
+ if (quit == TRUE)
+ break;
+ }
- erase();
- display_menu(old_option,new_option);
- while(1)
- {
- noecho();
- keypad(stdscr,TRUE);
- raw();
- key = getch();
- switch(key)
- {
- case 10:
- case 13:
- case KEY_ENTER:
- erase();
- refresh();
- (*command[new_option].function)(win);
- erase();
- display_menu(old_option,new_option);
- break;
- case KEY_UP:
- new_option = (new_option == 0) ? new_option : new_option-1;
- display_menu(old_option,new_option);
- break;
- case KEY_DOWN:
- new_option = (new_option == MAX_OPTIONS-1) ? new_option : new_option+1;
- display_menu(old_option,new_option);
- break;
- case 'Q':
- case 'q':
- quit = TRUE;
- break;
- default: break;
- }
- if (quit == TRUE)
- break;
- }
-
- delwin (win);
+ delwin(win);
endwin();
#ifdef XCURSES
@@ -122,24 +121,35 @@ bool quit=FALSE;
return EXIT_SUCCESS;
}
-static
-void Continue (WINDOW *win)
+static void
+Continue(WINDOW *win)
{
- wmove(win, 10, 1);
+ int y1 = getmaxy(win);
+ int x1 = getmaxx(win);
+ int y0 = y1 < 10 ? y1 : 10;
+ int x0 = 1;
+ long save;
+
+ save = mvwinch(win, y0, x1 - 1);
+
+ mvwaddstr(win, y0, x0, " Press any key to continue");
wclrtoeol(win);
- mvwaddstr(win, 10, 1, " Press any key to continue");
- wrefresh(win);
+ getyx(win, y0, x0);
+
+ mvwaddch(win, y0, x1 - 1, save);
+
+ wmove(win, y0, x0);
raw();
wgetch(win);
}
static int
-initTest (WINDOW **win)
+initTest(WINDOW **win)
{
#ifdef PDCDEBUG
PDC_debug("initTest called\n");
#endif
-#ifdef NCURSES_VERSION
+#ifdef TRACE
trace(TRACE_MAXIMUM);
#endif
initscr();
@@ -148,106 +158,115 @@ initTest (WINDOW **win)
#endif
#ifdef A_COLOR
if (has_colors())
- start_color();
+ start_color();
#endif
- width = 60;
- height = 13; /* Create a drawing window */
- *win = newwin(height, width, (LINES-height)/2, (COLS-width)/2);
- if(*win == NULL)
- {
- endwin();
- return 0;
+ width = 60;
+ height = 13; /* Create a drawing window */
+ *win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
+ if (*win == NULL) {
+ endwin();
+ return 0;
}
return 1;
}
static void
-introTest (WINDOW *win)
+introTest(WINDOW *win)
{
- wmove( win, height/2-5, width/2 );
- wvline( win, ACS_VLINE, 10 );
- wmove( win, height/2, width/2-10 );
- whline( win, ACS_HLINE, 20 );
+ wmove(win, height / 2 - 5, width / 2);
+ wvline(win, ACS_VLINE, 10);
+ wmove(win, height / 2, width / 2 - 10);
+ whline(win, ACS_HLINE, 20);
Continue(win);
- beep ();
+ beep();
werase(win);
box(win, ACS_VLINE, ACS_HLINE);
wrefresh(win);
- cbreak ();
- mvwaddstr(win, 1, 1, "You should have rectangle in the middle of the screen");
+ cbreak();
+ mvwaddstr(win, 1, 1,
+ "You should have rectangle in the middle of the screen");
mvwaddstr(win, 2, 1, "You should have heard a beep");
Continue(win);
return;
}
static void
-scrollTest (WINDOW *win)
+scrollTest(WINDOW *win)
{
int i;
+ int half;
int OldX, OldY;
NCURSES_CONST char *Message = "The window will now scroll slowly";
wclear(win);
- mvwprintw (win, height - 2, 1, Message);
- wrefresh (win);
+ getmaxyx(win, OldY, OldX);
+ half = OldY / 2;
+ mvwprintw(win, OldY - 2, 1, Message);
+ wrefresh(win);
scrollok(win, TRUE);
- for (i = 1; i <= height; i++) {
- napms(250);
- scroll(win);
- wrefresh (win);
+ for (i = 1; i <= OldY; i++) {
+ napms(600);
+ scroll(win);
+ wrefresh(win);
}
- getmaxyx (win, OldY, OldX);
- mvwprintw (win, 6, 1, "The top of the window will scroll");
- wmove (win, 1, 1);
- wsetscrreg (win, 0, 4);
+ werase(win);
+ for (i = 1; i < OldY; i++) {
+ mvwprintw(win, i, 1, "Line %d", i);
+ }
+ mvwprintw(win, OldY - 2, 1, "The top of the window will scroll");
+ wmove(win, 1, 1);
+ wsetscrreg(win, 0, half - 1);
box(win, ACS_VLINE, ACS_HLINE);
- wrefresh (win);
- for (i = 1; i <= 5; i++) {
- napms(500);
- scroll(win);
- wrefresh (win);
+ wrefresh(win);
+ for (i = 1; i <= half; i++) {
+ napms(600);
+ scroll(win);
+ box(win, ACS_VLINE, ACS_HLINE);
+ wrefresh(win);
}
- mvwprintw (win, 3, 1, "The bottom of the window will scroll");
- wmove (win, 8, 1);
- wsetscrreg (win, 5, --OldY);
+ werase(win);
+ for (i = 1; i < OldY; i++) {
+ mvwprintw(win, i, 1, "Line %d", i);
+ }
+ mvwprintw(win, 1, 1, "The bottom of the window will scroll");
+ wmove(win, OldY - 2, 1);
+ wsetscrreg(win, half, --OldY);
box(win, ACS_VLINE, ACS_HLINE);
- wrefresh (win);
- for (i = 5; i <= OldY; i++) {
- napms (300);
- wscrl(win,-1);
- wrefresh (win);
+ wrefresh(win);
+ for (i = half; i <= OldY; i++) {
+ napms(600);
+ wscrl(win, -1);
+ box(win, ACS_VLINE, ACS_HLINE);
+ wrefresh(win);
}
- wsetscrreg (win, 0, OldY);
-
+ wsetscrreg(win, 0, OldY);
}
static void
-inputTest (WINDOW *win)
+inputTest(WINDOW *win)
{
- int w, h, bx, by, sw, sh, i, c,num;
- char buffer [80];
+ int w, h, bx, by, sw, sh, i, c, num;
+ char buffer[80];
WINDOW *subWin;
- wclear (win);
+ wclear(win);
- getmaxyx(win, h, w);
+ getmaxyx(win, h, w);
getbegyx(win, by, bx);
sw = w / 3;
sh = h / 3;
- if((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == NULL)
- return;
+ if ((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == NULL)
+ return;
#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(2,COLOR_WHITE,COLOR_RED);
- wbkgd(subWin, COLOR_PAIR(2) | A_BOLD);
- }
- else
- wbkgd(subWin, A_BOLD);
+ if (has_colors()) {
+ init_pair(2, COLOR_WHITE, COLOR_RED);
+ wbkgd(subWin, COLOR_PAIR(2) | A_BOLD);
+ } else
+ wbkgd(subWin, A_BOLD);
#else
wbkgd(subWin, A_BOLD);
#endif
@@ -259,16 +278,16 @@ inputTest (WINDOW *win)
mvwaddstr(win, 1, 1, "Pressing ^C should do nothing");
wrefresh(win);
- werase (subWin);
+ werase(subWin);
box(subWin, ACS_VLINE, ACS_HLINE);
for (i = 0; i < 5; i++) {
- mvwprintw (subWin, 1, 1, "Time = %d", i);
- wrefresh(subWin);
- napms(1000);
- flushinp();
+ mvwprintw(subWin, 1, 1, "Time = %d", i);
+ wrefresh(subWin);
+ napms(1000);
+ flushinp();
}
- delwin (subWin);
+ delwin(subWin);
werase(win);
flash();
wrefresh(win);
@@ -287,7 +306,7 @@ inputTest (WINDOW *win)
mvwaddstr(win, 4, 1, "The character should now have been deleted");
Continue(win);
- wclear (win);
+ wclear(win);
mvwaddstr(win, 1, 1, "Press keys (or mouse buttons) to show their names");
mvwaddstr(win, 2, 1, "Press spacebar to finish");
wrefresh(win);
@@ -298,49 +317,44 @@ inputTest (WINDOW *win)
#if defined(PDCURSES)
mouse_set(ALL_MOUSE_EVENTS);
#endif
- while(1) {
- wmove(win,3,5);
- c = wgetch(win);
- wclrtobot(win);
- if (c >= KEY_MIN)
- wprintw(win,"Key Pressed: %s", keyname(c));
- else
- if (isprint(c))
- wprintw(win,"Key Pressed: %c", c);
- else
- wprintw(win,"Key Pressed: %s", unctrl(c));
+ while (1) {
+ wmove(win, 3, 5);
+ c = wgetch(win);
+ wclrtobot(win);
+ if (c >= KEY_MIN)
+ wprintw(win, "Key Pressed: %s", keyname(c));
+ else if (isprint(c))
+ wprintw(win, "Key Pressed: %c", c);
+ else
+ wprintw(win, "Key Pressed: %s", unctrl(c));
#if defined(PDCURSES)
- if (c == KEY_MOUSE) {
- int button=0;
- request_mouse_pos();
- if (BUTTON_CHANGED(1))
- button = 1;
- else
- if (BUTTON_CHANGED(2))
- button = 2;
- else
- if (BUTTON_CHANGED(3))
- button = 3;
- else
- button = 0;
- wmove(win,4,18);
- wprintw(win,"Button %d: ",button);
- if (MOUSE_MOVED)
- wprintw(win,"moved: ");
- else
- if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_PRESSED)
- wprintw(win,"pressed: ");
- else
- if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_DOUBLE_CLICKED)
- wprintw(win,"double: ");
- else
- wprintw(win,"released: ");
- wprintw(win," Position: Y: %d X: %d",MOUSE_Y_POS,MOUSE_X_POS);
- }
+ if (c == KEY_MOUSE) {
+ int button = 0;
+ request_mouse_pos();
+ if (BUTTON_CHANGED(1))
+ button = 1;
+ else if (BUTTON_CHANGED(2))
+ button = 2;
+ else if (BUTTON_CHANGED(3))
+ button = 3;
+ else
+ button = 0;
+ wmove(win, 4, 18);
+ wprintw(win, "Button %d: ", button);
+ if (MOUSE_MOVED)
+ wprintw(win, "moved: ");
+ else if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_PRESSED)
+ wprintw(win, "pressed: ");
+ else if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_DOUBLE_CLICKED)
+ wprintw(win, "double: ");
+ else
+ wprintw(win, "released: ");
+ wprintw(win, " Position: Y: %d X: %d", MOUSE_Y_POS, MOUSE_X_POS);
+ }
#endif
- wrefresh(win);
- if (c == ' ')
- break;
+ wrefresh(win);
+ if (c == ' ')
+ break;
}
#if 0
nodelay(win, TRUE);
@@ -351,9 +365,10 @@ inputTest (WINDOW *win)
mouse_set(0L);
#endif
refresh();
- wclear (win);
+ wclear(win);
mvwaddstr(win, 3, 2, "The window should have moved");
- mvwaddstr(win, 4, 2, "This text should have appeared without you pressing a key");
+ mvwaddstr(win, 4, 2,
+ "This text should have appeared without you pressing a key");
mvwaddstr(win, 6, 2, "Enter a number then a string separated by space");
mvwin(win, 2, 1);
wrefresh(win);
@@ -361,25 +376,26 @@ inputTest (WINDOW *win)
noraw();
num = 0;
*buffer = 0;
- mvwscanw(win, 7, 6, "%d %s", &num,buffer);
- mvwprintw(win, 8, 6, "String: %s Number: %d", buffer,num);
+ mvwscanw(win, 7, 6, "%d %s", &num, buffer);
+ mvwprintw(win, 8, 6, "String: %s Number: %d", buffer, num);
Continue(win);
}
static void
-outputTest (WINDOW *win)
+outputTest(WINDOW *win)
{
WINDOW *win1;
- char Buffer [80];
+ char Buffer[80];
chtype ch;
int by, bx;
- nl ();
- wclear (win);
- mvwaddstr(win, 1, 1, "You should now have a screen in the upper left corner, and this text should have wrapped");
+ nl();
+ wclear(win);
+ mvwaddstr(win, 1, 1,
+ "You should now have a screen in the upper left corner, and this text should have wrapped");
mvwin(win, 2, 1);
- waddstr(win,"\nThis text should be down\n");
- waddstr(win, "and broken into two here ^");
+ waddstr(win, "\nThis text should be down\n");
+ waddstr(win, "and broken into two here ^");
Continue(win);
wclear(win);
@@ -392,51 +408,51 @@ outputTest (WINDOW *win)
getbegyx(win, by, bx);
if (LINES < 24 || COLS < 75) {
- mvwaddstr(win, 5, 1, "Some tests have been skipped as they require a");
- mvwaddstr(win, 6, 1, "display of at least 24 LINES by 75 COLUMNS");
- Continue(win);
+ mvwaddstr(win, 5, 1,
+ "Some tests have been skipped as they require a");
+ mvwaddstr(win, 6, 1, "display of at least 24 LINES by 75 COLUMNS");
+ Continue(win);
} else {
- win1 = newwin(10, 50, 14, 25);
- if(win1 == NULL)
- {
- endwin();
- return;
- }
+ win1 = newwin(10, 50, 14, 25);
+ if (win1 == NULL) {
+ endwin();
+ return;
+ }
#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(3,COLOR_BLUE,COLOR_WHITE);
- wbkgd(win1, COLOR_PAIR(3));
- }
- else
- wbkgd(win1, A_NORMAL);
+ if (has_colors()) {
+ init_pair(3, COLOR_BLUE, COLOR_WHITE);
+ wbkgd(win1, COLOR_PAIR(3));
+ } else
+ wbkgd(win1, A_NORMAL);
#else
- wbkgd(win1, A_NORMAL);
+ wbkgd(win1, A_NORMAL);
#endif
- wclear (win1);
- mvwaddstr(win1, 5, 1, "This text should appear; using overlay option");
- copywin(win, win1,0,0,0,0,9,49,TRUE);
+ wclear(win1);
+ mvwaddstr(win1, 5, 1,
+ "This text should appear; using overlay option");
+ copywin(win, win1, 0, 0, 0, 0, 9, 49, TRUE);
#if defined(PDCURSES) && !defined(XCURSES)
- box(win1,0xb3,0xc4);
+ box(win1, 0xb3, 0xc4);
#else
- box(win1,ACS_VLINE,ACS_HLINE);
+ box(win1, ACS_VLINE, ACS_HLINE);
#endif
- wmove(win1, 8, 26);
- wrefresh(win1);
- wgetch(win1);
-
- wclear(win1);
- wattron(win1, A_BLINK);
- mvwaddstr(win1, 4, 1, "This blinking text should appear in only the second window");
- wattroff(win1, A_BLINK);
- mvwin(win1, by, bx);
- overlay(win, win1);
- mvwin(win1,14,25);
- wmove(win1, 8, 26);
- wrefresh(win1);
- wgetch(win1);
- delwin(win1);
+ wmove(win1, 8, 26);
+ wrefresh(win1);
+ wgetch(win1);
+
+ wclear(win1);
+ wattron(win1, A_BLINK);
+ mvwaddstr(win1, 4, 1,
+ "This blinking text should appear in only the second window");
+ wattroff(win1, A_BLINK);
+ mvwin(win1, by, bx);
+ overlay(win, win1);
+ mvwin(win1, 14, 25);
+ wmove(win1, 8, 26);
+ wrefresh(win1);
+ wgetch(win1);
+ delwin(win1);
}
clear();
@@ -446,74 +462,75 @@ outputTest (WINDOW *win)
mvwaddstr(win, 4, 2, "Only half of the next line is visible");
mvwaddstr(win, 5, 2, "Only half of the next line is visible");
wmove(win, 6, 1);
- wclrtobot (win);
+ wclrtobot(win);
wmove(win, 5, 20);
- wclrtoeol (win);
+ wclrtoeol(win);
mvwaddstr(win, 8, 2, "This line also shouldn't appear");
wmove(win, 8, 1);
wdeleteln(win);
Continue(win);
- wmove (win, 5, 9);
- ch = winch (win);
+ wmove(win, 5, 9);
+ ch = winch(win);
wclear(win);
- wmove (win, 6, 2);
- waddstr (win, "The next char should be l: ");
- winsch (win, ch);
+ wmove(win, 6, 2);
+ waddstr(win, "The next char should be l: ");
+ winsch(win, ch);
Continue(win);
- mvwinsstr( win, 6, 2, "A1B2C3D4E5" );
+ mvwinsstr(win, 6, 2, "A1B2C3D4E5");
Continue(win);
wmove(win, 5, 1);
- winsertln (win);
+ winsertln(win);
mvwaddstr(win, 5, 2, "The lines below should have moved down");
Continue(win);
wclear(win);
wmove(win, 2, 2);
- wprintw(win, "This is a formatted string in a window: %d %s\n", 42, "is it");
+ wprintw(win, "This is a formatted string in a window: %d %s\n", 42,
+ "is it");
mvwaddstr(win, 10, 1, "Enter a string: ");
wrefresh(win);
noraw();
echo();
*Buffer = 0;
- wscanw (win, "%s", Buffer);
+ wscanw(win, "%s", Buffer);
printw("This is a formatted string in stdscr: %d %s\n", 42, "is it");
mvaddstr(10, 1, "Enter a string: ");
*Buffer = 0;
- scanw ("%s", Buffer);
+ scanw("%s", Buffer);
if (tigetstr("cvvis") != 0) {
- wclear(win);
- curs_set(2);
- mvwaddstr(win, 1, 1, "The cursor should appear as a block (visible)");
- Continue(win);
+ wclear(win);
+ curs_set(2);
+ mvwaddstr(win, 1, 1, "The cursor should appear as a block (visible)");
+ Continue(win);
}
if (tigetstr("civis") != 0) {
- wclear(win);
- curs_set(0);
- mvwaddstr(win, 1, 1, "The cursor should have disappeared (invisible)");
- Continue(win);
+ wclear(win);
+ curs_set(0);
+ mvwaddstr(win, 1, 1,
+ "The cursor should have disappeared (invisible)");
+ Continue(win);
}
if (tigetstr("cnorm") != 0) {
- wclear(win);
- curs_set(1);
- mvwaddstr(win, 1, 1, "The cursor should be an underline (normal)");
- Continue(win);
+ wclear(win);
+ curs_set(1);
+ mvwaddstr(win, 1, 1, "The cursor should be an underline (normal)");
+ Continue(win);
}
-
#ifdef A_COLOR
- if ( has_colors() ) {
- wclear(win);
- mvwaddstr(win, 1, 1, "Colors should change after you press a key");
- Continue(win);
- init_pair(1, COLOR_RED, COLOR_WHITE);
- wrefresh(win);
+ if (has_colors()) {
+ wclear(win);
+ mvwaddstr(win, 1, 1, "Colors should change after you press a key");
+ Continue(win);
+ init_pair(1, COLOR_RED, COLOR_WHITE);
+ wrefresh(win);
}
#endif
@@ -521,16 +538,16 @@ outputTest (WINDOW *win)
mvwaddstr(win, 1, 1, "Information About Your Terminal");
mvwaddstr(win, 3, 1, termname());
mvwaddstr(win, 4, 1, longname());
- if ( termattrs() & A_BLINK )
- mvwaddstr(win,5, 1, "This terminal supports blinking.");
+ if (termattrs() & A_BLINK)
+ mvwaddstr(win, 5, 1, "This terminal supports blinking.");
else
- mvwaddstr(win,5, 1, "This terminal does NOT support blinking.");
+ mvwaddstr(win, 5, 1, "This terminal does NOT support blinking.");
- mvwaddnstr( win, 7,5, "Have a nice day!ok", 16 );
+ mvwaddnstr(win, 7, 5, "Have a nice day!ok", 16);
wrefresh(win);
- mvwinnstr( win, 7,5, Buffer, 18 );
- mvaddstr( LINES-2, 10, Buffer );
+ mvwinnstr(win, 7, 5, Buffer, 18);
+ mvaddstr(LINES - 2, 10, Buffer);
refresh();
Continue(win);
}
@@ -541,35 +558,34 @@ resizeTest(WINDOW *dummy GCC_UNUSED)
{
WINDOW *win1;
- savetty ();
+ savetty();
clear();
refresh();
# if defined(OS2)
- resize_term(50,120);
+ resize_term(50, 120);
# else
- resize_term(50,80);
+ resize_term(50, 80);
# endif
win1 = newwin(10, 50, 14, 25);
- if(win1 == NULL)
- { endwin();
- return;
+ if (win1 == NULL) {
+ endwin();
+ return;
}
#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(3,COLOR_BLUE,COLOR_WHITE);
- wattrset(win1, COLOR_PAIR(3));
- }
+ if (has_colors()) {
+ init_pair(3, COLOR_BLUE, COLOR_WHITE);
+ wattrset(win1, COLOR_PAIR(3));
+ }
#endif
- wclear (win1);
+ wclear(win1);
mvwaddstr(win1, 1, 1, "The screen may now have 50 lines");
Continue(win1);
- wclear (win1);
- resetty ();
+ wclear(win1);
+ resetty();
mvwaddstr(win1, 1, 1, "The screen should now be reset");
Continue(win1);
@@ -585,56 +601,57 @@ resizeTest(WINDOW *dummy GCC_UNUSED)
static void
padTest(WINDOW *dummy GCC_UNUSED)
{
-WINDOW *pad, *spad;
-
- pad = newpad(50,100);
- wattron(pad, A_REVERSE);
- mvwaddstr(pad, 5, 2, "This is a new pad");
- wattrset(pad,A_NORMAL);
- mvwaddstr(pad, 8, 0, "The end of this line should be truncated here:except now");
- mvwaddstr(pad,11, 1, "This line should not appear.It will now");
- wmove(pad, 10, 1);
- wclrtoeol(pad);
- mvwaddstr(pad, 10, 1, " Press any key to continue");
- prefresh(pad,0,0,0,0,10,45);
- keypad(pad, TRUE);
- raw();
- wgetch(pad);
-
- spad = subpad(pad,12,25,6,52);
- mvwaddstr(spad, 2, 2, "This is a new subpad");
- box(spad,0,0);
- prefresh(pad,0,0,0,0,15,75);
- keypad(pad, TRUE);
- raw();
- wgetch(pad);
-
- mvwaddstr(pad, 35, 2, "This is displayed at line 35 in the pad");
- mvwaddstr(pad, 40, 1, " Press any key to continue");
- prefresh(pad,30,0,0,0,10,45);
- keypad(pad, TRUE);
- raw();
- wgetch(pad);
-
- delwin(pad);
+ WINDOW *pad, *spad;
+
+ pad = newpad(50, 100);
+ wattron(pad, A_REVERSE);
+ mvwaddstr(pad, 5, 2, "This is a new pad");
+ wattrset(pad, A_NORMAL);
+ mvwaddstr(pad, 8, 0,
+ "The end of this line should be truncated here:except now");
+ mvwaddstr(pad, 11, 1, "This line should not appear.It will now");
+ wmove(pad, 10, 1);
+ wclrtoeol(pad);
+ mvwaddstr(pad, 10, 1, " Press any key to continue");
+ prefresh(pad, 0, 0, 0, 0, 10, 45);
+ keypad(pad, TRUE);
+ raw();
+ wgetch(pad);
+
+ spad = subpad(pad, 12, 25, 6, 52);
+ mvwaddstr(spad, 2, 2, "This is a new subpad");
+ box(spad, 0, 0);
+ prefresh(pad, 0, 0, 0, 0, 15, 75);
+ keypad(pad, TRUE);
+ raw();
+ wgetch(pad);
+
+ mvwaddstr(pad, 35, 2, "This is displayed at line 35 in the pad");
+ mvwaddstr(pad, 40, 1, " Press any key to continue");
+ prefresh(pad, 30, 0, 0, 0, 10, 45);
+ keypad(pad, TRUE);
+ raw();
+ wgetch(pad);
+
+ delwin(pad);
}
static void
-display_menu(int old_option,int new_option)
+display_menu(int old_option, int new_option)
{
- register size_t i;
-
- attrset(A_NORMAL);
- mvaddstr(3,20,"PDCurses Test Program");
-
- for (i=0;i<MAX_OPTIONS;i++)
- mvaddstr(5+i,25,command[i].text);
- if (old_option != (-1))
- mvaddstr(5+old_option,25,command[old_option].text);
- attrset(A_REVERSE);
- mvaddstr(5+new_option,25,command[new_option].text);
- attrset(A_NORMAL);
- mvaddstr(13,3,"Use Up and Down Arrows to select - Enter to run - Q to quit");
- refresh();
+ register size_t i;
+
+ attrset(A_NORMAL);
+ mvaddstr(3, 20, "PDCurses Test Program");
+
+ for (i = 0; i < MAX_OPTIONS; i++)
+ mvaddstr(5 + i, 25, command[i].text);
+ if (old_option != (-1))
+ mvaddstr(5 + old_option, 25, command[old_option].text);
+ attrset(A_REVERSE);
+ mvaddstr(5 + new_option, 25, command[new_option].text);
+ attrset(A_NORMAL);
+ mvaddstr(13, 3,
+ "Use Up and Down Arrows to select - Enter to run - Q to quit");
+ refresh();
}
-
diff --git a/contrib/ncurses/test/view.c b/contrib/ncurses/test/view.c
index 8381dc8898c4..f4c2f067234d 100644
--- a/contrib/ncurses/test/view.c
+++ b/contrib/ncurses/test/view.c
@@ -5,7 +5,8 @@
* to test the scrolling code in ncurses.
*
* modified by Thomas Dickey <dickey@clark.net> July 1995 to demonstrate
- * the use of 'resizeterm()'.
+ * the use of 'resizeterm()', and May 2000 to illustrate wide-character
+ * handling.
*
* Takes a filename argument. It's a simple file-viewer with various
* scroll-up and scroll-down commands.
@@ -22,7 +23,7 @@
* scroll operation worked, and the refresh() code only had to do a
* partial repaint.
*
- * $Id: view.c,v 1.27 1998/08/22 18:33:41 tom Exp $
+ * $Id: view.c,v 1.29 2000/05/21 01:43:03 tom Exp $
*/
#include <test.priv.h>
@@ -52,7 +53,7 @@
static RETSIGTYPE finish(int sig) GCC_NORETURN;
static void show_all(void);
-#if defined(SIGWINCH) && defined(TIOCGWINSZ) && defined(NCURSES_VERSION)
+#if defined(SIGWINCH) && defined(TIOCGWINSZ) && defined(HAVE_RESIZETERM)
#define CAN_RESIZE 1
#else
#define CAN_RESIZE 0
@@ -60,33 +61,23 @@ static void show_all(void);
#if CAN_RESIZE
static RETSIGTYPE adjust(int sig);
-static int interrupted;
+static int interrupted;
#endif
-static int waiting;
-static int shift;
+static int waiting;
+static int shift;
+static int utf8_mode = FALSE;
-static char *fname;
-static char **lines;
-static char **lptr;
+static char *fname;
+static chtype **lines;
+static chtype **lptr;
-#if !HAVE_STRDUP
-#define strdup my_strdup
-static char *strdup (char *s)
+static void
+usage(void)
{
- char *p;
-
- p = malloc(strlen(s)+1);
- if (p)
- strcpy(p,s);
- return(p);
-}
-#endif /* not HAVE_STRDUP */
-
-static void usage(void)
-{
- static const char *msg[] = {
- "Usage: view [options] file"
+ static const char *msg[] =
+ {
+ "Usage: view [options] file"
,""
,"Options:"
," -n NUM specify maximum number of lines (default 1000)"
@@ -97,27 +88,117 @@ static void usage(void)
," -t trace screen updates"
," -T NUM specify trace mask"
#endif
+ ," -u translate UTF-8 data"
};
size_t n;
for (n = 0; n < SIZEOF(msg); n++)
fprintf(stderr, "%s\n", msg[n]);
- exit (EXIT_FAILURE);
+ exit(EXIT_FAILURE);
+}
+
+static int
+ch_len(chtype * src)
+{
+ int result = 0;
+ while (*src++)
+ result++;
+ return result;
+}
+
+/*
+ * Allocate a string into an array of chtype's. If UTF-8 mode is
+ * active, translate the string accordingly.
+ */
+static chtype *
+ch_dup(char *src)
+{
+ unsigned len = strlen(src);
+ chtype *dst = typeMalloc(chtype, len + 1);
+ unsigned j, k;
+ unsigned utf_count = 0;
+ unsigned utf_char = 0;
+
+#define UCS_REPL 0xfffd
+
+ for (j = k = 0; j < len; j++) {
+ if (utf8_mode) {
+ unsigned c = src[j] & 0xff;
+ /* Combine UTF-8 into Unicode */
+ if (c < 0x80) {
+ /* We received an ASCII character */
+ if (utf_count > 0)
+ dst[k++] = UCS_REPL; /* prev. sequence incomplete */
+ dst[k++] = c;
+ utf_count = 0;
+ } else if (c < 0xc0) {
+ /* We received a continuation byte */
+ if (utf_count < 1) {
+ dst[k++] = UCS_REPL; /* ... unexpectedly */
+ } else {
+ if (!utf_char && !((c & 0x7f) >> (7 - utf_count))) {
+ utf_char = UCS_REPL;
+ }
+ /* characters outside UCS-2 become UCS_REPL */
+ if (utf_char > 0x03ff) {
+ /* value would be >0xffff */
+ utf_char = UCS_REPL;
+ } else {
+ utf_char <<= 6;
+ utf_char |= (c & 0x3f);
+ }
+ utf_count--;
+ if (utf_count == 0)
+ dst[k++] = utf_char;
+ }
+ } else {
+ /* We received a sequence start byte */
+ if (utf_count > 0)
+ dst[k++] = UCS_REPL; /* prev. sequence incomplete */
+ if (c < 0xe0) {
+ utf_count = 1;
+ utf_char = (c & 0x1f);
+ if (!(c & 0x1e))
+ utf_char = UCS_REPL; /* overlong sequence */
+ } else if (c < 0xf0) {
+ utf_count = 2;
+ utf_char = (c & 0x0f);
+ } else if (c < 0xf8) {
+ utf_count = 3;
+ utf_char = (c & 0x07);
+ } else if (c < 0xfc) {
+ utf_count = 4;
+ utf_char = (c & 0x03);
+ } else if (c < 0xfe) {
+ utf_count = 5;
+ utf_char = (c & 0x01);
+ } else {
+ dst[k++] = UCS_REPL;
+ utf_count = 0;
+ }
+ }
+ } else {
+ dst[k++] = src[j];
+ }
+ }
+ dst[k] = 0;
+ return dst;
}
-int main(int argc, char *argv[])
+int
+main(int argc, char *argv[])
{
-int MAXLINES = 1000;
-FILE *fp;
-char buf[BUFSIZ];
-int i;
-char **olptr;
-int done = FALSE;
-int length = 0;
+ int MAXLINES = 1000;
+ FILE *fp;
+ char buf[BUFSIZ];
+ int i;
+ chtype **olptr;
+ int done = FALSE;
+ int length = 0;
#if CAN_RESIZE
-bool use_resize = TRUE;
+ bool use_resize = TRUE;
#endif
- while ((i = getopt(argc, argv, "n:rtT:")) != EOF) {
+ while ((i = getopt(argc, argv, "n:rtT:u")) != EOF) {
switch (i) {
case 'n':
if ((MAXLINES = atoi(optarg)) < 1)
@@ -136,6 +217,9 @@ bool use_resize = TRUE;
trace(TRACE_CALLS);
break;
#endif
+ case 'u':
+ utf8_mode = TRUE;
+ break;
default:
usage();
}
@@ -143,7 +227,7 @@ bool use_resize = TRUE;
if (optind + 1 != argc)
usage();
- if ((lines = (char **)calloc(MAXLINES+2, sizeof(*lines))) == 0)
+ if ((lines = typeMalloc(chtype *, MAXLINES + 2)) == 0)
usage();
fname = argv[optind];
@@ -152,16 +236,16 @@ bool use_resize = TRUE;
return EXIT_FAILURE;
}
- (void) signal(SIGINT, finish); /* arrange interrupts to terminate */
+ (void) signal(SIGINT, finish); /* arrange interrupts to terminate */
#if CAN_RESIZE
if (use_resize)
- (void) signal(SIGWINCH, adjust); /* arrange interrupts to resize */
+ (void) signal(SIGWINCH, adjust); /* arrange interrupts to resize */
#endif
/* slurp the file */
for (lptr = &lines[0]; (lptr - lines) < MAXLINES; lptr++) {
char temp[BUFSIZ], *s, *d;
- int col;
+ int col;
if (fgets(buf, sizeof(buf), fp) == 0)
break;
@@ -173,9 +257,9 @@ bool use_resize = TRUE;
break;
} else if (*d == '\t') {
col = (col | 7) + 1;
- while ((d-temp) != col)
+ while ((d - temp) != col)
*d++ = ' ';
- } else if (isprint(*d)) {
+ } else if (isprint(*d) || utf8_mode) {
col++;
d++;
} else {
@@ -184,17 +268,17 @@ bool use_resize = TRUE;
col = (d - temp);
}
}
- *lptr = strdup(temp);
+ *lptr = ch_dup(temp);
}
(void) fclose(fp);
length = lptr - lines;
- (void) initscr(); /* initialize the curses library */
- keypad(stdscr, TRUE); /* enable keyboard mapping */
- (void) nonl(); /* tell curses not to do NL->CR/NL on output */
- (void) cbreak(); /* take input chars one at a time, no wait for \n */
- (void) noecho(); /* don't echo input */
- idlok(stdscr, TRUE); /* allow use of insert/delete line */
+ (void) initscr(); /* initialize the curses library */
+ keypad(stdscr, TRUE); /* enable keyboard mapping */
+ (void) nonl(); /* tell curses not to do NL->CR/NL on output */
+ (void) cbreak(); /* take input chars one at a time, no wait for \n */
+ (void) noecho(); /* don't echo input */
+ idlok(stdscr, TRUE); /* allow use of insert/delete line */
lptr = lines;
while (!done) {
@@ -205,7 +289,7 @@ bool use_resize = TRUE;
got_number = FALSE;
n = 0;
- for (;;) {
+ for (;;) {
#if CAN_RESIZE
if (interrupted)
adjust(0);
@@ -215,20 +299,19 @@ bool use_resize = TRUE;
waiting = FALSE;
if ((c < 127) && isdigit(c)) {
if (!got_number) {
- mvprintw(0,0, "Count: ");
+ mvprintw(0, 0, "Count: ");
clrtoeol();
}
addch(c);
n = 10 * n + (c - '0');
got_number = TRUE;
- }
- else
+ } else
break;
}
if (!got_number && n == 0)
n = 1;
- switch(c) {
+ switch (c) {
case KEY_DOWN:
case 'n':
olptr = lptr;
@@ -282,7 +365,7 @@ bool use_resize = TRUE;
break;
#ifdef KEY_RESIZE
- case KEY_RESIZE: /* ignore this; ncurses will repaint */
+ case KEY_RESIZE: /* ignore this; ncurses will repaint */
break;
#endif
#if CAN_RESIZE
@@ -297,7 +380,8 @@ bool use_resize = TRUE;
finish(0); /* we're done */
}
-static RETSIGTYPE finish(int sig)
+static RETSIGTYPE
+finish(int sig)
{
endwin();
exit(sig != 0 ? EXIT_FAILURE : EXIT_SUCCESS);
@@ -309,54 +393,55 @@ static RETSIGTYPE finish(int sig)
* Linux. The 'wrefresh(curscr)' is needed to force the refresh to start from
* the top of the screen -- some xterms mangle the bitmap while resizing.
*/
-static RETSIGTYPE adjust(int sig)
+static RETSIGTYPE
+adjust(int sig)
{
- if (waiting || sig == 0) {
+ if (waiting || sig == 0) {
struct winsize size;
- if (ioctl(fileno(stdout), TIOCGWINSZ, &size) == 0) {
- resizeterm(size.ws_row, size.ws_col);
- wrefresh(curscr); /* Linux needs this */
- show_all();
- }
- interrupted = FALSE;
- } else {
- interrupted = TRUE;
+ if (ioctl(fileno(stdout), TIOCGWINSZ, &size) == 0) {
+ resizeterm(size.ws_row, size.ws_col);
+ wrefresh(curscr); /* Linux needs this */
+ show_all();
}
- (void) signal(SIGWINCH, adjust); /* some systems need this */
+ interrupted = FALSE;
+ } else {
+ interrupted = TRUE;
+ }
+ (void) signal(SIGWINCH, adjust); /* some systems need this */
}
-#endif /* CAN_RESIZE */
+#endif /* CAN_RESIZE */
-static void show_all(void)
+static void
+show_all(void)
{
- int i;
- char temp[BUFSIZ];
- char *s;
+ int i;
+ char temp[BUFSIZ];
+ chtype *s;
#if CAN_RESIZE
- sprintf(temp, "(%3dx%3d) col %d ", LINES, COLS, shift);
- i = strlen(temp);
- sprintf(temp+i, "view %.*s", (int)(sizeof(temp)-7-i), fname);
+ sprintf(temp, "(%3dx%3d) col %d ", LINES, COLS, shift);
+ i = strlen(temp);
+ sprintf(temp + i, "view %.*s", (int) (sizeof(temp) - 7 - i), fname);
#else
- sprintf(temp, "view %.*s", (int)sizeof(temp)-7, fname);
+ sprintf(temp, "view %.*s", (int) sizeof(temp) - 7, fname);
#endif
- move(0,0);
- printw("%.*s", COLS, temp);
+ move(0, 0);
+ printw("%.*s", COLS, temp);
+ clrtoeol();
+
+ scrollok(stdscr, FALSE); /* prevent screen from moving */
+ for (i = 1; i < LINES; i++) {
+ move(i, 0);
+ printw("%3d:", (lptr + i - lines));
clrtoeol();
-
- scrollok(stdscr, FALSE); /* prevent screen from moving */
- for (i = 1; i < LINES; i++) {
- move(i, 0);
- if ((s = lptr[i-1]) != 0 && (int)strlen(s) > shift)
- printw("%3ld:%.*s", (long) (lptr+i-lines), COLS-4, s + shift);
- else
- printw("%3ld:", (long) (lptr+i-lines));
- clrtoeol();
+ if ((s = lptr[i - 1]) != 0) {
+ int len = ch_len(s);
+ if (len > shift)
+ addchstr(s + shift);
}
- setscrreg(1, LINES-1);
- scrollok(stdscr, TRUE);
- refresh();
+ }
+ setscrreg(1, LINES - 1);
+ scrollok(stdscr, TRUE);
+ refresh();
}
-
-/* view.c ends here */
-
diff --git a/contrib/ncurses/test/worm.c b/contrib/ncurses/test/worm.c
index 5f0ab5dc4a5a..43a898f84d13 100644
--- a/contrib/ncurses/test/worm.c
+++ b/contrib/ncurses/test/worm.c
@@ -34,16 +34,13 @@ Options:
traces will be dumped. The program stops and waits for one character of
input at the beginning and end of the interval.
- $Id: worm.c,v 1.26 1999/10/23 01:31:40 tom Exp $
+ $Id: worm.c,v 1.30 2000/04/15 17:51:56 tom Exp $
*/
#include <test.priv.h>
#include <signal.h>
-#define typeAlloc(type,n) (type *) malloc(n * sizeof(type))
-#define typeRealloc(type,n,p) (type *) realloc(p, n * sizeof(type))
-
static chtype flavor[] =
{
'O', '*', '#', '$', '%', '0', '@',
@@ -185,7 +182,6 @@ main(int argc, char *argv[])
short **ref;
int x, y;
int n;
- int ch;
struct worm *w;
const struct options *op;
int h;
@@ -255,7 +251,7 @@ main(int argc, char *argv[])
if (has_colors()) {
int bg = COLOR_BLACK;
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
bg = -1;
#endif
@@ -274,9 +270,9 @@ main(int argc, char *argv[])
}
#endif /* A_COLOR */
- ref = typeAlloc(short *, LINES);
+ ref = typeMalloc(short *, LINES);
for (y = 0; y < LINES; y++) {
- ref[y] = typeAlloc(short, COLS);
+ ref[y] = typeMalloc(short, COLS);
for (x = 0; x < COLS; x++) {
ref[y][x] = 0;
}
@@ -289,14 +285,14 @@ main(int argc, char *argv[])
for (n = number, w = &worm[0]; --n >= 0; w++) {
w->orientation = w->head = 0;
- if (!(ip = typeAlloc(short, (length + 1)))) {
+ if (!(ip = typeMalloc(short, (length + 1)))) {
fprintf(stderr, "%s: out of memory\n", *argv);
return EXIT_FAILURE;
}
w->xpos = ip;
for (x = length; --x >= 0;)
*ip++ = -1;
- if (!(ip = typeAlloc(short, (length + 1)))) {
+ if (!(ip = typeMalloc(short, (length + 1)))) {
fprintf(stderr, "%s: out of memory\n", *argv);
return EXIT_FAILURE;
}
@@ -338,6 +334,8 @@ main(int argc, char *argv[])
generation++;
}
#else
+ int ch;
+
if ((ch = getch()) > 0) {
#ifdef KEY_RESIZE
if (ch == KEY_RESIZE) {
@@ -350,11 +348,11 @@ main(int argc, char *argv[])
last = COLS - 1;
}
if (bottom != LINES - 1) {
- ref = typeRealloc(short *, LINES, ref);
- for (y = COLS; y <= bottom; y++)
+ for (y = LINES; y <= bottom; y++)
free(ref[y]);
+ ref = typeRealloc(short *, LINES, ref);
for (y = bottom + 1; y < LINES; y++) {
- ref[y] = typeAlloc(short, COLS);
+ ref[y] = typeMalloc(short, COLS);
for (x = 0; x < COLS; x++)
ref[y][x] = 0;
}
diff --git a/contrib/ncurses/test/xmas.c b/contrib/ncurses/test/xmas.c
index 3923c771d97a..57d42923000c 100644
--- a/contrib/ncurses/test/xmas.c
+++ b/contrib/ncurses/test/xmas.c
@@ -92,7 +92,7 @@
/******************************************************************************/
/*
- * $Id: xmas.c,v 1.12 1998/01/18 01:13:47 tom Exp $
+ * $Id: xmas.c,v 1.13 1999/11/13 23:39:01 tom Exp $
*/
#include <test.priv.h>
@@ -183,7 +183,7 @@ int loopy;
#endif
if (has_colors()) {
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
my_bg = -1;
#endif