ncurses 5.9 - patch 20110730

+ modify configure script and makefiles in c++ and progs to allow the
  directory used for rpath option to be overridden, e.g., to work
  around updates to the variables used by tic during an install.
+ add -K option to tic/infocmp, to provide stricter BSD-compatibility
  for termcap output.
+ add _nc_strict_bsd variable in tic library which controls the
  "strict" BSD termcap compatibility from 20110723, plus these
  features:
  + allow escapes such as "\8" and "\9" when reading termcap
  + disallow "\a", "\e", "\l", "\s" and "\:" escapes when reading
    termcap files, passing through "a", "e", etc.
  + expand "\:" as "\072" on output.
+ modify _nc_get_token() to reset the token's string value in case
  there is a string-typed token lacking the "=" marker.
+ fix a few memory leaks in _nc_tgetent.
+ fix a few places where reading from a termcap file could refer to
  freed memory.
+ add an overflow check when converting terminfo/termcap numeric
  values, since terminfo stores those in a short, and they must be
  positive.
+ correct internal variables used for translating to termcap "%>"
  feature, and translating from termcap %B to terminfo, needed by
  tctest (cf: 19991211).
+ amend a minor fix to acsc when loading a termcap file to separate it
  from warnings needed for tic (cf: 20040710)
+ modify logic in _nc_read_entry() and _nc_read_tic_entry() to allow
  a termcap file to be handled via TERMINFO_DIRS.
+ modify _nc_infotocap() to include non-mandatory padding when
  translating to termcap.
+ modify _nc_read_termcap_entry(), passing a flag in the case where
  getcap is used, to reduce interactive warning messages.
This commit is contained in:
Thomas E. Dickey 2011-07-31 01:15:59 +00:00
parent 0c12f3c8ff
commit 8e25fff6a5
24 changed files with 305 additions and 174 deletions

29
Ada95/aclocal.m4 vendored
View File

@ -28,7 +28,7 @@ dnl***************************************************************************
dnl
dnl Author: Thomas E. Dickey
dnl
dnl $Id: aclocal.m4,v 1.34 2011/07/17 18:54:59 tom Exp $
dnl $Id: aclocal.m4,v 1.35 2011/07/30 23:33:10 tom Exp $
dnl Macros used in NCURSES Ada95 auto-configuration script.
dnl
dnl These macros are maintained separately from NCURSES. The copyright on
@ -2942,7 +2942,7 @@ define([CF_REMOVE_LIB],
$1=`echo "$2" | sed -e 's/-l$3[[ ]]//g' -e 's/-l$3[$]//'`
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_SHARED_OPTS version: 68 updated: 2011/07/17 14:48:41
dnl CF_SHARED_OPTS version: 69 updated: 2011/07/30 19:31:39
dnl --------------
dnl --------------
dnl Attempt to determine the appropriate CC/LD options for creating a shared
@ -3020,11 +3020,11 @@ AC_DEFUN([CF_SHARED_OPTS],
aix4.[3-9]*|aix[[5-7]]*) #(vi
if test "$GCC" = yes; then
CC_SHARED_OPTS=
MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${libdir}:/usr/lib -o [$]@'
MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
else
# CC_SHARED_OPTS='-qpic=large -G'
# perhaps "-bM:SRE -bnoentry -bexpall"
MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${libdir}:/usr/lib -o [$]@'
MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
fi
;;
beos*) #(vi
@ -3085,11 +3085,11 @@ CF_EOF
cf_shared_soname='`basename $@`'
fi
CC_SHARED_OPTS=
MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${libdir} -Wl,-h,'$cf_shared_soname' -o $@'
MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $@'
;;
irix*) #(vi
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
# tested with IRIX 5.2 and 'cc'.
if test "$GCC" != yes; then
@ -3106,7 +3106,7 @@ CF_EOF
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CF_SHARED_SONAME
MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
@ -3117,7 +3117,7 @@ CF_EOF
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
CF_SHARED_SONAME
@ -3132,8 +3132,8 @@ CF_EOF
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${libdir} $LOCAL_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CF_SHARED_SONAME
MK_SHARED_LIB='${LD} -shared -Bshareable -soname=`basename $[@]` -o $[@]'
@ -3143,7 +3143,7 @@ CF_EOF
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
if test "$cf_cv_shlib_version" = auto; then
if test -f /usr/libexec/ld.elf_so; then
cf_cv_shlib_version=abi
@ -3248,9 +3248,9 @@ CF_EOF
;;
esac
if test -n "$cf_ld_rpath_opt" ; then
MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${libdir}"
fi
# RPATH_LIST is a colon-separated list of directories
test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}"
test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}"
AC_SUBST(CC_SHARED_OPTS)
AC_SUBST(LD_RPATH_OPT)
@ -3262,6 +3262,7 @@ CF_EOF
AC_SUBST(LOCAL_LDFLAGS)
AC_SUBST(LOCAL_LDFLAGS2)
AC_SUBST(INSTALL_LIB)
AC_SUBST(RPATH_LIST)
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_SHARED_SONAME version: 3 updated: 2008/09/08 18:34:43

39
Ada95/configure vendored
View File

