-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: NEWS,v 1.1225 2008/04/12 19:41:26 tom Exp $
+-- $Id: NEWS,v 1.1228 2008/04/19 23:03:52 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
Changes through 1.9.9e did not credit all contributions;
it is not possible to add this information.
+20080419
+ + add screen.rxvt terminfo entry -TD
+ + modify tic -f option to format spaces as \s to prevent them from
+ being lost when that is read back in unformatted strings.
+ + improve test/ditto.c, using a "talk"-style layout.
+
20080412
+ change test/ditto.c to use openpty() and xterm.
+ add locks for copywin(), dupwin(), overlap(), overlay() on their
e.g., on aix when using CC=powerpc-ibm-aix5.3.0.0-gcc
(report/patch by Michael Haubenwallner).
+ override OBJEXT to "lo" when building with libtool, to work on
- platforms such as AIX where libtool supports only static libraries
- (report/patch by Michael Haubenwallner).
+ platforms such as AIX where libtool may use a different suffix for
+ the object files than ".o" (report/patch by Michael Haubenwallner).
+ add configure --with-pthread option, for building with the POSIX
thread library.
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: dist.mk,v 1.638 2008/04/12 15:47:44 tom Exp $
+# $Id: dist.mk,v 1.639 2008/04/19 16:27:47 tom Exp $
# Makefile for creating ncurses distributions.
#
# This only needs to be used directly as a makefile by developers, but
# These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 5
NCURSES_MINOR = 6
-NCURSES_PATCH = 20080412
+NCURSES_PATCH = 20080419
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
# Report bugs and new terminal descriptions to
# bug-ncurses@gnu.org
#
-# $Revision: 1.326 $
-# $Date: 2007/11/12 00:22:07 $
+# $Revision: 1.327 $
+# $Date: 2008/04/19 22:51:50 $
#
# The original header is preserved below for reference. It is noted that there
# is a "newer" version which differs in some cosmetic details (but actually
ncv#127,
acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
use=screen,
+# Other terminals
+screen.rxvt|screen in rxvt,
+ bw,
+ cvvis@, flash@, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC,
+ kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+ use=vt100+enq, use=rxvt+pcfkeys, use=vt220+keypad,
+ use=screen,
# fix the backspace key
screen.linux|screen in linux console,
bw,
# * add xterm+app, xterm+noapp, from xterm #230 -TD
# * add/use xterm+pce2 from xterm #230, in xterm+pcfkeys -TD
#
+# 2007-04-19
+# * add screen.rxvt -TD
+#
# The following sets edit modes for GNU EMACS.
# Local Variables:
# fill-prefix:"\t"
/****************************************************************************
- * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2007,2008 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 *
#include "termsort.c" /* this C file is generated */
#include <parametrized.h> /* so is this */
-MODULE_ID("$Id: dump_entry.c,v 1.81 2007/08/25 20:05:35 tom Exp $")
+MODULE_ID("$Id: dump_entry.c,v 1.82 2008/04/19 22:27:04 tom Exp $")
#define INDENT 8
#define DISCARD(string) string = ABSENT_STRING
params = FALSE;
percent = FALSE;
break;
+ case ' ':
+ strncpy_DYN(&tmpbuf, "\\s", 2);
+ ++src;
+ continue;
default:
percent = FALSE;
break;
/*
* Author: Thomas E. Dickey <dickey@clark.net> 1998
*
- * $Id: ditto.c,v 1.19 2008/04/12 23:37:32 tom Exp $
+ * $Id: ditto.c,v 1.21 2008/04/19 20:08:45 tom Exp $
*
* The program illustrates how to set up multiple screens from a single
* program. Invoke the program by specifying another terminal on the same
FILE *input;
FILE *output;
SCREEN *screen;
+ WINDOW **windows;
} DITTO;
+typedef struct {
+ int value; /* the actual data */
+ int source; /* which screen did data come from */
+ int target; /* which screen is data going to */
+ DITTO *ditto;
+} DDATA;
+
static void
failed(const char *s)
{
}
static int
-read_screen(SCREEN *sp GCC_UNUSED, void *arg GCC_UNUSED)
+read_screen(SCREEN *sp GCC_UNUSED, void *arg)
{
- return getch();
+ DDATA *data = (DDATA *) arg;
+ WINDOW *win = data->ditto[data->source].windows[data->source];
+
+ return wgetch(win);
}
static int
write_screen(SCREEN *sp GCC_UNUSED, void *arg GCC_UNUSED)
{
- addstr((char *) arg);
- refresh();
+ DDATA *data = (DDATA *) arg;
+ WINDOW *win = data->ditto[data->target].windows[data->source];
+
+ waddch(win, data->value);
+ wnoutrefresh(win);
+ doupdate();
return OK;
}
static void
-show_ditto(DITTO * data, int count, char *msg)
+show_ditto(DITTO * data, int count, DDATA * ddata)
{
int n;
for (n = 0; n < count; n++) {
- USING_SCREEN(data[n].screen, write_screen, (void *) msg);
+ ddata->target = n;
+ USING_SCREEN(data[n].screen, write_screen, (void *) ddata);
}
}
main(int argc GCC_UNUSED,
char *argv[]GCC_UNUSED)
{
- int j;
+ int j, k;
int count;
DITTO *data;
* Set up the screens.
*/
for (j = 0; j < argc; j++) {
+ int high, wide;
+
data[j].screen = newterm((char *) 0, /* assume $TERM is the same */
data[j].output,
data[j].input);
+
if (data[j].screen == 0)
failed("newterm");
cbreak();
noecho();
scrollok(stdscr, TRUE);
nodelay(stdscr, TRUE);
+ box(stdscr, 0, 0);
+
+ data[j].windows = typeCalloc(WINDOW *, argc);
+
+ high = (LINES - 2) / argc;
+ wide = (COLS - 2);
+ for (k = 0; k < argc; ++k) {
+ WINDOW *outer = newwin(high, wide, 1 + (high * k), 1);
+ WINDOW *inner = derwin(outer, high - 2, wide - 2, 1, 1);
+
+ box(outer, 0, 0);
+ mvwaddstr(outer, 0, 2, argv[k]);
+ wnoutrefresh(outer);
+
+ scrollok(inner, TRUE);
+ nodelay(inner, TRUE);
+
+ data[j].windows[k] = inner;
+ }
+ doupdate();
}
/*
* of the screens.
*/
for (count = 0;; ++count) {
- char message[80];
+ DDATA ddata;
int ch;
int which = (count % argc);
napms(20);
- ch = USING_SCREEN(data[which].screen, read_screen, 0);
+
+ ddata.source = which;
+ ddata.ditto = data;
+
+ ch = USING_SCREEN(data[which].screen, read_screen, &ddata);
if (ch == ERR) {
continue;
}
if (ch == CTRL('D'))
break;
- sprintf(message, "from[%d:%d] '%c' (%#x)\n", count, which, ch, ch);
- show_ditto(data, argc, message);
+
+ ddata.value = ch;
+ show_ditto(data, argc, &ddata);
}
/*
for (j = argc - 1; j >= 0; j--) {
USING_SCREEN(data[j].screen, close_screen, 0);
fprintf(data[j].output, "**Closed\r\n");
+
+ /*
+ * Closing before a delscreen() helps ncurses determine that there
+ * is no valid output buffer, and can remove the setbuf() data.
+ */
fflush(data[j].output);
fclose(data[j].output);
delscreen(data[j].screen);