ncurses 5.6 - patch 20080906

+ corrected gcc options for building shared libraries on IRIX64.
+ add configure check for awk programs unable to handle big-strings,
  use that to improve the default for --enable-big-strings option.
+ makefile-fixes for --enable-weak-symbols (report by Frederic L W
  Meunier).
+ update test/configure script.
+ adapt ifdef's from library to make test/view.c build when mbrtowc()
  is unavailable, e.g., with HPUX 10.20.
+ add configure check for wcsrtombs, mbsrtowcs, which are used in
  test/ncurses.c, and use wcstombs, mbstowcs instead if available,
  fixing build of ncursew for HPUX 11.00
This commit is contained in:
Thomas E. Dickey 2008-09-07 01:02:23 +00:00
parent d8b5e3f818
commit a7d99bb6b2
13 changed files with 1638 additions and 1508 deletions

15
NEWS
View File

@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
-- $Id: NEWS,v 1.1281 2008/08/30 23:33:29 tom Exp $
-- $Id: NEWS,v 1.1287 2008/09/06 22:04:07 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
@ -45,6 +45,19 @@ 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.
20080906
+ corrected gcc options for building shared libraries on IRIX64.
+ add configure check for awk programs unable to handle big-strings,
use that to improve the default for --enable-big-strings option.
+ makefile-fixes for --enable-weak-symbols (report by Frederic L W
Meunier).
+ update test/configure script.
+ adapt ifdef's from library to make test/view.c build when mbrtowc()
is unavailable, e.g., with HPUX 10.20.
+ add configure check for wcsrtombs, mbsrtowcs, which are used in
test/ncurses.c, and use wcstombs, mbstowcs instead if available,
fixing build of ncursew for HPUX 11.00
20080830
+ fixes to make Ada95 demo_panels() example work.
+ modify Ada95 'rain' test program to accept keyboard commands like the

32
aclocal.m4 vendored
View File

@ -28,7 +28,7 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey 1995-on
dnl
dnl $Id: aclocal.m4,v 1.453 2008/08/23 22:27:51 tom Exp $
dnl $Id: aclocal.m4,v 1.457 2008/09/06 21:36:49 tom Exp $
dnl Macros used in NCURSES auto-configuration script.
dnl
dnl These macros are maintained separately from NCURSES. The copyright on
@ -331,6 +331,30 @@ You have the following choices:
fi
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_AWK_BIG_PRINTF version: 1 updated: 2008/09/06 17:17:18
dnl -----------------
dnl Check if awk can handle big strings using printf. Some older versions of
dnl awk choke on large strings passed via "%s".
dnl
dnl $1 = desired string size
dnl $2 = variable to set with result
AC_DEFUN([CF_AWK_BIG_PRINTF],
[
case x$AWK in #(vi
x)
eval $2=no
;;
*) #(vi
if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < $1) { xx = xx "x"; }; printf("%s\n", xx); }' \
| $AWK '{ if (length([$]0) != $1) exit 1; }' 2>/dev/null >/dev/null ); then
eval $2=yes
else
eval $2=no
fi
;;
esac
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_BOOL_DECL version: 8 updated: 2004/01/30 15:51:18
dnl ------------
dnl Test if 'bool' is a builtin type in the configured C++ compiler. Some
@ -3931,7 +3955,7 @@ AC_MSG_RESULT(no)
fi
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_SHARED_OPTS version: 48 updated: 2008/06/14 15:08:17
dnl CF_SHARED_OPTS version: 49 updated: 2008/09/06 17:36:03
dnl --------------
dnl --------------
dnl Attempt to determine the appropriate CC/LD options for creating a shared
@ -4066,8 +4090,10 @@ CF_EOF
# tested with IRIX 5.2 and 'cc'.
if test "$GCC" != yes; then
CC_SHARED_OPTS='-KPIC'
MK_SHARED_LIB='${CC} -shared -rdata_shared -soname `basename $[@]` -o $[@]'
else
MK_SHARED_LIB='${CC} -shared -Wl,-soname,`basename $[@]` -o $[@]'
fi
MK_SHARED_LIB='${CC} -shared -rdata_shared -soname `basename $[@]` -o $[@]'
cf_cv_rm_so_locs=yes
;;
linux*|gnu*|k*bsd*-gnu)