@ -7575,11 +7575,11 @@ echo "${ECHO_T}$CC_SHARED_OPTS" >&6
aix4.3-9*|aix[5-7]*) #(vi
if test "$GCC" = yes; then
CC_SHARED_OPTS=
MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${libdir}:/usr/lib -o $@'
MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
else
# CC_SHARED_OPTS='-qpic=large -G'
# perhaps "-bM:SRE -bnoentry -bexpall"
MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${libdir}:/usr/lib -o $@'
MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
fi
;;
beos*) #(vi
@ -7678,11 +7678,11 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
cf_shared_soname='`basename `'
fi
CC_SHARED_OPTS=
MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${libdir} -Wl,-h,'$cf_shared_soname' -o '
MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o '
;;
irix*) #(vi
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
# tested with IRIX 5.2 and 'cc'.
if test "$GCC" != yes; then
@ -7699,7 +7699,7 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
@ -7717,7 +7717,7 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
@ -7739,8 +7739,8 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${libdir} $LOCAL_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
@ -7757,7 +7757,7 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
if test "$cf_cv_shlib_version" = auto; then
if test -f /usr/libexec/ld.elf_so; then
cf_cv_shlib_version=abi
@ -7906,9 +7906,9 @@ echo "$as_me: WARNING: ignored --with-shlib-version" >&2;}
;;
esac
if test -n "$cf_ld_rpath_opt" ; then
MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${libdir}"
fi
# RPATH_LIST is a colon-separated list of directories
test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}"
test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}"
# The test/sample programs in the original tree link using rpath option.
# Make it optional for packagers.
@ -12233,6 +12233,7 @@ s,@EXTRA_LDFLAGS@,$EXTRA_LDFLAGS,;t t
s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t
s,@LOCAL_LDFLAGS2@,$LOCAL_LDFLAGS2,;t t
s,@INSTALL_LIB@,$INSTALL_LIB,;t t
s,@RPATH_LIST@,$RPATH_LIST,;t t
s,@BROKEN_LINKER@,$BROKEN_LINKER,;t t
s,@NCURSES_EXT_FUNCS@,$NCURSES_EXT_FUNCS,;t t
s,@NCURSES_CONST@,$NCURSES_CONST,;t t
@ -12387,7 +12388,7 @@ done; }
esac
if test x"$ac_file" != x-; then
{ echo "$as_me:12390: creating $ac_file" >&5
{ echo "$as_me:12391: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
rm -f "$ac_file"
fi
@ -12405,7 +12406,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
test -f "$f" || { { echo "$as_me:12408: error: cannot find input file: $f" >&5
test -f "$f" || { { echo "$as_me:12409: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
@ -12418,7 +12419,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo $srcdir/$f
else
# /dev/null tree
{ { echo "$as_me:12421: error: cannot find input file: $f" >&5
{ { echo "$as_me:12422: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
@ -12484,7 +12485,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
* ) ac_file_in=$ac_file.in ;;
esac
test x"$ac_file" != x- && { echo "$as_me:12487: creating $ac_file" >&5
test x"$ac_file" != x- && { echo "$as_me:12488: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
# First look for the input files in the build tree, otherwise in the
@ -12495,7 +12496,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
test -f "$f" || { { echo "$as_me:12498: error: cannot find input file: $f" >&5
test -f "$f" || { { echo "$as_me:12499: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
@ -12508,7 +12509,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo $srcdir/$f
else
# /dev/null tree
{ { echo "$as_me:12511: error: cannot find input file: $f" >&5
{ { echo "$as_me:12512: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
@ -12566,7 +12567,7 @@ cat >>$CONFIG_STATUS <<\EOF
rm -f $tmp/in
if test x"$ac_file" != x-; then
if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
{ echo "$as_me:12569: $ac_file is unchanged" >&5
{ echo "$as_me:12570: $ac_file is unchanged" >&5
echo "$as_me: $ac_file is unchanged" >&6;}
else
ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \

View File

@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
-- $Id: INSTALL,v 1.156 2011/05/07 19:39:37 tom Exp $
-- $Id: INSTALL,v 1.157 2011/07/24 13:43:43 tom Exp $
---------------------------------------------------------------------
How to install Ncurses/Terminfo on your system
---------------------------------------------------------------------
@ -616,6 +616,12 @@ SUMMARY OF CONFIGURE OPTIONS:
match is found in the terminfo database. See also the --enable-getcap
and --enable-getcap-cache options.
Termcap support requires run-time parsing rather than loading
predigested data. If you have specified --with-ticlib, then you
cannot have termcap support since run-time parsing is done in the
tic library, which is intentionally not part of normal linkage
dependencies.
--enable-warnings
Turn on GCC compiler warnings. There should be only a few.

35
NEWS
View File

@ -25,7 +25,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
-- $Id: NEWS,v 1.1743 2011/07/23 22:02:25 tom Exp $
-- $Id: NEWS,v 1.1755 2011/07/30 22:57:54 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
@ -45,6 +45,39 @@ 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.
20110730
+ modify configure script and makefiles in c++ and progs to allow the
directory used for rpath option to be overridden, e.g., to work
around updates to the variables used by tic during an install.
+ add -K option to tic/infocmp, to provide stricter BSD-compatibility
for termcap output.
+ add _nc_strict_bsd variable in tic library which controls the
"strict" BSD termcap compatibility from 20110723, plus these
features:
+ allow escapes such as "\8" and "\9" when reading termcap
+ disallow "\a", "\e", "\l", "\s" and "\:" escapes when reading
termcap files, passing through "a", "e", etc.
+ expand "\:" as "\072" on output.
+ modify _nc_get_token() to reset the token's string value in case
there is a string-typed token lacking the "=" marker.
+ fix a few memory leaks in _nc_tgetent.
+ fix a few places where reading from a termcap file could refer to
freed memory.
+ add an overflow check when converting terminfo/termcap numeric
values, since terminfo stores those in a short, and they must be
positive.
+ correct internal variables used for translating to termcap "%>"
feature, and translating from termcap %B to terminfo, needed by
tctest (cf: 19991211).
+ amend a minor fix to acsc when loading a termcap file to separate it
from warnings needed for tic (cf: 20040710)
+ modify logic in _nc_read_entry() and _nc_read_tic_entry() to allow
a termcap file to be handled via TERMINFO_DIRS.
+ modify _nc_infotocap() to include non-mandatory padding when
translating to termcap.
+ modify _nc_read_termcap_entry(), passing a flag in the case where
getcap is used, to reduce interactive warning messages.
20110723
+ add a check in start_color() to limit color-pairs to 256 when
extended colors are not supported (patch by David Benjamin).

29
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.563 2011/07/17 18:55:21 tom Exp $
dnl $Id: aclocal.m4,v 1.564 2011/07/30 23:32:32 tom Exp $
dnl Macros used in NCURSES auto-configuration script.
dnl
dnl These macros are maintained separately from NCURSES. The copyright on
@ -5118,7 +5118,7 @@ CF_VERBOSE(...checked $1 [$]$1)
AC_SUBST(EXTRA_LDFLAGS)
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_SHARED_OPTS version: 68 updated: 2011/07/17 14:48:41
dnl CF_SHARED_OPTS version: 69 updated: 2011/07/30 19:31:39
dnl --------------
dnl --------------
dnl Attempt to determine the appropriate CC/LD options for creating a shared
@ -5196,11 +5196,11 @@ AC_DEFUN([CF_SHARED_OPTS],
aix4.[3-9]*|aix[[5-7]]*) #(vi
if test "$GCC" = yes; then
CC_SHARED_OPTS=
MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${libdir}:/usr/lib -o [$]@'
MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
else
# CC_SHARED_OPTS='-qpic=large -G'
# perhaps "-bM:SRE -bnoentry -bexpall"
MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${libdir}:/usr/lib -o [$]@'
MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@'
fi
;;
beos*) #(vi
@ -5261,11 +5261,11 @@ CF_EOF
cf_shared_soname='`basename $@`'
fi
CC_SHARED_OPTS=
MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${libdir} -Wl,-h,'$cf_shared_soname' -o $@'
MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $@'
;;
irix*) #(vi
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
# tested with IRIX 5.2 and 'cc'.
if test "$GCC" != yes; then
@ -5282,7 +5282,7 @@ CF_EOF
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CF_SHARED_SONAME
MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
@ -5293,7 +5293,7 @@ CF_EOF
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
CF_SHARED_SONAME
@ -5308,8 +5308,8 @@ CF_EOF
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${libdir} $LOCAL_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CF_SHARED_SONAME
MK_SHARED_LIB='${LD} -shared -Bshareable -soname=`basename $[@]` -o $[@]'
@ -5319,7 +5319,7 @@ CF_EOF
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
if test "$cf_cv_shlib_version" = auto; then
if test -f /usr/libexec/ld.elf_so; then
cf_cv_shlib_version=abi
@ -5424,9 +5424,9 @@ CF_EOF
;;
esac
if test -n "$cf_ld_rpath_opt" ; then
MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${libdir}"
fi
# RPATH_LIST is a colon-separated list of directories
test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}"
test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}"
AC_SUBST(CC_SHARED_OPTS)
AC_SUBST(LD_RPATH_OPT)
@ -5438,6 +5438,7 @@ CF_EOF
AC_SUBST(LOCAL_LDFLAGS)
AC_SUBST(LOCAL_LDFLAGS2)
AC_SUBST(INSTALL_LIB)
AC_SUBST(RPATH_LIST)
])dnl
dnl ---------------------------------------------------------------------------
dnl CF_SHARED_SONAME version: 3 updated: 2008/09/08 18:34:43

View File

@ -1,4 +1,4 @@
# $Id: Makefile.in,v 1.94 2011/07/02 18:04:05 tom Exp $
# $Id: Makefile.in,v 1.95 2011/07/30 22:52:07 tom Exp $
##############################################################################
# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. #
# #
@ -112,6 +112,7 @@ LIBNAME = @LIB_PREFIX@$(LIBROOT)@CXX_LIB_SUFFIX@
MY_LIBRARY = ../lib/$(LIBNAME)
LINK_FLAGS = @EXTRA_LDFLAGS@ -L../lib -l$(LIBROOT)@LIB_SUFFIX@
RPATH_LIST = @RPATH_LIST@
LINK_LIBTOOL = @EXTRA_LDFLAGS@ -L../lib $(MY_LIBRARY)
LINK_NORMAL = $(LINK_FLAGS)

39
configure vendored
View File

@ -5699,11 +5699,11 @@ echo "${ECHO_T}$CC_SHARED_OPTS" >&6
aix4.3-9*|aix[5-7]*) #(vi
if test "$GCC" = yes; then
CC_SHARED_OPTS=
MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${libdir}:/usr/lib -o $@'
MK_SHARED_LIB='${CC} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
else
# CC_SHARED_OPTS='-qpic=large -G'
# perhaps "-bM:SRE -bnoentry -bexpall"
MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${libdir}:/usr/lib -o $@'
MK_SHARED_LIB='${CC} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@'
fi
;;
beos*) #(vi
@ -5802,11 +5802,11 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
cf_shared_soname='`basename `'
fi
CC_SHARED_OPTS=
MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${libdir} -Wl,-h,'$cf_shared_soname' -o '
MK_SHARED_LIB='${CC} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o '
;;
irix*) #(vi
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
# tested with IRIX 5.2 and 'cc'.
if test "$GCC" != yes; then
@ -5823,7 +5823,7 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
@ -5841,7 +5841,7 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
fi
if test "$cf_cv_enable_rpath" = yes ; then
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
@ -5863,8 +5863,8 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${libdir} $LOCAL_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
fi
test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel
@ -5881,7 +5881,7 @@ echo "${ECHO_T}$cf_cv_ldflags_search_paths_first" >&6
if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then
LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)"
LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS"
EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS"
if test "$cf_cv_shlib_version" = auto; then
if test -f /usr/libexec/ld.elf_so; then
cf_cv_shlib_version=abi
@ -6030,9 +6030,9 @@ echo "$as_me: WARNING: ignored --with-shlib-version" >&2;}
;;
esac
if test -n "$cf_ld_rpath_opt" ; then
MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${libdir}"
fi
# RPATH_LIST is a colon-separated list of directories
test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}"
test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}"
if test "$CC_SHARED_OPTS" = "unknown"; then
for model in $cf_list_models; do
@ -20194,6 +20194,7 @@ s,@EXTRA_LDFLAGS@,$EXTRA_LDFLAGS,;t t
s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t
s,@LOCAL_LDFLAGS2@,$LOCAL_LDFLAGS2,;t t
s,@INSTALL_LIB@,$INSTALL_LIB,;t t
s,@RPATH_LIST@,$RPATH_LIST,;t t
s,@cf_ldd_prog@,$cf_ldd_prog,;t t
s,@TERMINFO_SRC@,$TERMINFO_SRC,;t t
s,@FALLBACK_LIST@,$FALLBACK_LIST,;t t
@ -20420,7 +20421,7 @@ done; }
esac
if test x"$ac_file" != x-; then
{ echo "$as_me:20423: creating $ac_file" >&5
{ echo "$as_me:20424: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
rm -f "$ac_file"
fi
@ -20438,7 +20439,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
test -f "$f" || { { echo "$as_me:20441: error: cannot find input file: $f" >&5
test -f "$f" || { { echo "$as_me:20442: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
@ -20451,7 +20452,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo $srcdir/$f
else
# /dev/null tree
{ { echo "$as_me:20454: error: cannot find input file: $f" >&5
{ { echo "$as_me:20455: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
@ -20517,7 +20518,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
* ) ac_file_in=$ac_file.in ;;
esac
test x"$ac_file" != x- && { echo "$as_me:20520: creating $ac_file" >&5
test x"$ac_file" != x- && { echo "$as_me:20521: creating $ac_file" >&5
echo "$as_me: creating $ac_file" >&6;}
# First look for the input files in the build tree, otherwise in the
@ -20528,7 +20529,7 @@ echo "$as_me: creating $ac_file" >&6;}
-) echo $tmp/stdin ;;
[\\/$]*)
# Absolute (can't be DOS-style, as IFS=:)
test -f "$f" || { { echo "$as_me:20531: error: cannot find input file: $f" >&5
test -f "$f" || { { echo "$as_me:20532: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
echo $f;;
@ -20541,7 +20542,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
echo $srcdir/$f
else
# /dev/null tree
{ { echo "$as_me:20544: error: cannot find input file: $f" >&5
{ { echo "$as_me:20545: error: cannot find input file: $f" >&5
echo "$as_me: error: cannot find input file: $f" >&2;}
{ (exit 1); exit 1; }; }
fi;;
@ -20599,7 +20600,7 @@ cat >>$CONFIG_STATUS <<\EOF
rm -f $tmp/in
if test x"$ac_file" != x-; then
if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
{ echo "$as_me:20602: $ac_file is unchanged" >&5
{ echo "$as_me:20603: $ac_file is unchanged" >&5
echo "$as_me: $ac_file is unchanged" >&6;}
else
ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \

View File

@ -25,7 +25,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
# $Id: dist.mk,v 1.826 2011/07/17 18:43:33 tom Exp $
# $Id: dist.mk,v 1.827 2011/07/24 13:21:30 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 = 9
NCURSES_PATCH = 20110723
NCURSES_PATCH = 20110730
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. *
* Copyright (c) 1998-2009,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 *
@ -33,7 +33,7 @@
****************************************************************************/
/*
* $Id: tic.h,v 1.65 2009/08/08 17:52:46 tom Exp $
* $Id: tic.h,v 1.66 2011/07/30 21:28:43 tom Exp $
* tic.h - Global variables and structures for the terminfo
* compiler.
*/
@ -270,6 +270,7 @@ extern NCURSES_EXPORT(void) _nc_reset_input (FILE *, char *);
extern NCURSES_EXPORT_VAR(int) _nc_curr_col;
extern NCURSES_EXPORT_VAR(int) _nc_curr_line;
extern NCURSES_EXPORT_VAR(int) _nc_syntax;
extern NCURSES_EXPORT_VAR(int) _nc_strict_bsd;
extern NCURSES_EXPORT_VAR(long) _nc_comment_end;
extern NCURSES_EXPORT_VAR(long) _nc_comment_start;
extern NCURSES_EXPORT_VAR(long) _nc_curr_file_pos;

View File

@ -1,6 +1,6 @@
'\" t
.\"***************************************************************************
.\" Copyright (c) 1998-2006,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: infocmp.1m,v 1.46 2010/12/04 18:40:45 tom Exp $
.\" $Id: infocmp.1m,v 1.48 2011/07/30 22:06:07 tom Exp $
.TH @INFOCMP@ 1M ""
.ds n 5
.ds d @TERMINFO@
@ -41,6 +41,7 @@ E\
F\
G\
I\
K\
L\
T\
U\
@ -107,6 +108,7 @@ l l .
\fB\-L\fR/use the long C variable name listed in <\fBterm.h\fR>
\fB\-C\fR/use the \fBtermcap\fR names
\fB\-r\fR/when using \fB\-C\fR, put out all capabilities in \fBtermcap\fR form
\fB\-K\fR/modifies the \fB\-C\fP option, improving BSD-compatibility.
.TE
.PP
If no \fItermnames\fR are given, the environment variable \fBTERM\fR will be
@ -128,6 +130,11 @@ are derivable from other \fBterminfo\fR variables, will be output. Not all
part of \fBtermcap\fR will normally be output. Specifying the \fB\-r\fR option
will take off this restriction, allowing all capabilities to be output in
\fItermcap\fR form.
Normally you would use both the \fB\-C\fP and \fB\-r\fP options.
The actual format used incorporates some improvements for escaped characters
from terminfo format.
For a stricter BSD-compatible translation, use the \fB\-K\fR option
rather than \fB\-C\fP.
.PP
Note that because padding is collected to the beginning of the capability, not
all capabilities are output. Mandatory padding is not supported. Because

View File

@ -27,7 +27,7 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: ncurses.3x,v 1.104 2011/05/28 23:19:36 tom Exp $
.\" $Id: ncurses.3x,v 1.105 2011/07/30 23:38:59 tom Exp $
.hy 0
.TH ncurses 3X ""
.de bP
@ -1007,6 +1007,13 @@ Specifies a list of directories to search for terminal descriptions.
The list is separated by colons (i.e., ":") on Unix, semicolons on OS/2 EMX.
All of the terminal descriptions are in terminfo form, which makes
a subdirectory named for the first letter of the terminal names therein.
.IP
If \fBncurses\fP is built with a hashed database,
then each entry in this list can also be the path of the corresponding
database file.
.IP
If \fBncurses\fP is built with a support for reading termcap files
directly, then an entry in this list may be the path of a termcap file.
.TP 5
TERMPATH
If TERMCAP does not hold a file name then \fBncurses\fR checks

View File

@ -1,4 +1,4 @@
.\" $Id: terminfo.tail,v 1.53 2010/12/04 18:38:55 tom Exp $
.\" $Id: terminfo.tail,v 1.54 2011/07/30 23:39:52 tom Exp $
.\" Beginning of terminfo.tail file
.\" This file is part of ncurses.
.\" See "terminfo.head" for copyright.
@ -125,8 +125,8 @@ will instead look in the directory \fB$HOME/.terminfo\fR
for a compiled description.
If it fails to find one there, and the environment variable TERMINFO_DIRS is
set, it will interpret the contents of that variable as a list of colon-
separated directories to be searched (an empty entry is interpreted as a
command to search \fI\*d\fR).
separated directories (or database files) to be searched
(an empty entry is interpreted as a command to search \fI\*d\fR).
If no description is found in any of the
TERMINFO_DIRS directories, the fetch fails.
.PP

View File

@ -26,7 +26,7 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: tic.1m,v 1.47 2010/12/04 18:38:55 tom Exp $
.\" $Id: tic.1m,v 1.48 2011/07/30 21:58:54 tom Exp $
.TH @TIC@ 1M ""
.ds n 5
.ds d @TERMINFO@
@ -39,6 +39,7 @@
C\
G\
I\
K\
L\
N\
T\
@ -101,6 +102,9 @@ names, but also translates terminfo strings to termcap format.
Capabilities
that are not translatable are left in the entry under their terminfo names
but commented out with two preceding dots.
The actual format used incorporates some improvements for escaped characters
from terminfo format.
For a stricter BSD-compatible translation, use the \fB\-K\fR option.
.TP
\fB\-c\fR
tells \fBtic\fP to only check \fIfile\fR for errors, including syntax problems and

View File

@ -34,7 +34,7 @@
****************************************************************************/
/*
* $Id: curses.priv.h,v 1.480 2011/06/25 20:36:52 tom Exp $
* $Id: curses.priv.h,v 1.481 2011/07/28 22:47:09 tom Exp $
*
* curses.priv.h
*
@ -794,7 +794,7 @@ typedef struct {
bool init_signals;
bool init_screen;
const char *comp_sourcename;
char *comp_sourcename;
char *comp_termtype;
bool have_tic_directory;

View File

@ -93,7 +93,7 @@
#include <ctype.h>
#include <tic.h>
MODULE_ID("$Id: captoinfo.c,v 1.64 2011/07/23 20:36:28 tom Exp $")
MODULE_ID("$Id: captoinfo.c,v 1.69 2011/07/30 21:33:42 tom Exp $")
#define MAX_PUSHED 16 /* max # args we can push onto the stack */
@ -240,6 +240,12 @@ getparm(int parm, int n)
else if (parm == 2)
parm = 1;
}
while (n--) {
dp = save_string(dp, "%p");
dp = save_char(dp, '0' + parm);
}
if (onstack == parm) {
if (n > 1) {
_nc_warning("string may not be optimal");
@ -255,11 +261,6 @@ getparm(int parm, int n)
onstack = parm;
while (n--) {
dp = save_string(dp, "%p");
dp = save_char(dp, '0' + parm);
}
if (seenn && parm < 3) {
dp = save_string(dp, "%{96}%^");
}
@ -576,7 +577,6 @@ save_tc_inequality(char *bufptr, int c1, int c2)
NCURSES_EXPORT(char *)
_nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameterized)
{
int strict_bsd = 1; /* FIXME - consider making this an option */
int seenone = 0, seentwo = 0, saw_m = 0, saw_n = 0;
const char *padding;
const char *trimmed = 0;
@ -589,8 +589,9 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
/* we may have to move some trailing mandatory padding up front */
padding = str + strlen(str) - 1;
if (padding > str && *padding == '>' && *--padding == '/') {
--padding;
if (padding > str && *padding == '>') {
if (*--padding == '/')
--padding;
while (isdigit(UChar(*padding)) || *padding == '.' || *padding == '*')
padding--;
if (padding > str && *padding == '<' && *--padding == '$')
@ -601,7 +602,7 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
bufptr = save_char(bufptr, *padding++);
}
for (; *str && str != trimmed; str++) {
for (; *str && ((trimmed == 0) || (str < trimmed)); str++) {
int c1, c2;
char *cp = 0;
@ -627,7 +628,7 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
bufptr = save_char(bufptr, *str++);
xx1 = *str;
if (strict_bsd) {
if (_nc_strict_bsd) {
if (isdigit(UChar(xx1))) {
int pad = 0;
@ -652,13 +653,11 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
bufptr = save_char(bufptr, xx2);
xx2 = '0';
}
} else if (strchr("E\\:nrtbf", xx1) == 0) {
/*
* Note: termcap documentation claims that ":" must be
* escaped as "\072", however the documentation is
* incorrect - read the code.
*/
} else if (strchr("E\\nrtbf", xx1) == 0) {
switch (xx1) {
case 'e':
xx1 = 'E';
break;
case 'l':
xx1 = 'n';
break;
@ -667,13 +666,25 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
bufptr = save_char(bufptr, '4');
xx1 = '0';
break;
case ':':
/*
* Note: termcap documentation claims that ":"
* must be escaped as "\072", however the
* documentation is incorrect - read the code.
* The replacement does not work reliably,
* so the advice is not helpful.
*/
bufptr = save_char(bufptr, '0');
bufptr = save_char(bufptr, '7');
xx1 = '2';
break;
default:
/* should not happen, but handle this anyway */
sprintf(octal, "%03o", UChar(xx1));
bufptr = save_char(bufptr, octal[0]);
bufptr = save_char(bufptr, octal[1]);
xx1 = octal[2];
continue;
break;
}
}
}
@ -711,13 +722,13 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
bufptr = save_tc_inequality(bufptr, c1, c2);
} else if (sscanf(str, "%%?%%{%d}%%>%%t%%'%c'%%+%%;", &c1, &ch2) == 2) {
str = strchr(str, ';');
bufptr = save_tc_inequality(bufptr, c1, c2);
bufptr = save_tc_inequality(bufptr, c1, ch2);
} else if (sscanf(str, "%%?%%'%c'%%>%%t%%{%d}%%+%%;", &ch1, &c2) == 2) {
str = strchr(str, ';');
bufptr = save_tc_inequality(bufptr, c1, c2);
bufptr = save_tc_inequality(bufptr, ch1, c2);
} else if (sscanf(str, "%%?%%'%c'%%>%%t%%'%c'%%+%%;", &ch1, &ch2) == 2) {
str = strchr(str, ';');
bufptr = save_tc_inequality(bufptr, c1, c2);
bufptr = save_tc_inequality(bufptr, ch1, ch2);
} else if ((len = bcd_expression(str)) != 0) {
str += len;
bufptr = save_string(bufptr, "%B");
@ -768,14 +779,14 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
while (isdigit(UChar(*str))) {
ch2 = ch1;
ch1 = *str++;
if (strict_bsd) {
if (_nc_strict_bsd) {
if (ch1 > '3')
return 0;
} else {
bufptr = save_char(bufptr, ch1);
}
}
if (strict_bsd) {
if (_nc_strict_bsd) {
if (ch2 != 0 && ch2 != '0')
return 0;
if (ch1 < '2')
@ -802,7 +813,7 @@ _nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameteriz
* termcap notation.
*/
case 's':
if (strict_bsd)
if (_nc_strict_bsd)
return 0;
bufptr = save_string(bufptr, "%s");
break;

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2005,2007 Free Software Foundation, Inc. *
* Copyright (c) 1998-2007,2010 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 *
@ -41,7 +41,7 @@
#include <tic.h>
MODULE_ID("$Id: comp_error.c,v 1.31 2007/04/21 23:38:32 tom Exp $")
MODULE_ID("$Id: comp_error.c,v 1.32 2011/07/29 00:40:41 tom Exp $")
NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings = FALSE;
NCURSES_EXPORT_VAR(int) _nc_curr_line = 0; /* current line # in input */
@ -59,7 +59,8 @@ _nc_get_source(void)
NCURSES_EXPORT(void)
_nc_set_source(const char *const name)
{
SourceName = name;
FreeIfNeeded(SourceName);
SourceName = strdup(name);
}
NCURSES_EXPORT(void)

View File

@ -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 *
@ -35,15 +35,10 @@
/*
* comp_parse.c -- parser driver loop and use handling.
*
* _nc_read_entry_source(FILE *, literal, bool, bool (*hook)())
* _nc_resolve_uses2(void)
* _nc_free_entries(void)
*
* Use this code by calling _nc_read_entry_source() on as many source
* files as you like (either terminfo or termcap syntax). If you
* want use-resolution, call _nc_resolve_uses2(). To free the list
* storage, do _nc_free_entries().
*
*/
#include <curses.priv.h>
@ -52,7 +47,7 @@
#include <tic.h>
MODULE_ID("$Id: comp_parse.c,v 1.73 2010/12/25 23:06:37 tom Exp $")
MODULE_ID("$Id: comp_parse.c,v 1.74 2011/07/25 22:46:47 tom Exp $")
static void sanity_check2(TERMTYPE *, bool);
NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype2) (TERMTYPE *, bool) = sanity_check2;
@ -61,6 +56,8 @@ NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype2) (TERMTYPE *, bool) = sanit
static void sanity_check(TERMTYPE *);
NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype) (TERMTYPE *) = sanity_check;
static void fixup_acsc(TERMTYPE *, bool);
static void
enqueue(ENTRY * ep)
/* add an entry to the in-core list */
@ -378,7 +375,7 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
for_entry_list(qp) {
_nc_curr_line = (int) qp->startline;
_nc_set_type(_nc_first_name(qp->tterm.term_names));
_nc_check_termtype2(&qp->tterm, literal);
fixup_acsc(&qp->tterm, literal);
}
DEBUG(2, ("SANITY CHECK FINISHED"));
}
@ -402,6 +399,17 @@ _nc_resolve_uses(bool fullresolve)
#undef CUR
#define CUR tp->
static void
fixup_acsc(TERMTYPE *tp, bool literal)
{
if (!literal) {
if (acs_chars == 0
&& enter_alt_charset_mode != 0
&& exit_alt_charset_mode != 0)
acs_chars = strdup(VT_ACSC);
}
}
static void
sanity_check2(TERMTYPE *tp, bool literal)
{
@ -428,10 +436,7 @@ sanity_check2(TERMTYPE *tp, bool literal)
* prefer to bypass it...
*/
if (!literal) {
if (acs_chars == 0
&& enter_alt_charset_mode != 0
&& exit_alt_charset_mode != 0)
acs_chars = strdup(VT_ACSC);
fixup_acsc(tp, literal);
ANDMISSING(enter_alt_charset_mode, acs_chars);
ANDMISSING(exit_alt_charset_mode, acs_chars);
}

View File

@ -1,5 +1,5 @@
/****************************************************************************
* Copyright (c) 1998-2008,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 *
@ -50,7 +50,7 @@
#include <ctype.h>
#include <tic.h>
MODULE_ID("$Id: comp_scan.c,v 1.89 2010/12/25 23:06:37 tom Exp $")
MODULE_ID("$Id: comp_scan.c,v 1.92 2011/07/30 21:36:33 tom Exp $")
/*
* Maximum length of string capability we'll accept before raising an error.
@ -61,6 +61,7 @@ MODULE_ID("$Id: comp_scan.c,v 1.89 2010/12/25 23:06:37 tom Exp $")
#define iswhite(ch) (ch == ' ' || ch == '\t')
NCURSES_EXPORT_VAR (int) _nc_syntax = 0; /* termcap or terminfo? */
NCURSES_EXPORT_VAR (int) _nc_strict_bsd = 1; /* ncurses extended termcap? */
NCURSES_EXPORT_VAR (long) _nc_curr_file_pos = 0; /* file offset of current line */
NCURSES_EXPORT_VAR (long) _nc_comment_start = 0; /* start of comment range before name */
NCURSES_EXPORT_VAR (long) _nc_comment_end = 0; /* end of comment range before name */
@ -299,6 +300,8 @@ eat_escaped_newline(int ch)
*tok_ptr++ = (char) ch; \
*tok_ptr = '\0'
static char *tok_buf;
/*
* int
* get_token()
@ -336,7 +339,6 @@ NCURSES_EXPORT(int)
_nc_get_token(bool silent)
{
static const char terminfo_punct[] = "@%&*!#";
static char *tok_buf;
char *after_list;
char *after_name;
@ -376,7 +378,6 @@ _nc_get_token(bool silent)
if (tok_buf != 0) {
if (_nc_curr_token.tk_name == tok_buf)
_nc_curr_token.tk_name = 0;
FreeAndNull(tok_buf);
}
return (EOF);
}
@ -390,6 +391,7 @@ _nc_get_token(bool silent)
}
ch = eat_escaped_newline(ch);
_nc_curr_token.tk_valstring = 0;
#ifdef TRACE
old_line = _nc_curr_line;
@ -758,21 +760,27 @@ _nc_trans_string(char *ptr, char *last)
*(ptr++) = (char) (c);
}
} else if (c == '\\') {
bool strict_bsd = ((_nc_syntax == SYN_TERMCAP) && _nc_strict_bsd);
c = next_char();
if (c == EOF)
_nc_err_abort(MSG_NO_INPUTS);
if (c >= '0' && c <= '7') {
#define isoctal(c) ((c) >= '0' && (c) <= '7')
if (isoctal(c) || (strict_bsd && isdigit(c))) {
number = c - '0';
for (i = 0; i < 2; i++) {
c = next_char();
if (c == EOF)
_nc_err_abort(MSG_NO_INPUTS);
if (c < '0' || c > '7') {
if (!isoctal(c)) {
if (isdigit(c)) {
_nc_warning("Non-octal digit `%c' in \\ sequence", c);
/* allow the digit; it'll do less harm */
if (!strict_bsd) {
_nc_warning("Non-octal digit `%c' in \\ sequence", c);
/* allow the digit; it'll do less harm */
}
} else {
push_back((char) c);
break;
@ -782,21 +790,16 @@ _nc_trans_string(char *ptr, char *last)
number = number * 8 + c - '0';
}
if (number == 0)
number = UChar(number);
if (number == 0 && !strict_bsd)
number = 0200;
*(ptr++) = (char) number;
} else {
switch (c) {
case 'E':
case 'e':
*(ptr++) = '\033';
break;
case 'a':
*(ptr++) = '\007';
break;
case 'l':
case 'n':
*(ptr++) = '\n';
break;
@ -809,10 +812,6 @@ _nc_trans_string(char *ptr, char *last)
*(ptr++) = '\010';
break;
case 's':
*(ptr++) = ' ';
break;
case 'f':
*(ptr++) = '\014';
break;
@ -833,16 +832,33 @@ _nc_trans_string(char *ptr, char *last)
*(ptr++) = ',';
break;
case ':':
*(ptr++) = ':';
break;
case '\n':
continue;
default:
_nc_warning("Illegal character '%s' in \\ sequence",
unctrl(UChar(c)));
if ((_nc_syntax == SYN_TERMINFO) || !_nc_strict_bsd) {
switch (c) {
case 'a':
c = '\007';
break;
case 'e':
c = '\033';
break;
case 'l':
c = '\n';
break;
case 's':
c = ' ';
break;
case ':':
c = ':';
break;
default:
_nc_warning("Illegal character '%s' in \\ sequence",
unctrl(UChar(c)));
break;
}
}
/* FALLTHRU */
case '|':
*(ptr++) = (char) c;
@ -934,5 +950,8 @@ _nc_comp_scan_leaks(void)
if (pushname != 0) {
FreeAndNull(pushname);
}
if (tok_buf != 0) {
FreeAndNull(tok_buf);
}
}
#endif

View File

@ -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 *
@ -47,7 +47,7 @@
#include <ctype.h>
#include <tic.h>
MODULE_ID("$Id: parse_entry.c,v 1.75 2010/05/01 19:35:09 tom Exp $")
MODULE_ID("$Id: parse_entry.c,v 1.76 2011/07/27 01:14:47 tom Exp $")
#ifdef LINT
static short const parametrized[] =
@ -203,6 +203,8 @@ _nc_extend_names(ENTRY * entryp, char *name, int token_type)
{ bad_tc_usage = TRUE; \
_nc_warning("Legacy termcap allows only a trailing tc= clause"); }
#define MAX_NUMBER 0x7fff /* positive shorts only */
NCURSES_EXPORT(int)
_nc_parse_entry(struct entry *entryp, int literal, bool silent)
{
@ -444,8 +446,12 @@ _nc_parse_entry(struct entry *entryp, int literal, bool silent)
break;
case NUMBER:
entryp->tterm.Numbers[entry_ptr->nte_index] =
(short) _nc_curr_token.tk_valnumber;
if (_nc_curr_token.tk_valnumber > MAX_NUMBER) {
entryp->tterm.Numbers[entry_ptr->nte_index] = MAX_NUMBER;
} else {
entryp->tterm.Numbers[entry_ptr->nte_index] =
(short) _nc_curr_token.tk_valnumber;
}
break;
case STRING:

View File

@ -41,7 +41,7 @@
#include <tic.h>
MODULE_ID("$Id: read_entry.c,v 1.108 2011/02/26 15:36:06 tom Exp $")
MODULE_ID("$Id: read_entry.c,v 1.109 2011/07/25 22:21:34 tom Exp $")
#define TYPE_CALLOC(type,elts) typeCalloc(type, (unsigned)(elts))
@ -401,7 +401,7 @@ _nc_read_tic_entry(char *filename,
const char *name,
TERMTYPE *const tp)
{
int result = TGETENT_NO;
int code = TGETENT_NO;
/*
* If we are looking in a directory, assume the entry is a file under that,
@ -412,9 +412,9 @@ _nc_read_tic_entry(char *filename,
(void) sprintf(filename, "%s/" LEAF_FMT "/%s", path, *name, name);
if (_nc_is_dir_path(path))
result = _nc_read_file_entry(filename, tp);
#if USE_HASHED_DB
code = _nc_read_file_entry(filename, tp);
else {
#if USE_HASHED_DB
static const char suffix[] = DBM_SUFFIX;
DB *capdbp;
unsigned lens = sizeof(suffix) - 1;
@ -467,8 +467,8 @@ _nc_read_tic_entry(char *filename,
if (*have++ == 0) {
if (data.size > key.size
&& IS_TIC_MAGIC(have)) {
result = _nc_read_termtype(tp, have, used);
if (result == TGETENT_NO) {
code = _nc_read_termtype(tp, have, used);
if (code == TGETENT_NO) {
_nc_free_termtype(tp);
}
}
@ -493,9 +493,15 @@ _nc_read_tic_entry(char *filename,
free(save);
}
}
}
#endif
return result;
#if USE_TERMCAP
if (code != TGETENT_YES) {
code = _nc_read_termcap_entry(name, tp);
sprintf(filename, "%.*s", PATH_MAX - 1, _nc_get_source());
}
#endif
}
return code;
}
#endif /* USE_DATABASE */
@ -533,8 +539,7 @@ _nc_read_entry(const char *const name, char *const filename, TERMTYPE *const tp)
break;
}
}
#endif
#if USE_TERMCAP
#elif USE_TERMCAP
if (code != TGETENT_YES) {
code = _nc_read_termcap_entry(name, tp);
sprintf(filename, "%.*s", PATH_MAX - 1, _nc_get_source());

View File

@ -56,7 +56,7 @@
#include <sys/types.h>
#include <tic.h>
MODULE_ID("$Id: read_termcap.c,v 1.76 2011/06/05 00:48:00 tom Exp $")
MODULE_ID("$Id: read_termcap.c,v 1.79 2011/07/29 00:25:02 tom Exp $")
#if !PURE_TERMINFO
@ -441,8 +441,10 @@ _nc_getent(
break;
}
if (!foundit)
if (!foundit) {
free(record);
return (TC_NOT_FOUND);
}
}
/*
@ -454,7 +456,7 @@ _nc_getent(
register int newilen;
unsigned ilen;
int diff, iret, tclen, oline;
char *icap, *scan, *tc, *tcstart, *tcend;
char *icap = 0, *scan, *tc, *tcstart, *tcend;
/*
* Loop invariants:
@ -467,8 +469,9 @@ _nc_getent(
scan = record;
tc_not_resolved = FALSE;
for (;;) {
if ((tc = _nc_cgetcap(scan, "tc", '=')) == 0)
if ((tc = _nc_cgetcap(scan, "tc", '=')) == 0) {
break;
}
/*
* Find end of tc=name and stomp on the trailing `:'
@ -485,6 +488,7 @@ _nc_getent(
tclen = s - tcstart;
tcend = s;
icap = 0;
iret = _nc_getent(&icap, &ilen, &oline, current, db_array, fd,
tc, depth + 1, 0);
newicap = icap; /* Put into a register. */
@ -495,12 +499,13 @@ _nc_getent(
if (myfd)
(void) close(fd);
free(record);
FreeIfNeeded(icap);
return (iret);
}
if (iret == TC_UNRESOLVED)
if (iret == TC_UNRESOLVED) {
tc_not_resolved = TRUE;
/* couldn't resolve tc */
if (iret == TC_NOT_FOUND) {
/* couldn't resolve tc */
} else if (iret == TC_NOT_FOUND) {
*(s - 1) = ':';
scan = s - 1;
tc_not_resolved = TRUE;
@ -580,8 +585,9 @@ _nc_getent(
}
*cap = record;
if (tc_not_resolved)
if (tc_not_resolved) {
return (TC_UNRESOLVED);
}
return (current);
}
@ -840,6 +846,9 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
}
}
*fname = 0; /* mark end of vector */
#if !HAVE_BSD_CGETENT
(void) _nc_cgetset(0);
#endif
if (_nc_is_abs_path(cp)) {
if (_nc_cgetset(cp) < 0) {
return (TC_SYS_ERR);
@ -979,7 +988,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
_nc_curr_line = lineno;
_nc_set_source(source);
}
_nc_read_entry_source((FILE *) 0, tc, FALSE, FALSE, NULLHOOK);
_nc_read_entry_source((FILE *) 0, tc, FALSE, TRUE, NULLHOOK);
#else
/*
* Here is what the 4.4BSD termcap(3) page prescribes:

View File

@ -1,4 +1,4 @@
# $Id: Makefile.in,v 1.85 2010/11/27 21:45:27 tom Exp $
# $Id: Makefile.in,v 1.86 2011/07/30 22:51:50 tom Exp $
##############################################################################
# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. #
# #
@ -104,6 +104,7 @@ LOCAL_LIBDIR = @top_builddir@/lib
LD = @LD@
LINK = @LINK_PROGS@ $(LIBTOOL_LINK)
LDFLAGS = @EXTRA_LDFLAGS@ @LDFLAGS@
RPATH_LIST = @RPATH_LIST@
LDFLAGS_LIBTOOL = $(LDFLAGS) $(CFLAGS_LIBTOOL)
LDFLAGS_NORMAL = $(LDFLAGS) $(CFLAGS_NORMAL)

View File

@ -42,7 +42,7 @@
#include <dump_entry.h>
MODULE_ID("$Id: infocmp.c,v 1.106 2011/05/14 22:51:04 tom Exp $")
MODULE_ID("$Id: infocmp.c,v 1.107 2011/07/30 21:51:01 tom Exp $")
#define L_CURL "{"
#define R_CURL "}"
@ -975,6 +975,7 @@ usage(void)
,""
,"Options:"
," -1 print single-column"
," -K use termcap-names and BSD syntax"
," -C use termcap-names"
," -F compare terminfo-files"
," -I use terminfo-names"
@ -1288,6 +1289,7 @@ main(int argc, char *argv[])
#if NCURSES_XNAMES
use_extended_names(FALSE);
#endif
_nc_strict_bsd = 0;
_nc_progname = _nc_rootname(argv[0]);
@ -1298,7 +1300,7 @@ main(int argc, char *argv[])
while ((c = getopt(argc,
argv,
"1A:aB:CcdEeFfGgIiLlnpqR:rs:TtUuVv:w:x")) != -1) {
"1A:aB:CcdEeFfGgIiKLlnpqR:rs:TtUuVv:w:x")) != -1) {
switch (c) {
case '1':
mwidth = 0;
@ -1318,6 +1320,9 @@ main(int argc, char *argv[])
restdir = optarg;
break;
case 'K':
_nc_strict_bsd = 1;
/* FALLTHRU */
case 'C':
outform = F_TERMCAP;
tversion = "BSD";

View File

@ -44,7 +44,7 @@
#include <dump_entry.h>
#include <transform.h>
MODULE_ID("$Id: tic.c,v 1.150 2011/05/21 18:15:45 tom Exp $")
MODULE_ID("$Id: tic.c,v 1.151 2011/07/30 21:49:32 tom Exp $")
const char *_nc_progname = "tic";
@ -74,6 +74,7 @@ f\
G\
g\
I\
K\
L\
N\
r\
@ -133,6 +134,7 @@ usage(void)
#if NCURSES_XNAMES
" -a retain commented-out capabilities (sets -x also)",
#endif
" -K translate entries to termcap source form with BSD syntax",
" -C translate entries to termcap source form",
" -c check only, validate input without compiling or translating",
" -e<names> translate/compile only entries named by comma-separated list",
@ -514,6 +516,7 @@ main(int argc, char *argv[])
#if NCURSES_XNAMES
use_extended_names(FALSE);
#endif
_nc_strict_bsd = 0;
/*
* Processing arguments is a little complicated, since someone made a
@ -521,7 +524,7 @@ main(int argc, char *argv[])
* be optional.
*/
while ((this_opt = getopt(argc, argv,
"0123456789CILNR:TUVace:fGgo:rstvwx")) != -1) {
"0123456789CIKLNR:TUVace:fGgo:rstvwx")) != -1) {
if (isdigit(this_opt)) {
switch (last_opt) {
case 'v':
@ -539,6 +542,9 @@ main(int argc, char *argv[])
continue;
}
switch (this_opt) {
case 'K':
_nc_strict_bsd = 1;
/* FALLTHRU */
case 'C':
capdump = TRUE;
outform = F_TERMCAP;