mirror of
https://github.com/Aigor44/ncursesw-morphos.git
synced 2025-01-30 15:19:27 +08:00
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.
This commit is contained in:
parent
396a05943b
commit
6209b84e2f
12
NEWS
12
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.
|
||||
|
||||
|
4
dist.mk
4
dist.mk
@ -25,7 +25,7 @@
|
||||
# use or other dealings in this Software without prior written #
|
||||
# authorization. #
|
||||
##############################################################################
|
||||
# $Id: dist.mk,v 1.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)
|
||||
|
@ -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"
|
||||
|
@ -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 <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
|
||||
@ -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;
|
||||
|
73
test/ditto.c
73
test/ditto.c
@ -29,7 +29,7 @@
|
||||
/*
|
||||
* 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
|
||||
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user