2191
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -28,14 +28,14 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey 1995-on
dnl
dnl $Id: configure.in,v 1.443 2008/08/30 19:53:49 tom Exp $
dnl $Id: configure.in,v 1.446 2008/09/06 21:02:20 tom Exp $
dnl Process this file with autoconf to produce a configure script.
dnl
dnl See http://invisible-island.net/autoconf/ for additional information.
dnl
dnl ---------------------------------------------------------------------------
AC_PREREQ(2.13.20020210)
AC_REVISION($Revision: 1.443 $)
AC_REVISION($Revision: 1.446 $)
AC_INIT(ncurses/base/lib_initscr.c)
AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
@ -504,12 +504,13 @@ AC_MSG_RESULT($with_big_core)
test "$with_big_core" = "yes" && AC_DEFINE(HAVE_BIG_CORE)
### ISO C only guarantees 512-char strings, we have tables which load faster
### when constructed using "big" strings.
### when constructed using "big" strings. More than the C compiler, the awk
### program is a limit on most vendor UNIX systems. Check that we can build.
AC_MSG_CHECKING(if big-strings option selected)
AC_ARG_ENABLE(big-strings,
[ --disable-big-strings assume compiler has only standard-size strings],
[with_big_strings=no],
[with_big_strings=yes])
[with_big_strings=$enableval],
[CF_AWK_BIG_PRINTF(4000,with_big_strings)])
AC_MSG_RESULT($with_big_strings)
USE_BIG_STRINGS=0
@ -681,7 +682,7 @@ if test "$with_widec" = yes ; then
CF_PREDEFINE(_XOPEN_SOURCE_EXTENDED)
# with_overwrite=no
NCURSES_CH_T=cchar_t
AC_CHECK_FUNCS(putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc)
AC_CHECK_FUNCS(putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs)
if test "$ac_cv_func_putwc" != yes ; then
CF_LIBUTF8
if test "$cf_cv_libutf8" = yes ; then

View File

@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
# $Id: dist.mk,v 1.657 2008/08/30 16:23:22 tom Exp $
# $Id: dist.mk,v 1.658 2008/09/06 15:28:23 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 = 20080830
NCURSES_PATCH = 20080906
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)

View File

@ -1,4 +1,4 @@
# $Id: ncurses_defs,v 1.39 2008/08/16 23:12:31 tom Exp $
# $Id: ncurses_defs,v 1.40 2008/09/06 15:57:41 tom Exp $
##############################################################################
# Copyright (c) 2000-2007,2008 Free Software Foundation, Inc. #
# #
@ -60,8 +60,8 @@ HAVE_GETEGID
HAVE_GETEUID
HAVE_GETMAXX 1
HAVE_GETNSTR
HAVE_GETPARX 1
HAVE_GETOPT_H
HAVE_GETPARX 1
HAVE_GETTIMEOFDAY
HAVE_GETTTYNAM
HAVE_GETWIN 1
@ -88,6 +88,8 @@ HAVE_LONG_FILE_NAMES
HAVE_MBLEN
HAVE_MBRLEN
HAVE_MBRTOWC
HAVE_MBSRTOWCS
HAVE_MBSTOWCS
HAVE_MBTOWC
HAVE_MENU_H
HAVE_MKSTEMP
@ -153,6 +155,8 @@ HAVE_USE_DEFAULT_COLORS
HAVE_VFSCANF
HAVE_VSNPRINTF
HAVE_VSSCANF
HAVE_WCSRTOMBS
HAVE_WCSTOMBS
HAVE_WCTOB
HAVE_WCTOMB
HAVE_WCTYPE_H

View File

@ -1,4 +1,4 @@
# $Id: Makefile.in,v 1.77 2007/10/13 22:25:53 tom Exp $
# $Id: Makefile.in,v 1.78 2008/09/06 17:28:26 tom Exp $
##############################################################################
# Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. #
# #
@ -109,10 +109,10 @@ LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@
LDFLAGS_DEFAULT = $(LDFLAGS_@DFT_UPR_MODEL@)
LIBS_TIC = @LDFLAGS_STATIC@ @TICS_ARGS@ @TINFO_ARGS@ @LDFLAGS_SHARED@ @LD_MODEL@ @LIBS@
LIBS_TIC = @LDFLAGS_STATIC@ @TICS_ARGS@ @TINFO_ARGS@ @LDFLAGS_SHARED@ @LD_MODEL@ @LIBS@ @PTHREAD@
LDFLAGS_TIC = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_TIC)
LIBS_TINFO = @LDFLAGS_STATIC@ @TINFO_ARGS@ @LDFLAGS_SHARED@ @LD_MODEL@ @LIBS@
LIBS_TINFO = @LDFLAGS_STATIC@ @TINFO_ARGS@ @LDFLAGS_SHARED@ @LD_MODEL@ @LIBS@ @PTHREAD@
LDFLAGS_TINFO = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_TINFO)
LINT = @LINT@

