From 8639fbcc9f182c74c2974dec2da5eed5cb703700 Mon Sep 17 00:00:00 2001 From: "Thomas E. Dickey" Date: Sun, 6 Feb 2011 02:33:36 +0000 Subject: [PATCH] ncurses 5.7 - patch 20110205 + add xterm-utf8 entry as a demo of the U8 feature -TD + add U8 feature to denote entries for terminal emulators which do not support VT100 SI/SO when processing UTF-8 encoding -TD + improve the NCURSES_NO_UTF8_ACS feature by adding a check for an extended terminfo capability U8 (prompted by mailing list discussion). --- NEWS | 10 +++++++++- dist.mk | 4 ++-- man/ncurses.3x | 26 ++++++++++++++++++++++++-- misc/terminfo.src | 20 +++++++++++++++----- ncurses/tinfo/free_ttype.c | 5 +++-- ncurses/tinfo/lib_setup.c | 32 +++++++++++++++++++------------- 6 files changed, 72 insertions(+), 25 deletions(-) diff --git a/NEWS b/NEWS index 77f45d20..50025444 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.1638 2011/01/22 21:23:29 tom Exp $ +-- $Id: NEWS,v 1.1641 2011/02/05 23:40:07 tom Exp $ ------------------------------------------------------------------------------- This is a log of changes that ncurses has gone through since Zeyd started @@ -45,6 +45,14 @@ See the AUTHORS file for the corresponding full names. Changes through 1.9.9e did not credit all contributions; it is not possible to add this information. +20110205 + + add xterm-utf8 entry as a demo of the U8 feature -TD + + add U8 feature to denote entries for terminal emulators which do not + support VT100 SI/SO when processing UTF-8 encoding -TD + + improve the NCURSES_NO_UTF8_ACS feature by adding a check for an + extended terminfo capability U8 (prompted by mailing list + discussion). + 20110122 + start documenting interface changes for upcoming 5.8 release. + correct limit-checks in derwin(). diff --git a/dist.mk b/dist.mk index c791b6a3..47ac7a4e 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.792 2011/01/22 19:47:14 tom Exp $ +# $Id: dist.mk,v 1.794 2011/02/05 17:25:08 tom Exp $ # Makefile for creating ncurses distributions. # # This only needs to be used directly as a makefile by developers, but @@ -37,7 +37,7 @@ SHELL = /bin/sh # These define the major/minor/patch versions of ncurses. NCURSES_MAJOR = 5 NCURSES_MINOR = 7 -NCURSES_PATCH = 20110122 +NCURSES_PATCH = 20110205 # We don't append the patch to the version, since this only applies to releases VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR) diff --git a/man/ncurses.3x b/man/ncurses.3x index 9dcdcd94..4acfc050 100644 --- a/man/ncurses.3x +++ b/man/ncurses.3x @@ -1,6 +1,6 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * +.\" Copyright (c) 1998-2010,2011 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 * @@ -27,7 +27,7 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: ncurses.3x,v 1.101 2010/12/04 18:38:55 tom Exp $ +.\" $Id: ncurses.3x,v 1.103 2011/02/05 23:21:29 tom Exp $ .hy 0 .TH ncurses 3X "" .de bP @@ -930,6 +930,28 @@ and is likely to work for terminal emulators. When setting this variable, you should set it to a nonzero value. Setting it to zero (or to a nonnumber) disables the special check for "linux" and "screen". +.IP +As an alternative to the environment variable, +ncurses checks for an extended terminfo capability \fBU8\fP. +This is a numeric capability which can be compiled using \fBtic\ \-x\fP. +For example +.RS 5 +.sp +.nf +# linux console, if patched to provide working +# VT100 shift-in/shift-out, with corresponding font. +linux-vt100|linux console with VT100 line-graphics, + U8#0, use=linux, +.sp +# uxterm with vt100Graphics resource set to false +xterm-utf8|xterm relying on UTF-8 line-graphics, + U8#1, use=xterm, +.fi +.RE +.IP +The name "U8" is chosen to be two characters, +to permit it to be used by applications that use ncurses' +termcap interface. .TP 5 NCURSES_TRACE During initialization, the \fBncurses\fR debugging library diff --git a/misc/terminfo.src b/misc/terminfo.src index 458d4733..cfe65ed9 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.381 $ -# $Date: 2010/12/11 23:39:36 $ +# $Revision: 1.382 $ +# $Date: 2011/02/05 23:41:18 $ # # 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 @@ -890,7 +890,7 @@ beterm|BeOS Terminal, # linux-basic|linux console, am, bce, eo, mir, msgr, xenl, xon, - it#8, ncv#18, + it#8, ncv#18, U8#1, 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, bel=^G, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, @@ -2886,7 +2886,7 @@ crt|crt-vt220|CRT 2.3 emulating VT220, putty|PuTTY terminal emulator, am, bce, bw, ccc, hs, mir, msgr, xenl, xon, XT, - colors#8, it#8, ncv#22, pairs#64, + colors#8, it#8, ncv#22, pairs#64, U8#1, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, @@ -3633,6 +3633,11 @@ xterm-24|vs100|xterms|xterm terminal emulator (X Window System), xterm|xterm terminal emulator (X Window System), use=xterm-new, +# This entry assumes that xterm's handling of VT100 SI/SO is disabled by +# setting the vt100Graphics resource to false. +xterm-utf8|xterm with no VT100 line-drawing in UTF-8 mode, + U8#1, use=xterm, + # These entries allow access to the X titlebar and icon name as a status line. # Note that twm (and possibly window managers descended from it such as tvtwm, # ctwm, and vtwm) track windows by icon-name; thus, you don't want to mess @@ -4666,7 +4671,7 @@ eterm-color|Emacs term.el terminal emulator term-protocol-version 0.96, # tested with screen 3.09.08 screen|VT 100/ANSI X3.64 virtual terminal, OTbs, OTpt, am, km, mir, msgr, xenl, G0, - colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, + colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, U8#1, acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M, @@ -22341,4 +22346,9 @@ v3220|LANPAR Vision II model 3220/3221/3222, # * suppress ncv in screen entry, allowing underline -Alejandro R. Sedeno # * also suppress ncv in konsole-base -TD # +# 2011-02-05 +# * add U8 feature to denote entries for terminal emulators which do not +# support VT100 SI/SO when processing UTF-8 encoding -TD +# * add xterm-utf8 as a demo of the U8 feature -TD +# ######## SHANTIH! SHANTIH! SHANTIH! diff --git a/ncurses/tinfo/free_ttype.c b/ncurses/tinfo/free_ttype.c index 7914fd55..ad056ba4 100644 --- a/ncurses/tinfo/free_ttype.c +++ b/ncurses/tinfo/free_ttype.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1999-2006,2010 Free Software Foundation, Inc. * + * Copyright (c) 1999-2010,2011 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 * @@ -42,7 +42,7 @@ #include -MODULE_ID("$Id: free_ttype.c,v 1.14 2010/01/23 17:57:43 tom Exp $") +MODULE_ID("$Id: free_ttype.c,v 1.15 2011/02/06 01:08:31 tom Exp $") NCURSES_EXPORT(void) _nc_free_termtype(TERMTYPE *ptr) @@ -69,6 +69,7 @@ use_extended_names(bool flag) { int oldflag = _nc_user_definable; + START_TRACE(); T((T_CALLED("use_extended_names(%d)"), flag)); _nc_user_definable = flag; returnBool(oldflag); diff --git a/ncurses/tinfo/lib_setup.c b/ncurses/tinfo/lib_setup.c index 378fd940..5fcf2ae3 100644 --- a/ncurses/tinfo/lib_setup.c +++ b/ncurses/tinfo/lib_setup.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright (c) 1998-2010,2011 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 * @@ -51,7 +51,7 @@ #include #endif -MODULE_ID("$Id: lib_setup.c,v 1.132 2010/12/20 00:26:35 tom Exp $") +MODULE_ID("$Id: lib_setup.c,v 1.135 2011/02/06 01:04:21 tom Exp $") /**************************************************************************** * @@ -546,25 +546,31 @@ _nc_unicode_locale(void) NCURSES_EXPORT(int) _nc_locale_breaks_acs(TERMINAL * termp) { + const char *env_name = "NCURSES_NO_UTF8_ACS"; char *env; + int value; + int result = 0; - if ((env = getenv("NCURSES_NO_UTF8_ACS")) != 0) { - return atoi(env); + if ((env = getenv(env_name)) != 0) { + result = _nc_getenv_num(env_name); + } else if ((value = tigetnum("U8")) >= 0) { + result = value; /* use extension feature */ } else if ((env = getenv("TERM")) != 0) { - if (strstr(env, "linux")) - return 1; /* always broken */ - if (strstr(env, "screen") != 0 - && ((env = getenv("TERMCAP")) != 0 - && strstr(env, "screen") != 0) - && strstr(env, "hhII00") != 0) { + if (strstr(env, "linux")) { + result = 1; /* always broken */ + } else if (strstr(env, "screen") != 0 + && ((env = getenv("TERMCAP")) != 0 + && strstr(env, "screen") != 0) + && strstr(env, "hhII00") != 0) { if (CONTROL_N(enter_alt_charset_mode) || CONTROL_O(enter_alt_charset_mode) || CONTROL_N(set_attributes) || - CONTROL_O(set_attributes)) - return 1; + CONTROL_O(set_attributes)) { + result = 1; + } } } - return 0; + return result; } NCURSES_EXPORT(int) -- 2.44.0