From: Thomas E. Dickey Date: Sat, 19 Apr 2008 23:51:44 +0000 (+0000) Subject: ncurses 5.6 - patch 20080419 X-Git-Tag: v5.7~28 X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=commitdiff_plain;h=6209b84e2f9cc5a53527760499be2cba5fc4e95c ncurses 5.6 - patch 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. --- diff --git a/NEWS b/NEWS index a80efd0c..0a2f4b81 100644 --- a/NEWS +++ b/NEWS @@ -25,7 +25,7 @@ -- 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 @@ -45,6 +45,12 @@ See the AUTHORS file for the corresponding full names. Changes through 1.9.9e did not credit all contributions; it is not possible to add this information. +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 @@ -70,8 +76,8 @@ it is not possible to add this information. 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. diff --git a/dist.mk b/dist.mk index 3e0bf28c..d2923b7e 100644 --- a/dist.mk +++ b/dist.mk @@ -25,7 +25,7 @@ # 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 @@ -37,7 +37,7 @@ SHELL = /bin/sh # 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) diff --git a/misc/terminfo.src b/misc/terminfo.src index 8d905fc4..e86848f2 100644 --- a/misc/terminfo.src +++ b/misc/terminfo.src @@ -6,8 +6,8 @@ # 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 @@ -4391,6 +4391,13 @@ screen.teraterm|disable ncv in teraterm, 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, @@ -21661,6 +21668,9 @@ v3220|LANPAR Vision II model 3220/3221/3222, # * 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" diff --git a/progs/dump_entry.c b/progs/dump_entry.c index 6320f3c1..eeee5dbb 100644 --- a/progs/dump_entry.c +++ b/progs/dump_entry.c @@ -1,5 +1,5 @@ /**************************************************************************** - * 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 * @@ -39,7 +39,7 @@ #include "termsort.c" /* this C file is generated */ #include /* 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 @@ -539,6 +539,10 @@ fmt_complex(char *src, int level) params = FALSE; percent = FALSE; break; + case ' ': + strncpy_DYN(&tmpbuf, "\\s", 2); + ++src; + continue; default: percent = FALSE; break; diff --git a/test/ditto.c b/test/ditto.c index 34ef6a53..17a883dd 100644 --- a/test/ditto.c +++ b/test/ditto.c @@ -29,7 +29,7 @@ /* * Author: Thomas E. Dickey 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 @@ -48,8 +48,16 @@ typedef struct { 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) { @@ -113,26 +121,34 @@ close_screen(SCREEN *sp GCC_UNUSED, void *arg GCC_UNUSED) } 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); } } @@ -140,7 +156,7 @@ int main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) { - int j; + int j, k; int count; DITTO *data; @@ -162,15 +178,38 @@ main(int argc GCC_UNUSED, * 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(); } /* @@ -178,19 +217,24 @@ main(int argc GCC_UNUSED, * 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); } /* @@ -199,6 +243,11 @@ main(int argc GCC_UNUSED, 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);