View File

@ -1,4 +1,4 @@
# $Id: Makefile.in,v 1.100 2008/08/16 21:51:16 tom Exp $
# $Id: Makefile.in,v 1.101 2008/09/06 17:32:47 tom Exp $
##############################################################################
# Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. #
# #
@ -91,7 +91,7 @@ LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@
TEST_ARGS = @LDFLAGS_STATIC@ @TEST_ARGS@ @LDFLAGS_SHARED@
# use these for linking with all of the libraries
LIBS_DEFAULT = $(TEST_ARGS) @LIBS@ $(TEST_LIBS) $(MATH_LIB)
LIBS_DEFAULT = $(TEST_ARGS) @LIBS@ $(TEST_LIBS) $(MATH_LIB) @PTHREAD@
LDFLAGS_DEFAULT = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_DEFAULT)
# use these for linking with the (n)curses library and possibly pthreads
@ -99,11 +99,11 @@ LIBS_THREADS = `echo "$(TEST_ARGS) @LIBS@" | sed -e 's/-lform.*-lpanel[^ ]*//'`
LDFLAGS_THREADS = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_THREADS)
# use these for linking with the (n)curses library
LIBS_CURSES = `echo "$(TEST_ARGS) @LIBS@" | sed -e 's/-lform.*-lpanel[^ ]*//'` $(TEST_LIBS) $(MATH_LIB)
LIBS_CURSES = `echo "$(TEST_ARGS) @LIBS@" | sed -e 's/-lform.*-lpanel[^ ]*//'` $(TEST_LIBS) $(MATH_LIB) @PTHREAD@
LDFLAGS_CURSES = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_CURSES)
# use these for linking with the tinfo library if we have it, or curses library if not
LIBS_TINFO = @LDFLAGS_STATIC@ @TINFO_ARGS@ @LDFLAGS_SHARED@ @LIBS@ $(TEST_LIBS) $(MATH_LIB)
LIBS_TINFO = @LDFLAGS_STATIC@ @TINFO_ARGS@ @LDFLAGS_SHARED@ @LIBS@ $(TEST_LIBS) $(MATH_LIB) @PTHREAD@
LDFLAGS_TINFO = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_TINFO)
LINT = @LINT@

746
test/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -28,7 +28,7 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey 1996, etc.
dnl
dnl $Id: configure.in,v 1.65 2008/02/09 18:24:11 tom Exp $
dnl $Id: configure.in,v 1.67 2008/09/06 22:10:23 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)
@ -52,28 +52,30 @@ AC_PROG_CPP
AC_PROG_AWK
dnl Things that we don't need (or must override) if we're not building ncurses
CC_G_OPT="-g" AC_SUBST(CC_G_OPT)
CC_G_OPT="-g" AC_SUBST(CC_G_OPT)
CC_SHARED_OPTS=unknown AC_SUBST(CC_SHARED_OPTS)
CPPFLAGS="$CPPFLAGS" AC_SUBST(CPPFLAGS)
DFT_DEP_SUFFIX="" AC_SUBST(DFT_DEP_SUFFIX)
DFT_DEP_SUFFIX="" AC_SUBST(DFT_DEP_SUFFIX)
DFT_OBJ_SUBDIR=`pwd|sed -e's:.*/::'` AC_SUBST(DFT_OBJ_SUBDIR)
DFT_UPR_MODEL="NORMAL" AC_SUBST(DFT_UPR_MODEL)
LD="ld" AC_SUBST(LD)
LDFLAGS_SHARED="" AC_SUBST(LDFLAGS_SHARED)
LDFLAGS_STATIC="" AC_SUBST(LDFLAGS_STATIC)
LD_MODEL="" AC_SUBST(LD_MODEL)
LD_SHARED_OPTS="" AC_SUBST(LD_SHARED_OPTS)
LIBTOOL="" AC_SUBST(LIBTOOL)
LIB_CLEAN="" AC_SUBST(LIB_CLEAN)
LIB_COMPILE="" AC_SUBST(LIB_COMPILE)
LIB_LINK='${CC}' AC_SUBST(LIB_LINK)
LINK_TESTS="" AC_SUBST(LINK_TESTS)
LINT=lint AC_SUBST(LINT)
LINT_OPTS="" AC_SUBST(LINT_OPTS)
LOCAL_LDFLAGS="" AC_SUBST(LOCAL_LDFLAGS)
MATH_LIB="-lm" AC_SUBST(MATH_LIB)
TEST_ARGS="" AC_SUBST(TEST_ARGS)
TEST_DEPS="" AC_SUBST(TEST_DEPS)
LD="ld" AC_SUBST(LD)
LDFLAGS_SHARED="" AC_SUBST(LDFLAGS_SHARED)
LDFLAGS_STATIC="" AC_SUBST(LDFLAGS_STATIC)
LD_MODEL="" AC_SUBST(LD_MODEL)
LD_SHARED_OPTS="" AC_SUBST(LD_SHARED_OPTS)
LIBTOOL="" AC_SUBST(LIBTOOL)
LIB_CLEAN="" AC_SUBST(LIB_CLEAN)
LIB_COMPILE="" AC_SUBST(LIB_COMPILE)
LIB_LINK='${CC}' AC_SUBST(LIB_LINK)
LINK_TESTS="" AC_SUBST(LINK_TESTS)
LINT=lint AC_SUBST(LINT)
LINT_OPTS="" AC_SUBST(LINT_OPTS)
LOCAL_LDFLAGS="" AC_SUBST(LOCAL_LDFLAGS)
MATH_LIB="-lm" AC_SUBST(MATH_LIB)
PTHREAD="-lm" AC_SUBST(PTHREAD)
TEST_ARGS="" AC_SUBST(TEST_ARGS)
TEST_DEPS="" AC_SUBST(TEST_DEPS)
TEST_LIBS="" AC_SUBST(TEST_LIBS)
TINFO_ARGS='$(LIBS_CURSES)' AC_SUBST(TINFO_ARGS)
cf_cv_abi_version="" AC_SUBST(cf_cv_abi_version)
cf_cv_rel_version="" AC_SUBST(cf_cv_rel_version)
@ -179,7 +181,15 @@ unistd.h \
AC_CHECK_FUNCS( \
gettimeofday \
mblen \
mbrlen \
mbrtowc \
mbsrtowcs \
mbstowcs \
mbtowc \
strdup \
wcsrtombs \
wcstombs \
)
CF_CURSES_FUNCS( \

View File

@ -40,7 +40,7 @@ AUTHOR
Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
Thomas E. Dickey (beginning revision 1.27 in 1996).
$Id: ncurses.c,v 1.324 2008/08/04 16:27:54 tom Exp $
$Id: ncurses.c,v 1.327 2008/09/06 17:31:44 tom Exp $
***************************************************************************/
@ -118,6 +118,28 @@ extern unsigned _nc_tracing;
#endif
#if HAVE_WCSRTOMBS
#define count_wchars(src, len, state) wcsrtombs(0, &src, len, state)
#define trans_wchars(dst, src, len, state) wcsrtombs(dst, &src, len, state)
#define reset_wchars(state) memset(&state, 0, sizeof(state))
#elif HAVE_WCSTOMBS && HAVE_MBTOWC && HAVE_MBLEN
#define count_wchars(src, len, state) wcstombs(0, src, len)
#define trans_wchars(dst, src, len, state) wcstombs(dst, src, len)
#define reset_wchars(state) mblen(NULL, 0), mbtowc(NULL, NULL, 0)
#define state_unused
#endif
#if HAVE_MBSRTOWCS
#define count_mbytes(src, len, state) mbsrtowcs(0, &src, len, state)
#define trans_mbytes(dst, src, len, state) mbsrtowcs(dst, &src, len, state)
#define reset_mbytes(state) memset(&state, 0, sizeof(state))
#elif HAVE_MBSTOWCS && HAVE_MBTOWC && HAVE_MBLEN
#define count_mbytes(src, len, state) mbstowcs(0, src, len)
#define trans_mbytes(dst, src, len, state) mbstowcs(dst, src, len)
#define reset_mbytes(state) mblen(NULL, 0), mbtowc(NULL, NULL, 0)
#define state_unused
#endif
#define ToggleAcs(temp,real) temp = ((temp == real) ? 0 : real)
#define P(string) printw("%s\n", string)
@ -928,16 +950,18 @@ static char *
wcstos(const wchar_t *src)
{
int need;
mbstate_t state;
char *result = 0;
const wchar_t *tmp = src;
#ifndef state_unused
mbstate_t state;
#endif
memset(&state, 0, sizeof(state));
if ((need = (int) wcsrtombs(0, &tmp, 0, &state)) > 0) {
reset_wchars(state);
if ((need = (int) count_wchars(tmp, 0, &state)) > 0) {
unsigned have = (unsigned) need;
if ((result = typeCalloc(char, have + 1)) != 0) {
tmp = src;
if (wcsrtombs(result, &tmp, have, &state) != have) {
if (trans_wchars(result, tmp, have, &state) != have) {
free(result);
result = 0;
}
@ -2705,20 +2729,22 @@ wide_slk_test(void)
size_t used = strlen(temp);
size_t want = SLKLEN;
size_t test;
#ifndef state_unused
mbstate_t state;
#endif
buf[0] = L'\0';
while (want > 0 && used != 0) {
const char *base = s;
memset(&state, 0, sizeof(state));
test = mbsrtowcs(0, &base, 0, &state);
reset_mbytes(state);
test = count_mbytes(base, 0, &state);
if (test == (size_t) -1) {
temp[--used] = 0;
} else if (test > want) {
temp[--used] = 0;
} else {
memset(&state, 0, sizeof(state));
mbsrtowcs(buf, &base, want, &state);
reset_mbytes(state);
trans_mbytes(buf, base, want, &state);
break;
}
}

View File

@ -29,7 +29,7 @@
/****************************************************************************
* Author: Thomas E. Dickey 1996-on *
****************************************************************************/
/* $Id: test.priv.h,v 1.77 2008/04/12 19:25:48 tom Exp $ */
/* $Id: test.priv.h,v 1.78 2008/09/06 22:01:24 tom Exp $ */
#ifndef __TEST_PRIV_H
#define __TEST_PRIV_H 1
@ -570,4 +570,6 @@ typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
#define USE_TRACE 0
#endif
#define init_mb(state) memset(&state, 0, sizeof(state))
#endif /* __TEST_PRIV_H */

View File

@ -50,7 +50,7 @@
* scroll operation worked, and the refresh() code only had to do a
* partial repaint.
*
* $Id: view.c,v 1.68 2008/08/03 11:37:07 tom Exp $
* $Id: view.c,v 1.69 2008/09/06 22:10:50 tom Exp $
*/
#include <test.priv.h>
@ -79,6 +79,23 @@
#include <sys/ptem.h>
#endif
#if USE_WIDEC_SUPPORT
#if HAVE_MBTOWC && HAVE_MBLEN
#define reset_mbytes(state) mblen(NULL, 0), mbtowc(NULL, NULL, 0)
#define count_mbytes(buffer,length,state) mblen(buffer,length)
#define check_mbytes(wch,buffer,length,state) \
(int) mbtowc(&wch, buffer, length)
#define state_unused
#elif HAVE_MBRTOWC && HAVE_MBRLEN
#define reset_mbytes(state) init_mb(state)
#define count_mbytes(buffer,length,state) mbrlen(buffer,length,&state)
#define check_mbytes(wch,buffer,length,state) \
(int) mbrtowc(&wch, buffer, length, &state)
#else
make an error
#endif
#endif /* USE_WIDEC_SUPPORT */
static RETSIGTYPE finish(int sig) GCC_NORETURN;
static void show_all(const char *tag);
@ -158,17 +175,19 @@ ch_dup(char *src)
wchar_t wstr[CCHARW_MAX + 1];
wchar_t wch;
int l = 0;
mbstate_t state;
size_t rc;
int width;
#ifndef state_unused
mbstate_t state;
#endif
#endif /* USE_WIDEC_SUPPORT */
#if USE_WIDEC_SUPPORT
memset(&state, 0, sizeof(state));
reset_mbytes(state);
#endif
for (j = k = 0; j < len; j++) {
#if USE_WIDEC_SUPPORT
rc = mbrtowc(&wch, src + j, len - j, &state);
rc = check_mbytes(wch, src + j, len - j, state);
if (rc == (size_t) -1 || rc == (size_t) -2)
break;
j += rc - 1;