Import Tcl 8.6.11

This commit is contained in:
Steve Dower
2021-03-30 00:51:39 +01:00
parent 3bb8e3e086
commit 1aadb2455c
923 changed files with 79104 additions and 62616 deletions

View File

@@ -17,7 +17,7 @@ needs to conform to the following conventions.
"configure". When the program "configure" is run, it should generate
a file "Makefile" in the current working directory. The "configure"
program should be able to accept as command line arguments all the
arguments that can be passed to the master unix/configure program. It
arguments that can be passed to the top unix/configure program. It
should also accept the --with-tcl= and --with-tclinclude= options in
the conventional way.

View File

@@ -1,118 +0,0 @@
# This file should only be included in makefiles for Tcl extensions,
# NOT in the makefile for Tcl itself.
!ifndef _RULES_EXT_VC
# We need to run from the directory the parent makefile is located in.
# nmake does not tell us what makefile was used to invoke it so parent
# makefile has to set the MAKEFILEVC macro or we just make a guess and
# warn if we think that is not the case.
!if "$(MAKEFILEVC)" == ""
!if exist("$(PROJECT).vc")
MAKEFILEVC = $(PROJECT).vc
!elseif exist("makefile.vc")
MAKEFILEVC = makefile.vc
!endif
!endif # "$(MAKEFILEVC)" == ""
!if !exist("$(MAKEFILEVC)")
MSG = ^
You must run nmake from the directory containing the project makefile.^
If you are doing that and getting this message, set the MAKEFILEVC^
macro to the name of the project makefile.
!message WARNING: $(MSG)
!endif
!if "$(PROJECT)" == "tcl"
!error The rules-ext.vc file is not intended for Tcl itself.
!endif
# We extract version numbers using the nmakehlp program. For now use
# the local copy of nmakehlp. Once we locate Tcl, we will use that
# one if it is newer.
!if [$(CC) -nologo "nmakehlp.c" -link -subsystem:console > nul]
!endif
# First locate the Tcl directory that we are working with.
!ifdef TCLDIR
_RULESDIR = $(TCLDIR:/=\)
!else
# If an installation path is specified, that is also the Tcl directory.
# Also Tk never builds against an installed Tcl, it needs Tcl sources
!if defined(INSTALLDIR) && "$(PROJECT)" != "tk"
_RULESDIR=$(INSTALLDIR:/=\)
!else
# Locate Tcl sources
!if [echo _RULESDIR = \> nmakehlp.out] \
|| [nmakehlp -L generic\tcl.h >> nmakehlp.out]
_RULESDIR = ..\..\tcl
!else
!include nmakehlp.out
!endif
!endif # defined(INSTALLDIR)....
!endif # ifndef TCLDIR
# Now look for the targets.vc file under the Tcl root. Note we check this
# file and not rules.vc because the latter also exists on older systems.
!if exist("$(_RULESDIR)\lib\nmake\targets.vc") # Building against installed Tcl
_RULESDIR = $(_RULESDIR)\lib\nmake
!elseif exist("$(_RULESDIR)\win\targets.vc") # Building against Tcl sources
_RULESDIR = $(_RULESDIR)\win
!else
# If we have not located Tcl's targets file, most likely we are compiling
# against an older version of Tcl and so must use our own support files.
_RULESDIR = .
!endif
!if "$(_RULESDIR)" != "."
# Potentially using Tcl's support files. If this extension has its own
# nmake support files, need to compare the versions and pick newer.
!if exist("rules.vc") # The extension has its own copy
!if [echo TCL_RULES_MAJOR = \> versions.vc] \
&& [nmakehlp -V "$(_RULESDIR)\rules.vc" RULES_VERSION_MAJOR >> versions.vc]
!endif
!if [echo TCL_RULES_MINOR = \>> versions.vc] \
&& [nmakehlp -V "$(_RULESDIR)\rules.vc" RULES_VERSION_MINOR >> versions.vc]
!endif
!if [echo OUR_RULES_MAJOR = \>> versions.vc] \
&& [nmakehlp -V "rules.vc" RULES_VERSION_MAJOR >> versions.vc]
!endif
!if [echo OUR_RULES_MINOR = \>> versions.vc] \
&& [nmakehlp -V "rules.vc" RULES_VERSION_MINOR >> versions.vc]
!endif
!include versions.vc
# We have a newer version of the support files, use them
!if ($(TCL_RULES_MAJOR) != $(OUR_RULES_MAJOR)) || ($(TCL_RULES_MINOR) < $(OUR_RULES_MINOR))
_RULESDIR = .
!endif
!endif # if exist("rules.vc")
!endif # if $(_RULESDIR) != "."
# Let rules.vc know what copy of nmakehlp.c to use.
NMAKEHLPC = $(_RULESDIR)\nmakehlp.c
# Get rid of our internal defines before calling rules.vc
!undef TCL_RULES_MAJOR
!undef TCL_RULES_MINOR
!undef OUR_RULES_MAJOR
!undef OUR_RULES_MINOR
!if exist("$(_RULESDIR)\rules.vc")
!message *** Using $(_RULESDIR)\rules.vc
!include "$(_RULESDIR)\rules.vc"
!else
!error *** Could not locate rules.vc in $(_RULESDIR)
!endif
!endif # _RULES_EXT_VC

View File

@@ -143,7 +143,7 @@ TCLSH = $(TCLSH_ENV) $(PKG_ENV) $(TCLSH_PROG)
TESTLOADARG = if {[catch {package present ${PACKAGE_NAME}}]} {package forget ${PACKAGE_NAME}}; \
package ifneeded ${PACKAGE_NAME} ${PACKAGE_VERSION} \
[list load `@CYGPATH@ $(top_builddir)/$(PKG_LIB_FILE)` $(PACKAGE_NAME)]
[list load `@CYGPATH@ $(top_builddir)/$(PKG_LIB_FILE)` [string totitle $(PACKAGE_NAME)]]
#WISH_ENV = TK_LIBRARY=`@CYGPATH@ $(TK_SRC_DIR)/library`
#WISH_PROG = @WISH_PROG@
@@ -163,7 +163,7 @@ PKG_CFLAGS = @PKG_CFLAGS@
# you do not compile with a similar machine setup as the Tcl core was
# compiled with.
#DEFS = $(TCL_DEFS) @DEFS@ $(PKG_CFLAGS)
DEFS = @DEFS@ $(PKG_CFLAGS) -DITCL_LIBRARY=\"$(pkglibdir)\"
DEFS = @DEFS@ $(PKG_CFLAGS) -DITCL_LIBRARY="$(pkglibdir)"
# Move pkgIndex.tcl to 'BINARIES' var if it is generated in the Makefile
CONFIG_CLEAN_FILES = @CONFIG_CLEAN_FILES@ Makefile itclConfig.sh pkgIndex.tcl
@@ -225,11 +225,11 @@ install-binaries: binaries install-lib-binaries install-bin-binaries
#========================================================================
install-libraries: libraries
@$(INSTALL_DATA_DIR) $(DESTDIR)$(includedir)
@$(INSTALL_DATA_DIR) "$(DESTDIR)$(includedir)"
@echo "Installing header files in $(DESTDIR)$(includedir)"
@list='$(PKG_HEADERS)'; for i in $$list; do \
echo "Installing $(srcdir)/$$i" ; \
$(INSTALL_DATA) $(srcdir)/$$i $(DESTDIR)$(includedir) ; \
$(INSTALL_DATA) $(srcdir)/$$i "$(DESTDIR)$(includedir)" ; \
done;
#========================================================================
@@ -238,14 +238,14 @@ install-libraries: libraries
#========================================================================
install-doc: doc
@$(INSTALL_DATA_DIR) $(DESTDIR)$(mandir)/mann
@$(INSTALL_DATA_DIR) "$(DESTDIR)$(mandir)/mann"
@echo "Installing documentation in $(DESTDIR)$(mandir)"
@list='$(srcdir)/doc/*.n'; for i in $$list; do \
if test X"$$i" = X'$(srcdir)/doc/*.n'; then break; fi; \
bi=`basename $$i`; \
echo "Installing $$bi"; \
sed -e '/man\.macros/r $(srcdir)/doc/man.macros' -e '/man\.macros/d' $$i > $$bi.tmp \
&& $(INSTALL_DATA) $$bi.tmp $(DESTDIR)$(mandir)/mann/$$bi \
&& $(INSTALL_DATA) $$bi.tmp "$(DESTDIR)$(mandir)/mann/$$bi" \
&& rm -f $$bi.tmp; \
done
@@ -401,17 +401,17 @@ distclean: clean
#========================================================================
install-lib-binaries: binaries
@$(INSTALL_DATA_DIR) $(DESTDIR)$(pkglibdir)
@$(INSTALL_DATA_DIR) "$(DESTDIR)$(pkglibdir)"
@list='$(lib_BINARIES)'; for p in $$list; do \
if test -f $$p; then \
echo " $(INSTALL_LIBRARY) $$p $(DESTDIR)$(pkglibdir)/$$p"; \
$(INSTALL_LIBRARY) $$p $(DESTDIR)$(pkglibdir)/$$p; \
$(INSTALL_LIBRARY) $$p "$(DESTDIR)$(pkglibdir)/$$p"; \
ext=`echo $$p|sed -e "s/.*\.//"`; \
if test "x$$ext" = "xdll"; then \
lib=`basename $$p|sed -e 's/.[^.]*$$//'`.lib; \
if test -f $$lib; then \
echo " $(INSTALL_DATA) $$lib $(DESTDIR)$(pkglibdir)/$$lib"; \
$(INSTALL_DATA) $$lib $(DESTDIR)$(pkglibdir)/$$lib; \
$(INSTALL_DATA) $$lib "$(DESTDIR)$(pkglibdir)/$$lib"; \
fi; \
fi; \
fi; \
@@ -420,14 +420,14 @@ install-lib-binaries: binaries
if test -f $(srcdir)/$$p; then \
destp=`basename $$p`; \
echo " Install $$destp $(DESTDIR)$(pkglibdir)/$$destp"; \
$(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(pkglibdir)/$$destp; \
$(INSTALL_DATA) $(srcdir)/$$p "$(DESTDIR)$(pkglibdir)/$$destp"; \
fi; \
done
@if test "x$(SHARED_BUILD)" = "x1"; then \
echo " Install pkgIndex.tcl $(DESTDIR)$(pkglibdir)"; \
$(INSTALL_DATA) pkgIndex.tcl $(DESTDIR)$(pkglibdir); \
$(INSTALL_DATA) pkgIndex.tcl "$(DESTDIR)$(pkglibdir)"; \
fi
$(INSTALL_DATA) itclConfig.sh $(DESTDIR)$(pkglibdir)
$(INSTALL_DATA) itclConfig.sh "$(DESTDIR)$(pkglibdir)"
#========================================================================
# Install binary executables (e.g. .exe files and dependent .dll files)
@@ -443,7 +443,7 @@ install-bin-binaries: binaries
@list='$(bin_BINARIES)'; for p in $$list; do \
if test -f $$p; then \
echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$p"; \
$(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/$$p; \
$(INSTALL_PROGRAM) $$p "$(DESTDIR)$(bindir)/$$p"; \
fi; \
done
@@ -453,14 +453,14 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
uninstall-binaries:
list='$(lib_BINARIES)'; for p in $$list; do \
rm -f $(DESTDIR)$(pkglibdir)/$$p; \
rm -f "$(DESTDIR)$(pkglibdir)/$$p"; \
done
list='$(PKG_TCL_SOURCES)'; for p in $$list; do \
p=`basename $$p`; \
rm -f $(DESTDIR)$(pkglibdir)/$$p; \
rm -f "$(DESTDIR)$(pkglibdir)/$$p"; \
done
list='$(bin_BINARIES)'; for p in $$list; do \
rm -f $(DESTDIR)$(bindir)/$$p; \
rm -f "$(DESTDIR)$(bindir)/$$p"; \
done
.PHONY: all binaries clean depend distclean doc install libraries test

View File

@@ -1,6 +1,6 @@
README: Itcl
This is the 4.2.0 source distribution of Itcl, an object oriented
This is the 4.2.1 source distribution of Itcl, an object oriented
extension for Tcl. Itcl releases are available from Sourceforge at:
https://sourceforge.net/projects/incrtcl/files/%5Bincr%20Tcl_Tk%5D-4-source/

View File

@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for itcl 4.2.0.
# Generated by GNU Autoconf 2.69 for itcl 4.2.1.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -577,8 +577,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='itcl'
PACKAGE_TARNAME='itcl'
PACKAGE_VERSION='4.2.0'
PACKAGE_STRING='itcl 4.2.0'
PACKAGE_VERSION='4.2.1'
PACKAGE_STRING='itcl 4.2.1'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -638,7 +638,6 @@ MAKE_STUB_LIB
MAKE_STATIC_LIB
MAKE_SHARED_LIB
MAKE_LIB
TCL_DBGX
LDFLAGS_DEFAULT
CFLAGS_DEFAULT
LD_LIBRARY_PATH_VAR
@@ -646,6 +645,8 @@ SHLIB_CFLAGS
SHLIB_LD_LIBS
SHLIB_LD
STLIB_LD
LDFLAGS_OPTIMIZE
LDFLAGS_DEBUG
CFLAGS_WARNING
CFLAGS_OPTIMIZE
CFLAGS_DEBUG
@@ -1305,7 +1306,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures itcl 4.2.0 to adapt to many kinds of systems.
\`configure' configures itcl 4.2.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1366,7 +1367,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of itcl 4.2.0:";;
short | recursive ) echo "Configuration of itcl 4.2.1:";;
esac
cat <<\_ACEOF
@@ -1466,7 +1467,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
itcl configure 4.2.0
itcl configure 4.2.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1885,7 +1886,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by itcl $as_me 4.2.0, which was
It was created by itcl $as_me 4.2.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3426,10 +3427,6 @@ $as_echo "loading" >&6; }
$as_echo "could not find ${TCL_BIN_DIR}/tclConfig.sh" >&6; }
fi
# eval is required to do the TCL_DBGX substitution
eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
# If the TCL_BIN_DIR is the build directory (not the install directory),
# then set the common variable name to the value of the build variables.
# For example, the variable TCL_LIB_SPEC will be set to the value
@@ -3463,12 +3460,6 @@ $as_echo "could not find ${TCL_BIN_DIR}/tclConfig.sh" >&6; }
esac
fi
# eval is required to do the TCL_DBGX substitution
eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
@@ -5087,7 +5078,7 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
for i in $vars; do
if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
# Convert foo.lib to -lfoo for GCC. No-op if not *.lib
i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'`
i=`echo "$i" | sed -e 's/^\([^-].*\)\.[lL][iI][bB]$/-l\1/'`
fi
PKG_LIBS="$PKG_LIBS $i"
done
@@ -6127,7 +6118,7 @@ fi
for i in $vars; do
if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
# Convert foo.lib to -lfoo for GCC. No-op if not *.lib
i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'`
i=`echo "$i" | sed -e 's/^\([^-].*\)\.[lL][iI][bB]$/-l\1/'`
fi
PKG_LIBS="$PKG_LIBS $i"
done
@@ -6152,7 +6143,7 @@ fi
for i in $vars; do
if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
# Convert foo.lib to -lfoo for GCC. No-op if not *.lib
i=`echo "$i" | sed -e 's/^\([^-].*\)\.lib$/-l\1/i'`
i=`echo "$i" | sed -e 's/^\([^-].*\)\.[lL][iI][bB]$/-l\1/'`
fi
PKG_LIBS="$PKG_LIBS $i"
done
@@ -6301,14 +6292,14 @@ $as_echo "$ac_cv_cross" >&6; }
if test "$ac_cv_cross" = "yes"; then
case "$do64bit" in
amd64|x64|yes)
CC="x86_64-w64-mingw32-gcc"
CC="x86_64-w64-mingw32-${CC}"
LD="x86_64-w64-mingw32-ld"
AR="x86_64-w64-mingw32-ar"
RANLIB="x86_64-w64-mingw32-ranlib"
RC="x86_64-w64-mingw32-windres"
;;
*)
CC="i686-w64-mingw32-gcc"
CC="i686-w64-mingw32-${CC}"
LD="i686-w64-mingw32-ld"
AR="i686-w64-mingw32-ar"
RANLIB="i686-w64-mingw32-ranlib"
@@ -6389,14 +6380,14 @@ fi
SHLIB_LD="/usr/ccs/bin/ld -G -z text"
if test "$GCC" = yes; then :
CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-R,${LIB_RUNTIME_DIR}"'
else
CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-R${LIB_RUNTIME_DIR}"'
fi
LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-R "${LIB_RUNTIME_DIR}"'
else
@@ -6411,7 +6402,7 @@ else
fi
SHLIB_LD="${SHLIB_LD} ${SHLIB_LD_FLAGS}"
CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-L${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
fi
@@ -6487,39 +6478,6 @@ fi
SHLIB_LD='${CC} -shared'
SHLIB_SUFFIX=".dll"
SHLIB_LD_LIBS="${SHLIB_LD_LIBS} -Wl,--out-implib,\$@.a"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Cygwin version of gcc" >&5
$as_echo_n "checking for Cygwin version of gcc... " >&6; }
if ${ac_cv_cygwin+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifdef __CYGWIN__
#error cygwin
#endif
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_cygwin=no
else
ac_cv_cygwin=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cygwin" >&5
$as_echo "$ac_cv_cygwin" >&6; }
if test "$ac_cv_cygwin" = "no"; then
as_fn_error $? "${CC} is not a cygwin compiler." "$LINENO" 5
fi
EXEEXT=".exe"
do64bit_ok=yes
CC_SEARCH_FLAGS=""
@@ -6644,8 +6602,8 @@ fi
SHLIB_CFLAGS="+z"
SHLIB_LD="ld -b"
LDFLAGS="$LDFLAGS -Wl,-E"
CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
CC_SEARCH_FLAGS='"-Wl,+s,+b,${LIB_RUNTIME_DIR}:."'
LD_SEARCH_FLAGS='+s +b "${LIB_RUNTIME_DIR}:."'
LD_LIBRARY_PATH_VAR="SHLIB_PATH"
fi
@@ -6672,7 +6630,7 @@ fi
SHLIB_LD='${CC} -shared'
if test $doRpath = yes; then :
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
fi
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
;;
@@ -6741,8 +6699,8 @@ fi
SHLIB_LD="ld -b"
SHLIB_LD_LIBS=""
LDFLAGS="$LDFLAGS -Wl,-E"
CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
CC_SEARCH_FLAGS='"-Wl,+s,+b,${LIB_RUNTIME_DIR}:."'
LD_SEARCH_FLAGS='+s +b "${LIB_RUNTIME_DIR}:."'
LD_LIBRARY_PATH_VAR="SHLIB_PATH"
fi ;;
@@ -6758,8 +6716,8 @@ esac
if test $doRpath = yes; then :
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS='-rpath "${LIB_RUNTIME_DIR}"'
fi
;;
IRIX-6.*)
@@ -6768,8 +6726,8 @@ fi
SHLIB_SUFFIX=".so"
if test $doRpath = yes; then :
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS='-rpath "${LIB_RUNTIME_DIR}"'
fi
if test "$GCC" = yes; then :
@@ -6797,8 +6755,8 @@ fi
SHLIB_SUFFIX=".so"
if test $doRpath = yes; then :
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS='-rpath "${LIB_RUNTIME_DIR}"'
fi
# Check to enable 64-bit flags for compiler/linker
@@ -6821,7 +6779,7 @@ fi
fi
;;
Linux*|GNU*|NetBSD-Debian)
Linux*|GNU*|NetBSD-Debian|DragonFly-*|FreeBSD-*)
SHLIB_CFLAGS="-fPIC"
SHLIB_SUFFIX=".so"
@@ -6831,9 +6789,22 @@ fi
# TEA specific: use LDFLAGS_DEFAULT instead of LDFLAGS
SHLIB_LD='${CC} ${CFLAGS} ${LDFLAGS_DEFAULT} -shared'
LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
case $system in
DragonFly-*|FreeBSD-*)
if test "${TCL_THREADS}" = "1"; then :
# The -pthread needs to go in the LDFLAGS, not LIBS
LIBS=`echo $LIBS | sed s/-pthread//`
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LDFLAGS="$LDFLAGS $PTHREAD_LIBS"
fi
;;
esac
if test $doRpath = yes; then :
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
fi
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
if test "`uname -m`" = "alpha"; then :
@@ -6898,8 +6869,8 @@ fi
LD_FLAGS="-Wl,--export-dynamic"
if test $doRpath = yes; then :
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
fi
;;
OpenBSD-*)
@@ -6916,11 +6887,11 @@ fi
SHLIB_SUFFIX=".so"
if test $doRpath = yes; then :
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
fi
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so${SHLIB_VERSION}'
LDFLAGS="-Wl,-export-dynamic"
LDFLAGS="$LDFLAGS -Wl,-export-dynamic"
CFLAGS_OPTIMIZE="-O2"
# On OpenBSD: Compile with -pthread
# Don't link with -lpthread
@@ -6938,7 +6909,7 @@ fi
LDFLAGS="$LDFLAGS -export-dynamic"
if test $doRpath = yes; then :
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
fi
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
# The -pthread needs to go in the CFLAGS, not LIBS
@@ -6946,32 +6917,6 @@ fi
CFLAGS="$CFLAGS -pthread"
LDFLAGS="$LDFLAGS -pthread"
;;
DragonFly-*|FreeBSD-*)
# This configuration from FreeBSD Ports.
SHLIB_CFLAGS="-fPIC"
SHLIB_LD="${CC} -shared"
SHLIB_LD_LIBS="${SHLIB_LD_LIBS} -Wl,-soname,\$@"
SHLIB_SUFFIX=".so"
LDFLAGS=""
if test $doRpath = yes; then :
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
fi
# The -pthread needs to go in the LDFLAGS, not LIBS
LIBS=`echo $LIBS | sed s/-pthread//`
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LDFLAGS="$LDFLAGS $PTHREAD_LIBS"
case $system in
FreeBSD-3.*)
# Version numbers are dot-stripped by system policy.
TCL_TRIM_DOTS=`echo ${PACKAGE_VERSION} | tr -d .`
UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1'
TCL_LIB_VERSIONS_OK=nodots
;;
esac
;;
Darwin-*)
CFLAGS_OPTIMIZE="-Os"
SHLIB_CFLAGS="-fno-common"
@@ -7280,7 +7225,7 @@ fi
SHLIB_SUFFIX=".so"
if test $doRpath = yes; then :
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
fi
if test "$GCC" = yes; then :
@@ -7350,13 +7295,13 @@ $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
if test "$GCC" = yes; then :
SHLIB_LD='${CC} -shared'
CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-R,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
else
SHLIB_LD="/usr/ccs/bin/ld -G -z text"
CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='-R "${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
fi
@@ -7456,7 +7401,7 @@ fi
if test "$GCC" = yes; then :
SHLIB_LD='${CC} -shared'
CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-R,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
if test "$do64bit_ok" = yes; then :
@@ -7493,8 +7438,8 @@ else
*)
SHLIB_LD='/usr/ccs/bin/ld -G -z text';;
esac
CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-R,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS='-R "${LIB_RUNTIME_DIR}"'
fi
;;
@@ -7793,6 +7738,8 @@ fi
# These must be called after we do the basic CFLAGS checks and
# verify any possible 64-bit or similar switches are necessary
@@ -8187,7 +8134,6 @@ else
tcl_ok=no
fi
DBGX=""
if test "$tcl_ok" = "no"; then
CFLAGS_DEFAULT="${CFLAGS_OPTIMIZE} -DNDEBUG"
LDFLAGS_DEFAULT="${LDFLAGS_OPTIMIZE}"
@@ -8201,11 +8147,6 @@ $as_echo "no" >&6; }
$as_echo "yes (standard debugging)" >&6; }
fi
fi
# TEA specific:
if test "${TEA_PLATFORM}" != "windows" ; then
LDFLAGS_DEFAULT="${LDFLAGS}"
fi
@@ -8291,7 +8232,7 @@ fi
if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes"; then
MAKE_STATIC_LIB="\${STLIB_LD} -out:\$@ \$(PKG_OBJECTS)"
MAKE_SHARED_LIB="\${SHLIB_LD} \${SHLIB_LD_LIBS} \${LDFLAGS_DEFAULT} -out:\$@ \$(PKG_OBJECTS)"
MAKE_SHARED_LIB="\${SHLIB_LD} \${LDFLAGS} \${LDFLAGS_DEFAULT} -out:\$@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -8317,7 +8258,7 @@ rm -f conftest*
MAKE_STUB_LIB="\${STLIB_LD} -nodefaultlib -out:\$@ \$(PKG_STUB_OBJECTS)"
else
MAKE_STATIC_LIB="\${STLIB_LD} \$@ \$(PKG_OBJECTS)"
MAKE_SHARED_LIB="\${SHLIB_LD} -o \$@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}"
MAKE_SHARED_LIB="\${SHLIB_LD} \${LDFLAGS} \${LDFLAGS_DEFAULT} -o \$@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}"
MAKE_STUB_LIB="\${STLIB_LD} \$@ \$(PKG_STUB_OBJECTS)"
fi
@@ -8405,14 +8346,14 @@ $as_echo_n "checking for tclsh... " >&6; }
if test -f "${TCL_BIN_DIR}/Makefile" ; then
# tclConfig.sh is in Tcl build directory
if test "${TEA_PLATFORM}" = "windows"; then
if test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}s${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}s${EXEEXT}"
elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}t${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}t${EXEEXT}"
elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}st${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}st${EXEEXT}"
if test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}"
elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}s${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}s${EXEEXT}"
elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}t${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}t${EXEEXT}"
elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}st${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}st${EXEEXT}"
fi
else
TCLSH_PROG="${TCL_BIN_DIR}/tclsh"
@@ -8420,9 +8361,9 @@ $as_echo_n "checking for tclsh... " >&6; }
else
# tclConfig.sh is in install location
if test "${TEA_PLATFORM}" = "windows"; then
TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}"
else
TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}${TCL_DBGX}"
TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}"
fi
list="`ls -d ${TCL_BIN_DIR}/../bin 2>/dev/null` \
`ls -d ${TCL_BIN_DIR}/.. 2>/dev/null` \
@@ -8453,11 +8394,11 @@ $as_echo "${TCLSH_PROG}" >&6; }
# pkglibdir must be a fully qualified path and (not ${exec_prefix}/lib)
eval pkglibdir="${libdir}/itcl${PACKAGE_VERSION}"
if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
eval itcl_LIB_FLAG="-litcl${PACKAGE_VERSION}${DBGX}"
eval itcl_STUB_LIB_FLAG="-litclstub${PACKAGE_VERSION}${DBGX}"
eval itcl_LIB_FLAG="-litcl${PACKAGE_VERSION}"
eval itcl_STUB_LIB_FLAG="-litclstub${PACKAGE_VERSION}"
else
eval itcl_LIB_FLAG="-litcl`echo ${PACKAGE_VERSION} | tr -d .`${DBGX}"
eval itcl_STUB_LIB_FLAG="-litclstub`echo ${PACKAGE_VERSION} | tr -d .`${DBGX}"
eval itcl_LIB_FLAG="-litcl`echo ${PACKAGE_VERSION} | tr -d .`"
eval itcl_STUB_LIB_FLAG="-litclstub`echo ${PACKAGE_VERSION} | tr -d .`"
fi
itcl_BUILD_LIB_SPEC="-L`$CYGPATH $(pwd)` ${itcl_LIB_FLAG}"
itcl_LIB_SPEC="-L`$CYGPATH ${pkglibdir}` ${itcl_LIB_FLAG}"
@@ -9038,7 +8979,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by itcl $as_me 4.2.0, which was
This file was extended by itcl $as_me 4.2.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -9091,7 +9032,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
itcl config.status 4.2.0
itcl config.status 4.2.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

View File

@@ -19,7 +19,7 @@ dnl to configure the system for the local environment.
# so that we create the export library with the dll.
#-----------------------------------------------------------------------
AC_INIT([itcl], [4.2.0])
AC_INIT([itcl],[4.2.1])
#--------------------------------------------------------------------
# Call TEA_INIT as the first TEA_ macro to set up initial vars.
@@ -272,4 +272,5 @@ AC_SUBST(itcl_INCLUDE_SPEC)
# which require substituting the AC variables in. Include these here.
#--------------------------------------------------------------------
AC_OUTPUT([Makefile pkgIndex.tcl itclConfig.sh])
AC_CONFIG_FILES([Makefile pkgIndex.tcl itclConfig.sh])
AC_OUTPUT

View File

@@ -53,7 +53,7 @@ alternative that does not suffer from them.
of memory of at least \fIsize\fR bytes. All \fIsize\fR bytes are
initialized to zero.
.PP
A module calls \fBItcl_PreserveData\fR on a pointer \fIptr\fR
A module calls \fBItcl_PreserveData\fR on a pointer \fIptr\fR
allocated by \fBItcl_Alloc\fR to prevent deallocation of that memory while
the module remains interested in it.
.PP

View File

@@ -385,21 +385,21 @@ this list.
.
With no arguments, this command returns a list of all object-specific
variables and common data members. If \fIvarName\fR is specified, it
returns information for a specific data member.
Flags can be specified with \fIvarName\fR in an arbitrary order.
returns information for a specific data member.
Flags can be specified with \fIvarName\fR in an arbitrary order.
The result is a list of the specific information in exactly the
same order as the flags are specified.
If no flags are given, this command returns a list
If no flags are given, this command returns a list
as if the followings flags have been specified:
.IP
\fB-protection\fR \fB-type\fR \fB-name\fR \fB-init\fR \fB-value\fR ?\fB-config\fR?
The \fB-config\fR result is only present if \fIvarName\fR is a public
variable. It contains the code that is executed at initialization
variable. It contains the code that is executed at initialization
of \fIvarName\fR. The \fB-scope\fR flag gives the namespace context
of \fIvarName\fR. Herewith the variable can be accessed from outside
the object like any other variable. It is similar to the result of
of \fIvarName\fR. Herewith the variable can be accessed from outside
the object like any other variable. It is similar to the result of
the \fBitcl::scope\fR command.
.RE

View File

@@ -0,0 +1,16 @@
itcl2TclOO.c: framePtr->clientData = NULL;
itcl2TclOO.c: framePtr->objc = objc;
itcl2TclOO.c: framePtr->objv = objv;
itcl2TclOO.c: framePtr->procPtr = procPtr;
itcl2TclOO.c: if (framePtr == NULL || !(framePtr->isProcCallFrame & FRAME_IS_METHOD)) {
itcl2TclOO.c: contextPtr = framePtr->clientData;
itcl2TclOO.c: if (framePtr == NULL || !(framePtr->isProcCallFrame & FRAME_IS_METHOD)) {
itclMigrate2TclCore.c: framePtr->isProcCallFrame |= FRAME_HAS_RESOLVER;
itclMigrate2TclCore.c: framePtr->resolvePtr = resolvePtr;
itclMigrate2TclCore.c: framePtr = framePtr->callerVarPtr;
itclMigrate2TclCore.c: framePtr = framePtr->callerVarPtr;
itclMigrate2TclCore.c: return (Tcl_Namespace *)framePtr->nsPtr;
itclMigrate2TclCore.c: return framePtr->clientData;
itclMigrate2TclCore.c: ((Interp *)interp)->framePtr->nsPtr = (Namespace *)nsPtr;
itclMigrate2TclCore.c: return ((Interp *)interp)->framePtr->objc;
itclMigrate2TclCore.c: return ((Interp *)interp)->framePtr->objv;

View File

@@ -85,7 +85,7 @@ extern "C" {
#define ITCL_RELEASE_SERIAL 0
#define ITCL_VERSION "4.2"
#define ITCL_PATCH_LEVEL "4.2.0"
#define ITCL_PATCH_LEVEL "4.2.1"
/*

View File

@@ -52,11 +52,12 @@ CallFinalizePMCall(
static int
FreeCommand(
void *data[],
Tcl_Interp *interp,
Tcl_Interp *dummy,
int result)
{
Command *cmdPtr = (Command *)data[0];
Proc *procPtr = (Proc *)data[1];
(void)dummy;
ckfree(cmdPtr);
procPtr->cmdPtr = NULL;
@@ -168,10 +169,12 @@ Itcl_InvokeProcedureMethod(
static int
FreeProcedureMethod(
void *data[],
Tcl_Interp *interp,
Tcl_Interp *dummy,
int result)
{
ProcedureMethod *pmPtr = (ProcedureMethod *)data[0];
(void)dummy;
ckfree(pmPtr);
return result;
}
@@ -237,8 +240,15 @@ Itcl_PublicObjectCmd(
Tcl_Object oPtr = (Tcl_Object)clientData;
int result;
result = TclOOInvokeObject(interp, oPtr, clsPtr, PUBLIC_METHOD,
if (oPtr) {
result = TclOOInvokeObject(interp, oPtr, clsPtr, PUBLIC_METHOD,
objc, objv);
} else {
Tcl_AppendStringsToObj(Tcl_GetObjResult(interp),
"cannot access object-specific info without an object context",
NULL);
return TCL_ERROR;
}
return result;
}
@@ -352,7 +362,7 @@ Itcl_TclOOObjectName(
int
Itcl_SelfCmd(
void *clientData,
void *dummy,
Tcl_Interp *interp,
int objc,
Tcl_Obj *const *objv)
@@ -360,6 +370,7 @@ Itcl_SelfCmd(
Interp *iPtr = (Interp *) interp;
CallFrame *framePtr = iPtr->varFramePtr;
CallContext *contextPtr;
(void)dummy;
if (!Itcl_IsMethodCallFrame(interp)) {
Tcl_AppendResult(interp, TclGetString(objv[0]),

View File

@@ -466,15 +466,16 @@ Itcl_SafeInit (
static int
ItclSetHullWindowName(
void *clientData, /* infoPtr */
Tcl_Interp *interp, /* current interpreter */
Tcl_Interp *dummy, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
{
ItclObjectInfo *infoPtr;
(void)dummy;
infoPtr = (ItclObjectInfo *)clientData;
if (infoPtr->currIoPtr != NULL) {
infoPtr->currIoPtr->hullWindowNamePtr = objv[1];
if ((infoPtr->currIoPtr != NULL) && (objc > 1)) {
infoPtr->currIoPtr->hullWindowNamePtr = objv[1];
Tcl_IncrRefCount(infoPtr->currIoPtr->hullWindowNamePtr);
}
return TCL_OK;

View File

@@ -364,7 +364,7 @@ Itcl_BiInit(
return TCL_ERROR;
}
/*
* Install into the master [info] ensemble.
* Install into the [info] ensemble.
*/
infoCmd = Tcl_FindCommand(interp, "info", NULL, TCL_GLOBAL_ONLY);
@@ -490,7 +490,7 @@ Itcl_InstallBiMethods(
/* ARGSUSED */
int
Itcl_BiIsaCmd(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -500,6 +500,7 @@ Itcl_BiIsaCmd(
ItclClass *contextIclsPtr;
ItclObject *contextIoPtr;
(void)dummy;
/*
* Make sure that this command is being invoked in the proper
@@ -569,7 +570,7 @@ Itcl_BiIsaCmd(
/* ARGSUSED */
int
Itcl_BiConfigureCmd(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -597,6 +598,7 @@ Itcl_BiConfigureCmd(
int i;
int unparsedObjc;
int result;
(void)dummy;
ItclShowArgs(1, "Itcl_BiConfigureCmd", objc, objv);
vlookup = NULL;
@@ -843,7 +845,7 @@ configureDone:
/* ARGSUSED */
int
Itcl_BiCgetCmd(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -856,6 +858,7 @@ Itcl_BiCgetCmd(
const char *name;
const char *val;
int result;
(void)dummy;
ItclShowArgs(1,"Itcl_BiCgetCmd", objc, objv);
/*
@@ -1100,6 +1103,7 @@ NRBiChainCmd(
int cObjc;
int idx;
Tcl_Obj *objPtr;
(void)dummy;
ItclShowArgs(1, "Itcl_BiChainCmd", objc, objv);
@@ -1923,7 +1927,7 @@ static Tcl_Obj *makeAsOptionInfo(
/* ARGSUSED */
static int
ItclExtendedConfigure(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -1966,7 +1970,8 @@ ItclExtendedConfigure(
int j;
int isNew;
int result;
int isOneOption;
int isOneOption;
(void)dummy;
ItclShowArgs(1, "ItclExtendedConfigure", objc, objv);
ioptPtr = NULL;
@@ -2590,7 +2595,7 @@ ItclExtendedConfigure(
/* ARGSUSED */
static int
ItclExtendedCget(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -2614,6 +2619,7 @@ ItclExtendedCget(
const char *val;
int i;
int result;
(void)dummy;
ItclShowArgs(1,"ItclExtendedCget", objc, objv);
/*
@@ -2828,7 +2834,7 @@ ItclExtendedCget(
/* ARGSUSED */
static int
ItclExtendedSetGet(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -2844,6 +2850,7 @@ ItclExtendedSetGet(
const char *val;
int result;
int setValue;
(void)dummy;
ItclShowArgs(1, "ItclExtendedSetGet", objc, objv);
imvPtr = NULL;
@@ -2946,7 +2953,7 @@ ItclExtendedSetGet(
/* ARGSUSED */
int
Itcl_BiInstallComponentCmd(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -2962,7 +2969,7 @@ Itcl_BiInstallComponentCmd(
const char *token;
int numOpts;
int result;
(void)dummy;
ItclShowArgs(1, "Itcl_BiInstallComponentCmd", objc, objv);
/*
@@ -3081,7 +3088,7 @@ Itcl_BiInstallComponentCmd(
/* ARGSUSED */
static int
Itcl_BiDestroyCmd(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3090,6 +3097,7 @@ Itcl_BiDestroyCmd(
ItclClass *contextIclsPtr;
ItclObject *contextIoPtr;
int result;
(void)dummy;
/*
* Make sure that this command is being invoked in the proper
@@ -3158,7 +3166,7 @@ Itcl_BiDestroyCmd(
/* ARGSUSED */
int
Itcl_BiCallInstanceCmd(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3171,6 +3179,7 @@ Itcl_BiCallInstanceCmd(
ItclObject *ioPtr;
const char *token;
int result;
(void)dummy;
/*
* Make sure that this command is being invoked in the proper
@@ -3225,7 +3234,7 @@ Itcl_BiCallInstanceCmd(
/* ARGSUSED */
int
Itcl_BiGetInstanceVarCmd(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3238,6 +3247,7 @@ Itcl_BiGetInstanceVarCmd(
ItclObject *ioPtr;
const char *token;
int result;
(void)dummy;
/*
* Make sure that this command is being invoked in the proper
@@ -3291,7 +3301,7 @@ Itcl_BiGetInstanceVarCmd(
/* ARGSUSED */
int
Itcl_BiMyTypeMethodCmd(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3301,6 +3311,7 @@ Itcl_BiMyTypeMethodCmd(
ItclClass *contextIclsPtr;
ItclObject *contextIoPtr;
int i;
(void)dummy;
/*
* Make sure that this command is being invoked in the proper
@@ -3341,7 +3352,7 @@ Itcl_BiMyTypeMethodCmd(
/* ARGSUSED */
int
Itcl_BiMyMethodCmd(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3350,6 +3361,7 @@ Itcl_BiMyMethodCmd(
int i;
ItclClass *contextIclsPtr;
ItclObject *contextIoPtr;
(void)dummy;
/*
* Make sure that this command is being invoked in the proper
@@ -3390,7 +3402,7 @@ Itcl_BiMyMethodCmd(
/* ARGSUSED */
int
Itcl_BiMyProcCmd(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3400,6 +3412,7 @@ Itcl_BiMyProcCmd(
ItclClass *contextIclsPtr;
ItclObject *contextIoPtr;
int i;
(void)dummy;
/*
* Make sure that this command is being invoked in the proper
@@ -3441,7 +3454,7 @@ Itcl_BiMyProcCmd(
/* ARGSUSED */
int
Itcl_BiMyTypeVarCmd(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3451,6 +3464,7 @@ Itcl_BiMyTypeVarCmd(
ItclClass *contextIclsPtr;
ItclObject *contextIoPtr;
int i;
(void)dummy;
/*
* Make sure that this command is being invoked in the proper
@@ -3493,7 +3507,7 @@ Itcl_BiMyTypeVarCmd(
/* ARGSUSED */
int
Itcl_BiMyVarCmd(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3501,6 +3515,7 @@ Itcl_BiMyVarCmd(
Tcl_Obj *resultPtr;
ItclClass *contextIclsPtr;
ItclObject *contextIoPtr;
(void)dummy;
/*
* Make sure that this command is being invoked in the proper
@@ -3511,7 +3526,7 @@ Itcl_BiMyVarCmd(
if (Itcl_GetContext(interp, &contextIclsPtr, &contextIoPtr) != TCL_OK) {
return TCL_ERROR;
}
if (contextIoPtr != NULL) {
if ((contextIoPtr != NULL) && (objc > 1)) {
resultPtr = Tcl_NewStringObj(Tcl_GetString(contextIoPtr->varNsNamePtr),
-1);
Tcl_AppendToObj(resultPtr, "::", -1);
@@ -3537,7 +3552,7 @@ Itcl_BiMyVarCmd(
/* ARGSUSED */
int
Itcl_BiItclHullCmd(
void *clientData, /* class definition */
void *dummy, /* class definition */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3545,6 +3560,9 @@ Itcl_BiItclHullCmd(
ItclClass *contextIclsPtr;
ItclObject *contextIoPtr;
const char *val;
(void)dummy;
(void)objc;
(void)objv;
/*
* Make sure that this command is being invoked in the proper

View File

@@ -57,11 +57,13 @@ ItclReleaseClass(
{
ItclClass *iclsPtr = (ItclClass *)clientData;
assert(iclsPtr->refCount != 0);
if (iclsPtr->refCount-- <= 1) {
ItclFreeClass((char *) clientData);
}
}
/*
* ------------------------------------------------------------------------
* Itcl_DeleteMemberFunc()
@@ -133,7 +135,6 @@ ItclDeleteClassMetadata(
} else {
ItclDestroyClass2(iclsPtr);
}
ItclReleaseClass(iclsPtr);
}
static int
@@ -146,6 +147,7 @@ CallNewObjectInstance(
const char *path = (const char *)data[1];
Tcl_Object *oPtr = (Tcl_Object *)data[2];
Tcl_Obj *nameObjPtr = (Tcl_Obj *)data[3];
(void)result;
*oPtr = NULL;
if (infoPtr->clazzClassPtr) {
@@ -566,6 +568,8 @@ ItclDeleteClassVariablesNamespace(
Tcl_Interp *interp,
ItclClass *iclsPtr)
{
(void)interp;
(void)iclsPtr;
/* TODO: why is this being skipped? */
return;
}
@@ -1635,7 +1639,7 @@ ItclResolveVarEntry(
Tcl_Obj *vnObjPtr;
int newEntry, processAncestors;
size_t varLen;
/* (de)qualify to simple name */
varName = simpleName = lookupName;
while(*varName) {
@@ -1644,7 +1648,7 @@ ItclResolveVarEntry(
};
}
vnObjPtr = Tcl_NewStringObj(simpleName, -1);
processAncestors = simpleName != lookupName;
Tcl_DStringInit(&buffer);
@@ -1707,7 +1711,7 @@ ItclResolveVarEntry(
}
/* check leastQualName correction needed */
if (!vlookup->leastQualName) {
vlookup->leastQualName =
vlookup->leastQualName = (char *)
Tcl_GetHashKey(&iclsPtr->resolveVars, hPtr);
}
/* reset vlookup for full-qualified names - new lookup */
@@ -1725,7 +1729,7 @@ ItclResolveVarEntry(
setResVar:
vlookup->ivPtr = ivPtr;
vlookup->leastQualName =
vlookup->leastQualName = (char *)
Tcl_GetHashKey(&iclsPtr->resolveVars, hPtr);
/*
@@ -1859,7 +1863,7 @@ Itcl_BuildVirtualTables(
if (hPtr == NULL) {
break;
}
clookupPtr = Tcl_GetHashValue(hPtr);
clookupPtr = (ItclCmdLookup *)Tcl_GetHashValue(hPtr);
ckfree((char *)clookupPtr);
Tcl_DeleteHashEntry(hPtr);
}

View File

@@ -169,7 +169,7 @@ ItclShowArgs(1, "EVAL2", objc+1, newObjv);
/* ARGSUSED */
int
Itcl_FindClassesCmd(
ClientData clientData, /* class/object info */
ClientData dummy, /* class/object info */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -189,6 +189,7 @@ Itcl_FindClassesCmd(
int newEntry;
int handledActiveNs;
int forceFullNames = 0;
(void)dummy;
ItclShowArgs(2, "Itcl_FindClassesCmd", objc, objv);
if (objc > 2) {
@@ -302,7 +303,7 @@ Itcl_FindClassesCmd(
*/
int
Itcl_FindObjectsCmd(
ClientData clientData, /* class/object info */
ClientData dummy, /* class/object info */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -332,6 +333,7 @@ Itcl_FindObjectsCmd(
Tcl_CmdInfo cmdInfo;
Tcl_Namespace *nsPtr;
Tcl_Obj *objPtr;
(void)dummy;
/*
* Parse arguments:
@@ -501,7 +503,7 @@ Itcl_FindObjectsCmd(
/* ARGSUSED */
static int
NRDelClassCmd(
ClientData clientData, /* unused */
ClientData dummy, /* unused */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -509,6 +511,7 @@ NRDelClassCmd(
int i;
char *name;
ItclClass *iclsPtr;
(void)dummy;
ItclShowArgs(1, "Itcl_DelClassCmd", objc, objv);
/*
@@ -586,7 +589,7 @@ CallDeleteObject(
static int
NRDelObjectCmd(
ClientData clientData, /* object management info */
ClientData dummy, /* object management info */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -596,6 +599,7 @@ NRDelObjectCmd(
void *callbackPtr;
int i;
int result;
(void)dummy;
ItclShowArgs(1, "Itcl_DelObjectCmd", objc, objv);
/*
@@ -688,6 +692,7 @@ Itcl_ScopeCmd(
char *token;
int doAppend;
int result;
(void)dummy;
ItclShowArgs(1, "Itcl_ScopeCmd", objc, objv);
if (objc != 2) {
@@ -907,6 +912,7 @@ Itcl_CodeCmd(
Tcl_Obj *objPtr;
const char *token;
int pos;
(void)dummy;
ItclShowArgs(1, "Itcl_CodeCmd", objc, objv);
/*
@@ -997,7 +1003,7 @@ Itcl_CodeCmd(
*/
int
Itcl_IsObjectCmd(
ClientData clientData, /* class/object info */
ClientData dummy, /* class/object info */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -1012,6 +1018,7 @@ Itcl_IsObjectCmd(
Tcl_Command cmd;
Tcl_Namespace *contextNs = NULL;
ItclClass *iclsPtr = NULL;
(void)dummy;
/*
* Handle the arguments.
@@ -1115,7 +1122,7 @@ Itcl_IsObjectCmd(
*/
int
Itcl_IsClassCmd(
ClientData clientData, /* class/object info */
ClientData dummy, /* class/object info */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -1125,6 +1132,7 @@ Itcl_IsClassCmd(
char *name;
ItclClass *iclsPtr = NULL;
Tcl_Namespace *contextNs = NULL;
(void)dummy;
/*
* Need itcl::is class classname
@@ -1183,6 +1191,7 @@ Itcl_FilterAddCmd(
{
Tcl_Obj **newObjv;
int result;
(void)dummy;
ItclShowArgs(1, "Itcl_FilterCmd", objc, objv);
/* Tcl_Namespace *contextNs = Tcl_GetCurrentNamespace(interp); */
@@ -1223,6 +1232,8 @@ Itcl_FilterDeleteCmd(
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
{
(void)dummy;
ItclShowArgs(1, "Itcl_FilterDeleteCmd", objc, objv);
/* Tcl_Namespace *contextNs = Tcl_GetCurrentNamespace(interp); */
@@ -1252,6 +1263,7 @@ Itcl_ForwardAddCmd(
Tcl_Method mPtr;
ItclObjectInfo *infoPtr;
ItclClass *iclsPtr;
(void)dummy;
ItclShowArgs(1, "Itcl_ForwardAddCmd", objc, objv);
if (objc < 3) {
@@ -1296,6 +1308,8 @@ Itcl_ForwardDeleteCmd(
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
{
(void)dummy;
ItclShowArgs(1, "Itcl_ForwardDeleteCmd", objc, objv);
/* Tcl_Namespace *contextNs = Tcl_GetCurrentNamespace(interp); */
@@ -1322,6 +1336,7 @@ Itcl_MixinAddCmd(
{
Tcl_Obj **newObjv;
int result;
(void)dummy;
ItclShowArgs(1, "Itcl_MixinAddCmd", objc, objv);
if (objc < 3) {
@@ -1360,6 +1375,8 @@ Itcl_MixinDeleteCmd(
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
{
(void)dummy;
ItclShowArgs(1, "Itcl_MixinDeleteCmd", objc, objv);
/* Tcl_Namespace *contextNs = Tcl_GetCurrentNamespace(interp); */
@@ -1716,7 +1733,7 @@ Itcl_AddDelegatedFunctionCmd(
/* ARGSUSED */
int
Itcl_AddComponentCmd(
ClientData clientData, /* infoPtr */
ClientData dummy, /* infoPtr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -1736,6 +1753,7 @@ Itcl_AddComponentCmd(
const char *varName;
int isNew;
int result;
(void)dummy;
result = TCL_OK;
contextIoPtr = NULL;
@@ -1880,7 +1898,7 @@ Itcl_AddComponentCmd(
/* ARGSUSED */
int
Itcl_SetComponentCmd(
ClientData clientData, /* infoPtr */
ClientData dummy, /* infoPtr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -1895,6 +1913,7 @@ Itcl_SetComponentCmd(
const char *name;
const char *val;
int result;
(void)dummy;
result = TCL_OK;
contextIoPtr = NULL;

View File

@@ -82,8 +82,8 @@ typedef struct Ensemble {
* Data shared by ensemble access commands and ensemble parser:
*/
typedef struct EnsembleParser {
Tcl_Interp* master; /* master interp containing ensembles */
Tcl_Interp* parser; /* slave interp for parsing */
Tcl_Interp* interp; /* interpreter containing ensembles */
Tcl_Interp* parser; /* child interp for parsing */
Ensemble* ensData; /* add parts to this ensemble */
} EnsembleParser;
@@ -1681,22 +1681,22 @@ Itcl_EnsembleCmd(
ensName = Tcl_GetString(objv[1]);
if (ensData) {
if (FindEnsemblePart(ensInfo->master, ensData, ensName, &ensPart) != TCL_OK) {
if (FindEnsemblePart(ensInfo->interp, ensData, ensName, &ensPart) != TCL_OK) {
ensPart = NULL;
}
if (ensPart == NULL) {
if (CreateEnsemble(ensInfo->master, ensData, ensName) != TCL_OK) {
Tcl_TransferResult(ensInfo->master, TCL_ERROR, interp);
if (CreateEnsemble(ensInfo->interp, ensData, ensName) != TCL_OK) {
Tcl_TransferResult(ensInfo->interp, TCL_ERROR, interp);
return TCL_ERROR;
}
if (FindEnsemblePart(ensInfo->master, ensData, ensName, &ensPart)
if (FindEnsemblePart(ensInfo->interp, ensData, ensName, &ensPart)
!= TCL_OK) {
Tcl_Panic("Itcl_EnsembleCmd: can't create ensemble");
}
}
cmd = ensPart->cmdPtr;
infoPtr = (ItclObjectInfo *)Tcl_GetAssocData(ensInfo->master, ITCL_INTERP_DATA, NULL);
infoPtr = (ItclObjectInfo *)Tcl_GetAssocData(ensInfo->interp, ITCL_INTERP_DATA, NULL);
hPtr = Tcl_FindHashEntry(&infoPtr->ensembleInfo->ensembles,
(char *)ensPart->cmdPtr);
if (hPtr == NULL) {
@@ -1764,7 +1764,7 @@ Itcl_EnsembleCmd(
/*
* Copy the result from the parser interpreter to the
* master interpreter. If an error was encountered,
* parent interpreter. If an error was encountered,
* copy the error info first, and then set the result.
* Otherwise, the offending command is reported twice.
*/
@@ -1795,7 +1795,7 @@ Itcl_EnsembleCmd(
*
* GetEnsembleParser --
*
* Returns the slave interpreter that acts as a parser for
* Returns the child interpreter that acts as a parser for
* the body of an "ensemble" definition. The first time that
* this is called for an interpreter, the parser is created
* and registered as associated data. After that, it is
@@ -1828,11 +1828,11 @@ GetEnsembleParser(
}
/*
* Create a slave interpreter that can be used to parse
* Create a child interpreter that can be used to parse
* the body of an ensemble definition.
*/
ensInfo = (EnsembleParser*)ckalloc(sizeof(EnsembleParser));
ensInfo->master = interp;
ensInfo->interp = interp;
ensInfo->parser = Tcl_CreateInterp();
ensInfo->ensData = NULL;
@@ -1867,7 +1867,7 @@ GetEnsembleParser(
* DeleteEnsParser --
*
* Called when an interpreter is destroyed to clean up the
* ensemble parser within it. Destroys the slave interpreter
* ensemble parser within it. Destroys the child interpreter
* and frees up the data associated with it.
*
* Results:
@@ -1882,9 +1882,11 @@ GetEnsembleParser(
static void
DeleteEnsParser(
ClientData clientData, /* client data for ensemble-related commands */
Tcl_Interp *interp) /* interpreter containing the data */
Tcl_Interp *dummy) /* interpreter containing the data */
{
EnsembleParser* ensInfo = (EnsembleParser*)clientData;
(void)dummy;
Tcl_DeleteInterp(ensInfo->parser);
ckfree((char*)ensInfo);
}
@@ -1966,9 +1968,9 @@ Itcl_EnsPartCmd(
result = TCL_ERROR;
goto errorOut;
}
if (Tcl_CreateProc(ensInfo->master, cmdInfo.namespacePtr, partName, objv[2], objv[3],
if (Tcl_CreateProc(ensInfo->interp, cmdInfo.namespacePtr, partName, objv[2], objv[3],
&procPtr) != TCL_OK) {
Tcl_TransferResult(ensInfo->master, TCL_ERROR, interp);
Tcl_TransferResult(ensInfo->interp, TCL_ERROR, interp);
result = TCL_ERROR;
goto errorOut;
}
@@ -1981,13 +1983,13 @@ Itcl_EnsPartCmd(
* if we try to compile the Tcl code for the part. If
* anything goes wrong, clean up before bailing out.
*/
result = AddEnsemblePart(ensInfo->master, ensData, partName, usage,
result = AddEnsemblePart(ensInfo->interp, ensData, partName, usage,
(Tcl_ObjCmdProc *)Tcl_GetObjInterpProc(), procPtr, _Tcl_ProcDeleteProc,
ITCL_ENSEMBLE_ENSEMBLE, &ensPart);
if (result == TCL_ERROR) {
_Tcl_ProcDeleteProc(procPtr);
}
Tcl_TransferResult(ensInfo->master, result, interp);
Tcl_TransferResult(ensInfo->interp, result, interp);
errorOut:
Tcl_DecrRefCount(usagePtr);
@@ -2031,6 +2033,7 @@ Itcl_EnsembleErrorCmd(
char *cmdName;
Tcl_Obj *objPtr;
(void)objc;
cmdName = Tcl_GetString(objv[0]);
@@ -2130,6 +2133,7 @@ EnsembleUnknownCmd(
ItclObjectInfo *infoPtr;
EnsemblePart *ensPart;
Ensemble *ensData;
(void)dummy;
ItclShowArgs(2, "EnsembleUnknownCmd", objc, objv);
cmd = Tcl_GetCommandFromObj(interp, objv[1]);

View File

@@ -82,7 +82,7 @@ ItclCreateArgList(
Tcl_Obj **usagePtr, /* store usage message for arguments here */
ItclArgList **arglistPtrPtr,
/* returns pointer to parsed argument list */
ItclMemberFunc *mPtr,
ItclMemberFunc *dummy,
const char *commandName)
{
int argc;
@@ -94,6 +94,7 @@ ItclCreateArgList(
int i;
int hadArgsArgument;
int result;
(void)dummy;
*arglistPtrPtr = NULL;
lastArglistPtr = NULL;
@@ -296,13 +297,14 @@ Itcl_EvalArgs(
*/
Tcl_Obj*
Itcl_CreateArgs(
Tcl_Interp *interp, /* current interpreter */
Tcl_Interp *dummy, /* current interpreter */
const char *string, /* first command word */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
{
int i;
Tcl_Obj *listPtr;
(void)dummy;
ItclShowArgs(1, "Itcl_CreateArgs", objc, objv);
listPtr = Tcl_NewListObj(objc+2, NULL);
@@ -323,7 +325,7 @@ Itcl_CreateArgs(
int
ItclEnsembleSubCmd(
ClientData clientData,
ClientData dummy,
Tcl_Interp *interp,
const char *ensembleName,
int objc,
@@ -333,6 +335,10 @@ ItclEnsembleSubCmd(
int result;
Tcl_Obj **newObjv;
int isRootEnsemble;
(void)dummy;
(void)ensembleName;
(void)functionName;
ItclShowArgs(2, functionName, objc, objv);
newObjv = (Tcl_Obj **)ckalloc(sizeof(Tcl_Obj *)*(objc));

View File

@@ -313,7 +313,7 @@ static void ItclGetInfoUsage(Tcl_Interp *interp, Tcl_Obj*objPtr,
static int
InfoGutsFinish(
ClientData data[],
Tcl_Interp *interp,
TCL_UNUSED(Tcl_Interp *),
int result)
{
Tcl_CallFrame *framePtr = (Tcl_CallFrame *) data[0];
@@ -556,13 +556,13 @@ void
ItclGetInfoUsage(
Tcl_Interp *interp,
Tcl_Obj *objPtr, /* returns: summary of usage info */
ItclObjectInfo *infoPtr,
TCL_UNUSED(ItclObjectInfo *),
ItclClass *iclsPtr)
{
const char *spaces = " ";
int i;
ItclObject *ioPtr;
if (iclsPtr == NULL) {
if (TCL_ERROR == Itcl_GetContext(interp, &iclsPtr, &ioPtr)) {
return;
@@ -600,7 +600,7 @@ static void
ItclGetInfoDelegatedUsage(
Tcl_Interp *interp,
Tcl_Obj *objPtr, /* returns: summary of usage info */
ItclObjectInfo *infoPtr)
TCL_UNUSED(ItclObjectInfo *))
{
ItclClass *iclsPtr;
const char *name;
@@ -610,6 +610,7 @@ ItclGetInfoDelegatedUsage(
int i;
ItclObject *ioPtr;
if (TCL_ERROR == Itcl_GetContext(interp, &iclsPtr, &ioPtr)) {
return;
}
@@ -660,7 +661,7 @@ ItclGetInfoDelegatedUsage(
/* ARGSUSED */
int
Itcl_BiInfoClassCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -740,7 +741,7 @@ Itcl_BiInfoClassCmd(
/* ARGSUSED */
static int
Itcl_BiInfoClassOptionsCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -851,7 +852,7 @@ Itcl_BiInfoClassOptionsCmd(
/* ARGSUSED */
static int
Itcl_BiInfoContextCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -890,7 +891,7 @@ Itcl_BiInfoContextCmd(
/* ARGSUSED */
int
Itcl_BiInfoInheritCmd(
ClientData clientdata, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -950,7 +951,7 @@ Itcl_BiInfoInheritCmd(
/* ARGSUSED */
int
Itcl_BiInfoHeritageCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -1020,7 +1021,7 @@ Itcl_BiInfoHeritageCmd(
/* ARGSUSED */
int
Itcl_BiInfoFunctionCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -1260,7 +1261,7 @@ Itcl_BiInfoFunctionCmd(
/* ARGSUSED */
int
Itcl_BiInfoVariableCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -1829,7 +1830,7 @@ Itcl_BiInfoUnknownCmd(
/* ARGSUSED */
int
Itcl_BiInfoBodyCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -1932,7 +1933,7 @@ Itcl_BiInfoBodyCmd(
/* ARGSUSED */
int
Itcl_BiInfoArgsCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -2041,7 +2042,7 @@ Itcl_BiInfoArgsCmd(
/* ARGSUSED */
int
Itcl_BiInfoOptionCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -2344,7 +2345,7 @@ Itcl_BiInfoOptionCmd(
/* ARGSUSED */
int
Itcl_BiInfoComponentCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -2563,7 +2564,7 @@ Itcl_BiInfoComponentCmd(
/* ARGSUSED */
static int
Itcl_BiInfoWidgetCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -2655,7 +2656,7 @@ Itcl_BiInfoWidgetCmd(
/* ARGSUSED */
static int
Itcl_BiInfoExtendedClassCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -2715,6 +2716,10 @@ Itcl_BiInfoExtendedClassCmd(
}
contextIclsPtr = Tcl_GetHashValue(hPtr);
#elif defined __cplusplus
(void)interp;
(void)objc;
(void)objv;
#endif
return TCL_OK;
@@ -2738,7 +2743,7 @@ Itcl_BiInfoExtendedClassCmd(
/* ARGSUSED */
static int
Itcl_BiInfoDelegatedCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -2798,6 +2803,10 @@ Itcl_BiInfoDelegatedCmd(
}
contextIclsPtr = Tcl_GetHashValue(hPtr);
#elif defined __cplusplus
(void)interp;
(void)objc;
(void)objv;
#endif
return TCL_OK;
@@ -2819,7 +2828,7 @@ Itcl_BiInfoDelegatedCmd(
/* ARGSUSED */
static int
Itcl_BiInfoTypeCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -2907,7 +2916,7 @@ Itcl_BiInfoTypeCmd(
/* ARGSUSED */
static int
Itcl_BiInfoHullTypeCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -2974,7 +2983,7 @@ Itcl_BiInfoHullTypeCmd(
/* ARGSUSED */
static int
Itcl_BiInfoDefaultCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3069,7 +3078,7 @@ Itcl_BiInfoDefaultCmd(
/* ARGSUSED */
static int
Itcl_BiInfoMethodCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3296,7 +3305,7 @@ Itcl_BiInfoMethodCmd(
/* ARGSUSED */
static int
Itcl_BiInfoMethodsCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3394,7 +3403,7 @@ Itcl_BiInfoMethodsCmd(
/* ARGSUSED */
static int
Itcl_BiInfoOptionsCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3567,7 +3576,7 @@ Itcl_BiInfoTypesCmd(
/* ARGSUSED */
static int
Itcl_BiInfoComponentsCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3638,7 +3647,7 @@ Itcl_BiInfoComponentsCmd(
/* ARGSUSED */
static int
Itcl_BiInfoTypeMethodCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3866,7 +3875,7 @@ Itcl_BiInfoTypeMethodCmd(
/* ARGSUSED */
static int
Itcl_BiInfoTypeMethodsCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -3971,7 +3980,7 @@ Itcl_BiInfoTypeMethodsCmd(
/* ARGSUSED */
static int
Itcl_BiInfoTypeVarsCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -4028,7 +4037,7 @@ Itcl_BiInfoTypeVarsCmd(
/* ARGSUSED */
static int
Itcl_BiInfoTypeVariableCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -4278,7 +4287,7 @@ Itcl_BiInfoTypeVariableCmd(
/* ARGSUSED */
static int
Itcl_BiInfoVariablesCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -4303,7 +4312,7 @@ Itcl_BiInfoVariablesCmd(
/* ARGSUSED */
static int
Itcl_BiInfoWidgetadaptorCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -4459,7 +4468,7 @@ Itcl_BiInfoInstancesCmd(
/* ARGSUSED */
static int
Itcl_BiInfoDelegatedOptionsCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -4530,7 +4539,7 @@ Itcl_BiInfoDelegatedOptionsCmd(
/* ARGSUSED */
static int
Itcl_BiInfoDelegatedMethodsCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -4603,7 +4612,7 @@ Itcl_BiInfoDelegatedMethodsCmd(
/* ARGSUSED */
static int
Itcl_BiInfoDelegatedTypeMethodsCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -4707,7 +4716,7 @@ Itcl_BiInfoDelegatedUnknownCmd(
/* ARGSUSED */
static int
Itcl_BiInfoDelegatedOptionCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -4941,7 +4950,7 @@ Itcl_BiInfoDelegatedOptionCmd(
/* ARGSUSED */
static int
Itcl_BiInfoDelegatedMethodCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -5165,7 +5174,7 @@ Itcl_BiInfoDelegatedMethodCmd(
/* ARGSUSED */
static int
Itcl_BiInfoDelegatedTypeMethodCmd(
ClientData clientData, /* ItclObjectInfo Ptr */
TCL_UNUSED(ClientData), /* ItclObjectInfo Ptr */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */

View File

@@ -60,6 +60,19 @@
# endif
#endif
#ifndef JOIN
# define JOIN(a,b) JOIN1(a,b)
# define JOIN1(a,b) a##b
#endif
#ifndef TCL_UNUSED
# if defined(__cplusplus)
# define TCL_UNUSED(T) T
# else
# define TCL_UNUSED(T) T JOIN(dummy, __LINE__)
# endif
#endif
/*
* Since the Tcl/Tk distribution doesn't perform any asserts,
* dynamic loading can fail to find the __assert function.
@@ -653,7 +666,7 @@ MODULE_SCOPE int _itcl_debug_level;
MODULE_SCOPE void ItclShowArgs(int level, const char *str, int objc,
Tcl_Obj * const* objv);
#else
#define ItclShowArgs(a,b,c,d)
#define ItclShowArgs(a,b,c,d) do {(void)(c);(void)(d);} while(0)
#endif
MODULE_SCOPE Tcl_ObjCmdProc ItclCallCCommand;

View File

@@ -303,7 +303,7 @@ ItclGetRegisteredProcs(
static void
ItclFreeC(
ClientData clientData, /* associated data */
Tcl_Interp *interp) /* intepreter being deleted */
TCL_UNUSED(Tcl_Interp *)) /* interpreter being deleted */
{
Tcl_HashTable *tablePtr = (Tcl_HashTable*)clientData;
Tcl_HashSearch place;

View File

@@ -64,7 +64,7 @@ static void FreeMemberCode(ItclMemberCode *mcodePtr);
*/
static int
NRBodyCmd(
ClientData clientData, /* */
TCL_UNUSED(ClientData), /* */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const *objv) /* argument objects */
@@ -189,7 +189,7 @@ Itcl_BodyCmd(
/* ARGSUSED */
static int
NRConfigBodyCmd(
ClientData dummy, /* unused */
TCL_UNUSED(ClientData), /* unused */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -1319,7 +1319,7 @@ Itcl_EvalMemberCode(
static int
EquivArgLists(
Tcl_Interp *interp,
TCL_UNUSED(Tcl_Interp*),
ItclArgList *origArgs,
ItclArgList *realArgs)
{
@@ -2056,10 +2056,10 @@ Itcl_InvokeMethodIfExists(
*/
int
Itcl_ReportFuncErrors(
Tcl_Interp* interp, /* interpreter being modified */
ItclMemberFunc *imPtr, /* command member that was invoked */
ItclObject *contextObj, /* object context for this command */
int result) /* integer status code from proc body */
TCL_UNUSED(Tcl_Interp*), /* interpreter being modified */
TCL_UNUSED(ItclMemberFunc*), /* command member that was invoked */
TCL_UNUSED(ItclObject*), /* object context for this command */
int result) /* integer status code from proc body */
{
/* FIXME !!! */
/* adapt to use of ItclProcErrorProc for stubs compatibility !! */
@@ -2189,7 +2189,7 @@ Itcl_CmdAliasProc(
*/
Tcl_Var
Itcl_VarAliasProc(
Tcl_Interp *interp,
TCL_UNUSED(Tcl_Interp*),
Tcl_Namespace *nsPtr,
const char *varName,
ClientData clientData)
@@ -2266,8 +2266,8 @@ int
ItclCheckCallProc(
ClientData clientData,
Tcl_Interp *interp,
Tcl_ObjectContext contextPtr,
Tcl_CallFrame *framePtr,
TCL_UNUSED(Tcl_ObjectContext),
TCL_UNUSED(Tcl_CallFrame*),
int *isFinished)
{
int result;
@@ -2456,8 +2456,8 @@ ItclCheckCallMethod(
Itcl_PushStack(framePtr, stackPtr);
if (ioPtr != NULL) {
ioPtr->callRefCount++;
Itcl_PreserveData(ioPtr);
ioPtr->callRefCount++;
Itcl_PreserveData(ioPtr); /* ++ preserve until ItclAfterCallMethod releases it */
}
imPtr->iclsPtr->callRefCount++;
if (!imPtr->iclsPtr->infoPtr->useOldResolvers) {
@@ -2486,7 +2486,7 @@ ItclAfterCallMethod(
ClientData clientData,
Tcl_Interp *interp,
Tcl_ObjectContext contextPtr,
Tcl_Namespace *nsPtr,
TCL_UNUSED(Tcl_Namespace*),
int call_result)
{
Tcl_HashEntry *hPtr;
@@ -2571,11 +2571,14 @@ ItclAfterCallMethod(
if (hPtr == NULL) {
ckfree((char *)callContextPtr);
}
Itcl_ReleaseData(ioPtr);
} else {
ckfree((char *)callContextPtr);
}
}
if (ioPtr != NULL) {
Itcl_ReleaseData(ioPtr); /* -- paired release for preserve in ItclCheckCallMethod */
}
result = call_result;
finishReturn:
Itcl_ReleaseData(imPtr);
@@ -2585,7 +2588,7 @@ finishReturn:
void
ItclProcErrorProc(
Tcl_Interp *interp,
Tcl_Obj *procNameObj)
TCL_UNUSED(Tcl_Obj*))
{
Tcl_Obj *objPtr;
Tcl_HashEntry *hPtr;

View File

@@ -26,10 +26,12 @@ Itcl_SetCallFrameResolver(
CallFrame *framePtr = ((Interp *)interp)->framePtr;
if (framePtr != NULL) {
#ifdef ITCL_USE_MODIFIED_TCL_H
framePtr->isProcCallFrame |= FRAME_HAS_RESOLVER;
framePtr->isProcCallFrame |= FRAME_HAS_RESOLVER;
framePtr->resolvePtr = resolvePtr;
#elif defined(__cplusplus)
(void)resolvePtr;
#endif
return TCL_OK;
return TCL_OK;
}
return TCL_ERROR;
}
@@ -44,13 +46,15 @@ _Tcl_SetNamespaceResolver(
}
#ifdef ITCL_USE_MODIFIED_TCL_H
((Namespace *)nsPtr)->resolvePtr = resolvePtr;
#elif defined(__cplusplus)
(void)resolvePtr;
#endif
return TCL_OK;
}
Tcl_Var
Tcl_NewNamespaceVar(
Tcl_Interp *interp,
TCL_UNUSED(Tcl_Interp *),
Tcl_Namespace *nsPtr,
const char *varName)
{

View File

@@ -109,13 +109,16 @@ ItclDeleteObjectMetadata(
static void
ObjectRenamedTrace(
ClientData clientData, /* The object being deleted. */
Tcl_Interp *interp, /* The interpreter containing the object. */
Tcl_Interp *dummy, /* The interpreter containing the object. */
const char *oldName, /* What the object was (last) called. */
const char *newName, /* Always NULL ??. not for itk!! */
int flags) /* Why was the object deleted? */
{
ItclObject *ioPtr = (ItclObject *)clientData;
Itcl_InterpState istate;
(void)dummy;
(void)oldName;
(void)flags;
if (newName != NULL) {
/* FIXME should enter the new name in the hashtables for objects etc. */
@@ -733,6 +736,11 @@ ItclInitObjectCommands(
ItclClass *iclsPtr,
const char *name)
{
(void)interp;
(void)ioPtr;
(void)iclsPtr;
(void)name;
return TCL_OK;
}
@@ -1150,7 +1158,7 @@ ItclInitObjectOptions(
*/
int
ItclInitObjectMethodVariables(
Tcl_Interp *interp,
Tcl_Interp *dummy,
ItclObject *ioPtr,
ItclClass *iclsPtr,
const char *name)
@@ -1162,6 +1170,8 @@ ItclInitObjectMethodVariables(
Tcl_HashEntry *hPtr2;
Tcl_HashSearch place;
int isNew;
(void)dummy;
(void)name;
imvPtr = NULL;
Itcl_InitHierIter(&hier, iclsPtr);
@@ -1940,6 +1950,7 @@ ItclReportObjectUsage(
char *name;
int ignore;
int cmp;
(void)callerNsPtr;
if (contextIoPtr == NULL) {
resultPtr = Tcl_GetObjResult(interp);
@@ -2081,6 +2092,7 @@ ItclTraceThisVar(
ItclObject *contextIoPtr = (ItclObject*)cdata;
Tcl_Obj *objPtr;
const char *objName;
(void)name2;
/* because of SF bug #187 use a different trace handler for "this", "win", "type"
* *self" and "selfns"
@@ -2141,6 +2153,7 @@ ItclTraceWinVar(
const char *objName;
const char *head;
const char *tail;
(void)name2;
/*
* Handle read traces on "win"
@@ -2198,6 +2211,7 @@ ItclTraceTypeVar(
ItclObject *contextIoPtr = (ItclObject*)cdata;
Tcl_Obj *objPtr;
const char *objName;
(void)name2;
/*
* Handle read traces on "type"
@@ -2249,6 +2263,7 @@ ItclTraceSelfVar(
ItclObject *contextIoPtr = (ItclObject*)cdata;
Tcl_Obj *objPtr;
const char *objName;
(void)name2;
/*
* Handle read traces on "self"
@@ -2316,6 +2331,7 @@ ItclTraceSelfnsVar(
ItclObject *contextIoPtr = (ItclObject*)cdata;
Tcl_Obj *objPtr;
const char *objName;
(void)name2;
/*
* Handle read traces on "selfns"
@@ -2363,6 +2379,9 @@ ItclTraceOptionVar(
{
ItclObject *ioPtr;
ItclOption *ioptPtr;
(void)interp;
(void)name1;
(void)name2;
/* FIXME !!! */
/* don't know yet if ItclTraceOptionVar is really needed !! */
@@ -2419,6 +2438,7 @@ ItclTraceComponentVar(
ItclComponent *icPtr;
ItclDelegatedFunction *idmPtr;
const char *val;
(void)name2;
/* FIXME should free memory on unset or rename!! */
if (cdata != NULL) {
@@ -2516,6 +2536,7 @@ ItclTraceItclHullVar(
ItclObjectInfo *infoPtr;
ItclObject *ioPtr;
ItclVariable *ivPtr;
(void)name2;
/* FIXME !!! */
/* FIXME should free memory on unset or rename!! */
@@ -3311,8 +3332,8 @@ ExpandDelegateAs(
}
break;
} else {
/* fall through */
}
/* FALLTHRU */
default:
{
char buf[2];
@@ -3437,7 +3458,7 @@ DelegateFunction(
int
DelegatedOptionsInstall(
Tcl_Interp *interp,
Tcl_Interp *dummy,
ItclClass *iclsPtr)
{
Tcl_HashEntry *hPtr2;
@@ -3446,6 +3467,7 @@ DelegatedOptionsInstall(
ItclOption *ioptPtr;
FOREACH_HASH_DECLS;
char *optionName;
(void)dummy;
FOREACH_HASH_VALUE(idoPtr, &iclsPtr->delegatedOptions) {
optionName = Tcl_GetString(idoPtr->namePtr);

View File

@@ -652,10 +652,12 @@ static const Tcl_MethodType itclArgMethodType = {
static int
CloneProc(
Tcl_Interp *interp,
Tcl_Interp *dummy,
ClientData original,
ClientData *copyPtr)
{
(void)dummy;
Itcl_PreserveData((ItclMemberFunc *)original);
*copyPtr = original;
return TCL_OK;
@@ -668,6 +670,7 @@ CallAfterCallMethod(
int result)
{
ClientData clientData = data[0];
Tcl_ObjectContext context = (Tcl_ObjectContext)data[1];
return ItclAfterCallMethod(clientData, interp, context, NULL, result);
@@ -706,6 +709,12 @@ ArgCallProc(
int objc,
Tcl_Obj *const *objv)
{
(void)clientData;
(void)interp;
(void)context;
(void)objc;
(void)objv;
return TCL_ERROR;
}
@@ -2476,6 +2485,9 @@ Itcl_ClassMixinCmd(
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
{
(void)clientData;
(void)interp;
ItclShowArgs(0, "Itcl_ClassMixinCmd", objc, objv);
return TCL_OK;
}
@@ -2594,6 +2606,7 @@ ItclParseOption(
int result;
int i;
const char *cp;
(void)infoPtr;
ItclShowArgs(1, "ItclParseOption", objc, objv);
pLevel = Itcl_Protection(interp, 0);
@@ -3050,7 +3063,7 @@ ItclHandleClassComponent(
" Only these can have components", NULL);
return TCL_ERROR;
}
if ((objc < 2) && (objc > 6)) {
if ((objc < 2) || (objc > 6)) {
Tcl_AppendResult(interp, "wrong # args should be: ", usage, NULL);
return TCL_ERROR;
}

View File

@@ -649,6 +649,7 @@ Itcl_ParseVarResolver(
Tcl_HashEntry *hPtr;
ItclVarLookup *vlookup;
(void)flags;
/*
* See if the requested variable is a recognized "common" member.

View File

@@ -62,7 +62,7 @@ Itcl_IsStub(
*/
int
Itcl_StubCreateCmd(
ClientData clientData, /* not used */
TCL_UNUSED(ClientData), /* not used */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -112,7 +112,7 @@ Itcl_StubCreateCmd(
*/
int
Itcl_StubExistsCmd(
ClientData clientData, /* not used */
TCL_UNUSED(ClientData), /* not used */
Tcl_Interp *interp, /* current interpreter */
int objc, /* number of arguments */
Tcl_Obj *const objv[]) /* argument objects */
@@ -224,7 +224,7 @@ ItclHandleStubCmd(
/* ARGSUSED */
static void
ItclDeleteStub(
ClientData cdata) /* not used */
TCL_UNUSED(ClientData)) /* not used */
{
/* do nothing */
}

View File

@@ -126,7 +126,7 @@ Itcl_InitRewriteEnsemble(
Tcl_Interp *interp,
int numRemoved,
int numInserted,
int objc,
TCL_UNUSED(int) /* objc */,
Tcl_Obj *const *objv)
{
return TclInitRewriteEnsemble(interp, numRemoved, numInserted, objv);

View File

@@ -628,7 +628,7 @@ Itcl_ReleaseData(
/* Free cdata now */
freeProc = blk->freeProc;
blk->freeProc = NULL;
freeProc(cdata);
freeProc((char *)cdata);
}
/*
@@ -674,7 +674,7 @@ void * Itcl_Alloc(
*/
void Itcl_Free(void *ptr) {
PresMemoryPrefix *blk;
if (ptr == NULL) {
return;
}

View File

@@ -1,7 +1,7 @@
# Tcl package index file, version 1.0
#
# Do NOT try this command
#
#
# if {![package vsatisfies [package provide Tcl] 8.6-]} {return}
#
# as a way to accept working with all of Tcl 8.6, Tcl 8.X, X>6, and
@@ -17,5 +17,5 @@
if {![package vsatisfies [package provide Tcl] 8.6]} {return}
package ifneeded itcl @PACKAGE_VERSION@ [list load [file join $dir "@PKG_LIB_FILE@"] itcl]
package ifneeded Itcl @PACKAGE_VERSION@ [list load [file join $dir "@PKG_LIB_FILE@"] itcl]
package ifneeded itcl @PACKAGE_VERSION@ [list load [file join $dir "@PKG_LIB_FILE@"] Itcl]
package ifneeded Itcl @PACKAGE_VERSION@ [list load [file join $dir "@PKG_LIB_FILE@"] Itcl]

View File

@@ -3,10 +3,10 @@ Architecture (TEA) extension. For more information on TEA see:
http://www.tcl.tk/doc/tea/
This package is part of the Tcl project at SourceForge, and latest
sources should be available there:
This package is part of the Tcl project at SourceForge, but sources
and bug/patch database are hosted on fossil here:
http://tcl.sourceforge.net/
https://core.tcl-lang.org/tclconfig
This package is a freely available open source package. You can do
virtually anything you like with it, such as modifying it, redistributing

View File

@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2011-04-20.01; # UTC
scriptversion=2020-07-26.22; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -35,25 +35,21 @@ scriptversion=2011-04-20.01; # UTC
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
tab=' '
nl='
'
IFS=" "" $nl"
IFS=" $tab$nl"
# set DOITPROG to echo to test this script
# Set DOITPROG to "echo" to test this script.
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
if test -z "$doit"; then
doit_exec=exec
else
doit_exec=$doit
fi
doit_exec=${doit:-exec}
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
@@ -68,22 +64,15 @@ mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_glob='?'
initialize_posix_glob='
test "$posix_glob" != "?" || {
if (set -f) 2>/dev/null; then
posix_glob=
else
posix_glob=:
fi
}
'
posix_mkdir=
# Desired mode of installed file.
mode=0755
# Create dirs (including intermediate dirs) using mode 755.
# This is like GNU 'install' as of coreutils 8.32 (2020).
mkdir_umask=22
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
@@ -97,7 +86,7 @@ dir_arg=
dst_arg=
copy_on_change=false
no_target_directory=
is_target_a_directory=possibly
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
@@ -120,7 +109,7 @@ Options:
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-S $stripprog installed files.
-S OPTION $stripprog installed files using OPTION.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
@@ -138,45 +127,60 @@ while test $# -ne 0; do
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
case $mode in
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
shift;;
-s) stripcmd=$stripprog;;
-S) stripcmd="$stripprog $2"
shift;;
shift;;
-t) dst_arg=$2
shift;;
-t)
is_target_a_directory=always
dst_arg=$2
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
shift;;
-T) no_target_directory=true;;
-T) is_target_a_directory=never;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
# We allow the use of options -d and -T together, by making -d
# take the precedence; this is for compatibility with GNU install.
if test -n "$dir_arg"; then
if test -n "$dst_arg"; then
echo "$0: target directory not allowed when installing a directory." >&2
exit 1
fi
fi
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
@@ -190,6 +194,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
fi
shift # arg
dst_arg=$arg
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
done
fi
@@ -198,11 +206,20 @@ if test $# -eq 0; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
if test $# -gt 1 || test "$is_target_a_directory" = always; then
if test ! -d "$dst_arg"; then
echo "$0: $dst_arg: Is not a directory." >&2
exit 1
fi
fi
fi
if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
@@ -219,16 +236,16 @@ if test -z "$dir_arg"; then
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
u_plus_rw=
else
u_plus_rw='% 200'
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
u_plus_rw=
else
u_plus_rw=,u+rw
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
@@ -236,9 +253,9 @@ fi
for src
do
# Protect names starting with `-'.
# Protect names problematic for 'test' and other utilities.
case $src in
-*) src=./$src;;
-* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
@@ -260,185 +277,150 @@ do
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
# If destination is a directory, append the input filename.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
if test "$is_target_a_directory" = never; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstbase=`basename "$src"`
case $dst in
*/) dst=$dst$dstbase;;
*) dst=$dst/$dstbase;;
esac
dstdir_status=0
else
# Prefer dirname, but fall back on a substitute if dirname fails.
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
dstdir=`dirname "$dst"`
test -d "$dstdir"
dstdir_status=$?
fi
fi
case $dstdir in
*/) dstdirslash=$dstdir;;
*) dstdirslash=$dstdir/;;
esac
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
posix_mkdir=false
# The $RANDOM variable is not portable (e.g., dash). Use it
# here however when possible just to lower collision chance.
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
trap '
ret=$?
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
exit $ret
' 0
# Because "mkdir -p" follows existing symlinks and we likely work
# directly in world-writeable /tmp, make sure that the '$tmpdir'
# directory is successfully created first before we actually test
# 'mkdir -p'.
if (umask $mkdir_umask &&
$mkdirprog $mkdir_mode "$tmpdir" &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
test_tmpdir="$tmpdir/a"
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
else
mkdir_mode=
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writeable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
trap '' 0;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
-*) prefix='./';;
*) prefix='';;
/*) prefix='/';;
[-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
eval "$initialize_posix_glob"
oIFS=$IFS
IFS=/
$posix_glob set -f
set -f
set fnord $dstdir
shift
$posix_glob set +f
set +f
IFS=$oIFS
prefixes=
for d
do
test -z "$d" && continue
test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
@@ -451,14 +433,25 @@ do
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
dsttmp=${dstdirslash}_inst.$$_
rmtmp=${dstdirslash}_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
(umask $cp_umask &&
{ test -z "$stripcmd" || {
# Create $dsttmp read-write so that cp doesn't create it read-only,
# which would cause strip to fail.
if test -z "$doit"; then
: >"$dsttmp" # No need to fork-exec 'touch'.
else
$doit touch "$dsttmp"
fi
}
} &&
$doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
@@ -473,15 +466,12 @@ do
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
eval "$initialize_posix_glob" &&
$posix_glob set -f &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
$posix_glob set +f &&
set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
@@ -494,24 +484,24 @@ do
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
@@ -520,9 +510,9 @@ do
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End:
# End:

View File

@@ -50,9 +50,9 @@ AC_DEFUN([TEA_PATH_TCLCONFIG], [
# we reset no_tcl in case something fails here
no_tcl=true
AC_ARG_WITH(tcl,
AC_HELP_STRING([--with-tcl],
AS_HELP_STRING([--with-tcl],
[directory containing tcl configuration (tclConfig.sh)]),
with_tclconfig="${withval}")
[with_tclconfig="${withval}"])
AC_MSG_CHECKING([for Tcl configuration])
AC_CACHE_VAL(ac_cv_c_tclconfig,[
@@ -212,9 +212,9 @@ AC_DEFUN([TEA_PATH_TKCONFIG], [
# we reset no_tk in case something fails here
no_tk=true
AC_ARG_WITH(tk,
AC_HELP_STRING([--with-tk],
AS_HELP_STRING([--with-tk],
[directory containing tk configuration (tkConfig.sh)]),
with_tkconfig="${withval}")
[with_tkconfig="${withval}"])
AC_MSG_CHECKING([for Tk configuration])
AC_CACHE_VAL(ac_cv_c_tkconfig,[
@@ -266,9 +266,6 @@ AC_DEFUN([TEA_PATH_TKCONFIG], [
for i in `ls -d ~/Library/Frameworks 2>/dev/null` \
`ls -d /Library/Frameworks 2>/dev/null` \
`ls -d /Network/Library/Frameworks 2>/dev/null` \
`ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Library/Frameworks/Tcl.framework 2>/dev/null` \
`ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/Network/Library/Frameworks/Tcl.framework 2>/dev/null` \
`ls -d /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Tcl.framework 2>/dev/null` \
; do
if test -f "$i/Tk.framework/tkConfig.sh" ; then
ac_cv_c_tkconfig="`(cd $i/Tk.framework; pwd)`"
@@ -285,10 +282,10 @@ AC_DEFUN([TEA_PATH_TKCONFIG], [
`ls -d /usr/local/lib 2>/dev/null` \
`ls -d /usr/contrib/lib 2>/dev/null` \
`ls -d /usr/pkg/lib 2>/dev/null` \
`ls -d /usr/lib 2>/dev/null` \
`ls -d /usr/lib64 2>/dev/null` \
`ls -d /usr/lib/tk8.6 2>/dev/null` \
`ls -d /usr/lib/tk8.5 2>/dev/null` \
`ls -d /usr/lib 2>/dev/null` \
`ls -d /usr/lib64 2>/dev/null` \
`ls -d /usr/local/lib/tk8.6 2>/dev/null` \
`ls -d /usr/local/lib/tk8.5 2>/dev/null` \
`ls -d /usr/local/lib/tcl/tk8.6 2>/dev/null` \
@@ -375,10 +372,6 @@ AC_DEFUN([TEA_LOAD_TCLCONFIG], [
AC_MSG_RESULT([could not find ${TCL_BIN_DIR}/tclConfig.sh])
fi
# eval is required to do the TCL_DBGX substitution
eval "TCL_LIB_FILE=\"${TCL_LIB_FILE}\""
eval "TCL_STUB_LIB_FILE=\"${TCL_STUB_LIB_FILE}\""
# If the TCL_BIN_DIR is the build directory (not the install directory),
# then set the common variable name to the value of the build variables.
# For example, the variable TCL_LIB_SPEC will be set to the value
@@ -412,12 +405,6 @@ AC_DEFUN([TEA_LOAD_TCLCONFIG], [
esac
fi
# eval is required to do the TCL_DBGX substitution
eval "TCL_LIB_FLAG=\"${TCL_LIB_FLAG}\""
eval "TCL_LIB_SPEC=\"${TCL_LIB_SPEC}\""
eval "TCL_STUB_LIB_FLAG=\"${TCL_STUB_LIB_FLAG}\""
eval "TCL_STUB_LIB_SPEC=\"${TCL_STUB_LIB_SPEC}\""
AC_SUBST(TCL_VERSION)
AC_SUBST(TCL_PATCH_LEVEL)
AC_SUBST(TCL_BIN_DIR)
@@ -493,10 +480,6 @@ AC_DEFUN([TEA_LOAD_TKCONFIG], [
AC_MSG_RESULT([could not find ${TK_BIN_DIR}/tkConfig.sh])
fi
# eval is required to do the TK_DBGX substitution
eval "TK_LIB_FILE=\"${TK_LIB_FILE}\""
eval "TK_STUB_LIB_FILE=\"${TK_STUB_LIB_FILE}\""
# If the TK_BIN_DIR is the build directory (not the install directory),
# then set the common variable name to the value of the build variables.
# For example, the variable TK_LIB_SPEC will be set to the value
@@ -530,12 +513,6 @@ AC_DEFUN([TEA_LOAD_TKCONFIG], [
esac
fi
# eval is required to do the TK_DBGX substitution
eval "TK_LIB_FLAG=\"${TK_LIB_FLAG}\""
eval "TK_LIB_SPEC=\"${TK_LIB_SPEC}\""
eval "TK_STUB_LIB_FLAG=\"${TK_STUB_LIB_FLAG}\""
eval "TK_STUB_LIB_SPEC=\"${TK_STUB_LIB_SPEC}\""
# TEA specific: Ensure windowingsystem is defined
if test "${TEA_PLATFORM}" = "unix" ; then
case ${TK_DEFS} in
@@ -592,14 +569,14 @@ AC_DEFUN([TEA_PROG_TCLSH], [
if test -f "${TCL_BIN_DIR}/Makefile" ; then
# tclConfig.sh is in Tcl build directory
if test "${TEA_PLATFORM}" = "windows"; then
if test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}s${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}s${EXEEXT}"
elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}t${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}t${EXEEXT}"
elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}st${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}st${EXEEXT}"
if test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}"
elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}s${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}s${EXEEXT}"
elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}t${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}t${EXEEXT}"
elif test -f "${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}st${EXEEXT}" ; then
TCLSH_PROG="${TCL_BIN_DIR}/tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}st${EXEEXT}"
fi
else
TCLSH_PROG="${TCL_BIN_DIR}/tclsh"
@@ -607,9 +584,9 @@ AC_DEFUN([TEA_PROG_TCLSH], [
else
# tclConfig.sh is in install location
if test "${TEA_PLATFORM}" = "windows"; then
TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${TCL_DBGX}${EXEEXT}"
TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}${TCL_MINOR_VERSION}${EXEEXT}"
else
TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}${TCL_DBGX}"
TCLSH_PROG="tclsh${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}"
fi
list="`ls -d ${TCL_BIN_DIR}/../bin 2>/dev/null` \
`ls -d ${TCL_BIN_DIR}/.. 2>/dev/null` \
@@ -650,14 +627,14 @@ AC_DEFUN([TEA_PROG_WISH], [
if test -f "${TK_BIN_DIR}/Makefile" ; then
# tkConfig.sh is in Tk build directory
if test "${TEA_PLATFORM}" = "windows"; then
if test -f "${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}${EXEEXT}" ; then
WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}${EXEEXT}"
elif test -f "${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}s${EXEEXT}" ; then
WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}$s{EXEEXT}"
elif test -f "${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}t${EXEEXT}" ; then
WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}t${EXEEXT}"
elif test -f "${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}st${EXEEXT}" ; then
WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}st${EXEEXT}"
if test -f "${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${EXEEXT}" ; then
WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${EXEEXT}"
elif test -f "${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}s${EXEEXT}" ; then
WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}$s{EXEEXT}"
elif test -f "${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}t${EXEEXT}" ; then
WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}t${EXEEXT}"
elif test -f "${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}st${EXEEXT}" ; then
WISH_PROG="${TK_BIN_DIR}/wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}st${EXEEXT}"
fi
else
WISH_PROG="${TK_BIN_DIR}/wish"
@@ -665,9 +642,9 @@ AC_DEFUN([TEA_PROG_WISH], [
else
# tkConfig.sh is in install location
if test "${TEA_PLATFORM}" = "windows"; then
WISH_PROG="wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${TK_DBGX}${EXEEXT}"
WISH_PROG="wish${TK_MAJOR_VERSION}${TK_MINOR_VERSION}${EXEEXT}"
else
WISH_PROG="wish${TK_MAJOR_VERSION}.${TK_MINOR_VERSION}${TK_DBGX}"
WISH_PROG="wish${TK_MAJOR_VERSION}.${TK_MINOR_VERSION}"
fi
list="`ls -d ${TK_BIN_DIR}/../bin 2>/dev/null` \
`ls -d ${TK_BIN_DIR}/.. 2>/dev/null` \
@@ -713,7 +690,7 @@ AC_DEFUN([TEA_PROG_WISH], [
AC_DEFUN([TEA_ENABLE_SHARED], [
AC_MSG_CHECKING([how to build libraries])
AC_ARG_ENABLE(shared,
AC_HELP_STRING([--enable-shared],
AS_HELP_STRING([--enable-shared],
[build and link with shared libraries (default: on)]),
[shared_ok=$enableval], [shared_ok=yes])
@@ -725,7 +702,7 @@ AC_DEFUN([TEA_ENABLE_SHARED], [
fi
AC_ARG_ENABLE(stubs,
AC_HELP_STRING([--enable-stubs],
AS_HELP_STRING([--enable-stubs],
[build and link with stub libraries. Always true for shared builds (default: on)]),
[stubs_ok=$enableval], [stubs_ok=yes])
@@ -797,7 +774,7 @@ AC_DEFUN([TEA_ENABLE_SHARED], [
AC_DEFUN([TEA_ENABLE_THREADS], [
AC_ARG_ENABLE(threads,
AC_HELP_STRING([--enable-threads],
AS_HELP_STRING([--enable-threads],
[build with threads (default: on)]),
[tcl_ok=$enableval], [tcl_ok=yes])
@@ -911,8 +888,6 @@ AC_DEFUN([TEA_ENABLE_THREADS], [
# Sets to "$(CFLAGS_OPTIMIZE) -DNDEBUG" if false
# LDFLAGS_DEFAULT Sets to $(LDFLAGS_DEBUG) if true
# Sets to $(LDFLAGS_OPTIMIZE) if false
# DBGX Formerly used as debug library extension;
# always blank now.
#------------------------------------------------------------------------
AC_DEFUN([TEA_ENABLE_SYMBOLS], [
@@ -920,10 +895,9 @@ AC_DEFUN([TEA_ENABLE_SYMBOLS], [
AC_REQUIRE([TEA_CONFIG_CFLAGS])
AC_MSG_CHECKING([for build with symbols])
AC_ARG_ENABLE(symbols,
AC_HELP_STRING([--enable-symbols],
AS_HELP_STRING([--enable-symbols],
[build with debugging symbols (default: off)]),
[tcl_ok=$enableval], [tcl_ok=no])
DBGX=""
if test "$tcl_ok" = "no"; then
CFLAGS_DEFAULT="${CFLAGS_OPTIMIZE} -DNDEBUG"
LDFLAGS_DEFAULT="${LDFLAGS_OPTIMIZE}"
@@ -935,13 +909,8 @@ AC_DEFUN([TEA_ENABLE_SYMBOLS], [
AC_MSG_RESULT([yes (standard debugging)])
fi
fi
# TEA specific:
if test "${TEA_PLATFORM}" != "windows" ; then
LDFLAGS_DEFAULT="${LDFLAGS}"
fi
AC_SUBST(CFLAGS_DEFAULT)
AC_SUBST(LDFLAGS_DEFAULT)
AC_SUBST(TCL_DBGX)
if test "$tcl_ok" = "mem" -o "$tcl_ok" = "all"; then
AC_DEFINE(TCL_MEM_DEBUG, 1, [Is memory debugging enabled?])
@@ -976,7 +945,7 @@ AC_DEFUN([TEA_ENABLE_SYMBOLS], [
AC_DEFUN([TEA_ENABLE_LANGINFO], [
AC_ARG_ENABLE(langinfo,
AC_HELP_STRING([--enable-langinfo],
AS_HELP_STRING([--enable-langinfo],
[use nl_langinfo if possible to determine encoding at startup, otherwise use old heuristic (default: on)]),
[langinfo_ok=$enableval], [langinfo_ok=yes])
@@ -1108,7 +1077,7 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
AC_MSG_CHECKING([if 64bit support is requested])
AC_ARG_ENABLE(64bit,
AC_HELP_STRING([--enable-64bit],
AS_HELP_STRING([--enable-64bit],
[enable 64bit support (default: off)]),
[do64bit=$enableval], [do64bit=no])
AC_MSG_RESULT([$do64bit])
@@ -1117,7 +1086,7 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
AC_MSG_CHECKING([if 64bit Sparc VIS support is requested])
AC_ARG_ENABLE(64bit-vis,
AC_HELP_STRING([--enable-64bit-vis],
AS_HELP_STRING([--enable-64bit-vis],
[enable 64bit Sparc VIS support (default: off)]),
[do64bitVIS=$enableval], [do64bitVIS=no])
AC_MSG_RESULT([$do64bitVIS])
@@ -1146,7 +1115,7 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
AC_MSG_CHECKING([if rpath support is requested])
AC_ARG_ENABLE(rpath,
AC_HELP_STRING([--disable-rpath],
AS_HELP_STRING([--disable-rpath],
[disable rpath support (default: on)]),
[doRpath=$enableval], [doRpath=yes])
AC_MSG_RESULT([$doRpath])
@@ -1260,14 +1229,14 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
if test "$ac_cv_cross" = "yes"; then
case "$do64bit" in
amd64|x64|yes)
CC="x86_64-w64-mingw32-gcc"
CC="x86_64-w64-mingw32-${CC}"
LD="x86_64-w64-mingw32-ld"
AR="x86_64-w64-mingw32-ar"
RANLIB="x86_64-w64-mingw32-ranlib"
RC="x86_64-w64-mingw32-windres"
;;
*)
CC="i686-w64-mingw32-gcc"
CC="i686-w64-mingw32-${CC}"
LD="i686-w64-mingw32-ld"
AR="i686-w64-mingw32-ar"
RANLIB="i686-w64-mingw32-ranlib"
@@ -1336,11 +1305,11 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
# AIX-5 uses ELF style dynamic libraries on IA-64, but not PPC
SHLIB_LD="/usr/ccs/bin/ld -G -z text"
AS_IF([test "$GCC" = yes], [
CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-R,${LIB_RUNTIME_DIR}"'
], [
CC_SEARCH_FLAGS='-R${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-R${LIB_RUNTIME_DIR}"'
])
LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-R "${LIB_RUNTIME_DIR}"'
], [
AS_IF([test "$GCC" = yes], [
SHLIB_LD='${CC} -shared -Wl,-bexpall'
@@ -1349,7 +1318,7 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
LDFLAGS="$LDFLAGS -brtl"
])
SHLIB_LD="${SHLIB_LD} ${SHLIB_LD_FLAGS}"
CC_SEARCH_FLAGS='-L${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-L${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
])
;;
@@ -1385,19 +1354,6 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
SHLIB_LD='${CC} -shared'
SHLIB_SUFFIX=".dll"
SHLIB_LD_LIBS="${SHLIB_LD_LIBS} -Wl,--out-implib,\$[@].a"
AC_CACHE_CHECK(for Cygwin version of gcc,
ac_cv_cygwin,
AC_TRY_COMPILE([
#ifdef __CYGWIN__
#error cygwin
#endif
], [],
ac_cv_cygwin=no,
ac_cv_cygwin=yes)
)
if test "$ac_cv_cygwin" = "no"; then
AC_MSG_ERROR([${CC} is not a cygwin compiler.])
fi
EXEEXT=".exe"
do64bit_ok=yes
CC_SEARCH_FLAGS=""
@@ -1435,8 +1391,8 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
SHLIB_CFLAGS="+z"
SHLIB_LD="ld -b"
LDFLAGS="$LDFLAGS -Wl,-E"
CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
CC_SEARCH_FLAGS='"-Wl,+s,+b,${LIB_RUNTIME_DIR}:."'
LD_SEARCH_FLAGS='+s +b "${LIB_RUNTIME_DIR}:."'
LD_LIBRARY_PATH_VAR="SHLIB_PATH"
])
AS_IF([test "$GCC" = yes], [
@@ -1455,7 +1411,7 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
do64bit_ok=yes
SHLIB_LD='${CC} -shared'
AS_IF([test $doRpath = yes], [
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'])
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
;;
*)
@@ -1476,8 +1432,8 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
SHLIB_LD="ld -b"
SHLIB_LD_LIBS=""
LDFLAGS="$LDFLAGS -Wl,-E"
CC_SEARCH_FLAGS='-Wl,+s,+b,${LIB_RUNTIME_DIR}:.'
LD_SEARCH_FLAGS='+s +b ${LIB_RUNTIME_DIR}:.'
CC_SEARCH_FLAGS='"-Wl,+s,+b,${LIB_RUNTIME_DIR}:."'
LD_SEARCH_FLAGS='+s +b "${LIB_RUNTIME_DIR}:."'
LD_LIBRARY_PATH_VAR="SHLIB_PATH"
]) ;;
IRIX-5.*)
@@ -1486,16 +1442,16 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
SHLIB_SUFFIX=".so"
AC_LIBOBJ(mkstemp)
AS_IF([test $doRpath = yes], [
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'])
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS='-rpath "${LIB_RUNTIME_DIR}"'])
;;
IRIX-6.*)
SHLIB_CFLAGS=""
SHLIB_LD="ld -n32 -shared -rdata_shared"
SHLIB_SUFFIX=".so"
AS_IF([test $doRpath = yes], [
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'])
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS='-rpath "${LIB_RUNTIME_DIR}"'])
AS_IF([test "$GCC" = yes], [
CFLAGS="$CFLAGS -mabi=n32"
LDFLAGS="$LDFLAGS -mabi=n32"
@@ -1517,8 +1473,8 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
SHLIB_LD="ld -n32 -shared -rdata_shared"
SHLIB_SUFFIX=".so"
AS_IF([test $doRpath = yes], [
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'])
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS='-rpath "${LIB_RUNTIME_DIR}"'])
# Check to enable 64-bit flags for compiler/linker
@@ -1533,7 +1489,7 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
])
])
;;
Linux*|GNU*|NetBSD-Debian)
Linux*|GNU*|NetBSD-Debian|DragonFly-*|FreeBSD-*)
SHLIB_CFLAGS="-fPIC"
SHLIB_SUFFIX=".so"
@@ -1543,8 +1499,19 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
# TEA specific: use LDFLAGS_DEFAULT instead of LDFLAGS
SHLIB_LD='${CC} ${CFLAGS} ${LDFLAGS_DEFAULT} -shared'
LDFLAGS="$LDFLAGS -Wl,--export-dynamic"
case $system in
DragonFly-*|FreeBSD-*)
AS_IF([test "${TCL_THREADS}" = "1"], [
# The -pthread needs to go in the LDFLAGS, not LIBS
LIBS=`echo $LIBS | sed s/-pthread//`
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LDFLAGS="$LDFLAGS $PTHREAD_LIBS"])
;;
esac
AS_IF([test $doRpath = yes], [
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'])
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
AS_IF([test "`uname -m`" = "alpha"], [CFLAGS="$CFLAGS -mieee"])
AS_IF([test $do64bit = yes], [
@@ -1574,8 +1541,8 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
SHLIB_LD='${CC} -shared'
LD_FLAGS="-Wl,--export-dynamic"
AS_IF([test $doRpath = yes], [
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'])
;;
OpenBSD-*)
arch=`arch -s`
@@ -1590,10 +1557,10 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
SHLIB_LD='${CC} ${SHLIB_CFLAGS} -shared'
SHLIB_SUFFIX=".so"
AS_IF([test $doRpath = yes], [
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'])
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.so${SHLIB_VERSION}'
LDFLAGS="-Wl,-export-dynamic"
LDFLAGS="$LDFLAGS -Wl,-export-dynamic"
CFLAGS_OPTIMIZE="-O2"
# On OpenBSD: Compile with -pthread
# Don't link with -lpthread
@@ -1610,37 +1577,13 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
SHLIB_SUFFIX=".so"
LDFLAGS="$LDFLAGS -export-dynamic"
AS_IF([test $doRpath = yes], [
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'])
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
# The -pthread needs to go in the CFLAGS, not LIBS
LIBS=`echo $LIBS | sed s/-pthread//`
CFLAGS="$CFLAGS -pthread"
LDFLAGS="$LDFLAGS -pthread"
;;
DragonFly-*|FreeBSD-*)
# This configuration from FreeBSD Ports.
SHLIB_CFLAGS="-fPIC"
SHLIB_LD="${CC} -shared"
SHLIB_LD_LIBS="${SHLIB_LD_LIBS} -Wl,-soname,\$[@]"
SHLIB_SUFFIX=".so"
LDFLAGS=""
AS_IF([test $doRpath = yes], [
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'])
# The -pthread needs to go in the LDFLAGS, not LIBS
LIBS=`echo $LIBS | sed s/-pthread//`
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LDFLAGS="$LDFLAGS $PTHREAD_LIBS"
case $system in
FreeBSD-3.*)
# Version numbers are dot-stripped by system policy.
TCL_TRIM_DOTS=`echo ${PACKAGE_VERSION} | tr -d .`
UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1'
TCL_LIB_VERSIONS_OK=nodots
;;
esac
;;
Darwin-*)
CFLAGS_OPTIMIZE="-Os"
SHLIB_CFLAGS="-fno-common"
@@ -1774,7 +1717,7 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
])
SHLIB_SUFFIX=".so"
AS_IF([test $doRpath = yes], [
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-rpath,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'])
AS_IF([test "$GCC" = yes], [CFLAGS="$CFLAGS -mieee"], [
CFLAGS="$CFLAGS -DHAVE_TZSET -std1 -ieee"])
@@ -1827,11 +1770,11 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
SHLIB_SUFFIX=".so"
AS_IF([test "$GCC" = yes], [
SHLIB_LD='${CC} -shared'
CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-R,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
], [
SHLIB_LD="/usr/ccs/bin/ld -G -z text"
CC_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='-R "${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
])
;;
@@ -1897,7 +1840,7 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
SHLIB_SUFFIX=".so"
AS_IF([test "$GCC" = yes], [
SHLIB_LD='${CC} -shared'
CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-R,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
AS_IF([test "$do64bit_ok" = yes], [
AS_IF([test "$arch" = "sparcv9 sparc"], [
@@ -1924,8 +1867,8 @@ AC_DEFUN([TEA_CONFIG_CFLAGS], [
*)
SHLIB_LD='/usr/ccs/bin/ld -G -z text';;
esac
CC_SEARCH_FLAGS='-Wl,-R,${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-R ${LIB_RUNTIME_DIR}'
CC_SEARCH_FLAGS='"-Wl,-R,${LIB_RUNTIME_DIR}"'
LD_SEARCH_FLAGS='-R "${LIB_RUNTIME_DIR}"'
])
;;
UNIX_SV* | UnixWare-5*)
@@ -2091,6 +2034,8 @@ dnl # preprocessing tests use only CPPFLAGS.
AC_SUBST(CFLAGS_DEBUG)
AC_SUBST(CFLAGS_OPTIMIZE)
AC_SUBST(CFLAGS_WARNING)
AC_SUBST(LDFLAGS_DEBUG)
AC_SUBST(LDFLAGS_OPTIMIZE)
AC_SUBST(STLIB_LD)
AC_SUBST(SHLIB_LD)
@@ -2374,6 +2319,7 @@ AC_DEFUN([TEA_BLOCKING_STYLE], [
# HAVE_TM_GMTOFF
# HAVE_TM_TZADJ
# HAVE_TIMEZONE_VAR
#
#--------------------------------------------------------------------
AC_DEFUN([TEA_TIME_HANDLER], [
@@ -2381,7 +2327,7 @@ AC_DEFUN([TEA_TIME_HANDLER], [
AC_HEADER_TIME
AC_STRUCT_TIMEZONE
AC_CHECK_FUNCS(gmtime_r localtime_r)
AC_CHECK_FUNCS(gmtime_r localtime_r mktime)
AC_CACHE_CHECK([tm_tzadj in struct tm], tcl_cv_member_tm_tzadj, [
AC_TRY_COMPILE([#include <time.h>], [struct tm tm; tm.tm_tzadj;],
@@ -2449,6 +2395,7 @@ AC_DEFUN([TEA_BUGGY_STRTOD], [
if test "$tcl_strtod" = 1; then
AC_CACHE_CHECK([for Solaris2.4/Tru64 strtod bugs], tcl_cv_strtod_buggy,[
AC_TRY_RUN([
#include <stdlib.h>
extern double strtod();
int main() {
char *infString="Inf", *nanString="NaN", *spaceString=" ";
@@ -2477,6 +2424,81 @@ AC_DEFUN([TEA_BUGGY_STRTOD], [
fi
])
#--------------------------------------------------------------------
# TEA_TCL_LINK_LIBS
#
# Search for the libraries needed to link the Tcl shell.
# Things like the math library (-lm), socket stuff (-lsocket vs.
# -lnsl), zlib (-lz) and libtommath (-ltommath) are dealt with here.
#
# Arguments:
# None.
#
# Results:
#
# Might append to the following vars:
# LIBS
# MATH_LIBS
#
# Might define the following vars:
# HAVE_NET_ERRNO_H
#
#--------------------------------------------------------------------
AC_DEFUN([TEA_TCL_LINK_LIBS], [
#--------------------------------------------------------------------
# On a few very rare systems, all of the libm.a stuff is
# already in libc.a. Set compiler flags accordingly.
#--------------------------------------------------------------------
AC_CHECK_FUNC(sin, MATH_LIBS="", MATH_LIBS="-lm")
#--------------------------------------------------------------------
# Interactive UNIX requires -linet instead of -lsocket, plus it
# needs net/errno.h to define the socket-related error codes.
#--------------------------------------------------------------------
AC_CHECK_LIB(inet, main, [LIBS="$LIBS -linet"])
AC_CHECK_HEADER(net/errno.h, [
AC_DEFINE(HAVE_NET_ERRNO_H, 1, [Do we have <net/errno.h>?])])
#--------------------------------------------------------------------
# Check for the existence of the -lsocket and -lnsl libraries.
# The order here is important, so that they end up in the right
# order in the command line generated by make. Here are some
# special considerations:
# 1. Use "connect" and "accept" to check for -lsocket, and
# "gethostbyname" to check for -lnsl.
# 2. Use each function name only once: can't redo a check because
# autoconf caches the results of the last check and won't redo it.
# 3. Use -lnsl and -lsocket only if they supply procedures that
# aren't already present in the normal libraries. This is because
# IRIX 5.2 has libraries, but they aren't needed and they're
# bogus: they goof up name resolution if used.
# 4. On some SVR4 systems, can't use -lsocket without -lnsl too.
# To get around this problem, check for both libraries together
# if -lsocket doesn't work by itself.
#--------------------------------------------------------------------
tcl_checkBoth=0
AC_CHECK_FUNC(connect, tcl_checkSocket=0, tcl_checkSocket=1)
if test "$tcl_checkSocket" = 1; then
AC_CHECK_FUNC(setsockopt, , [AC_CHECK_LIB(socket, setsockopt,
LIBS="$LIBS -lsocket", tcl_checkBoth=1)])
fi
if test "$tcl_checkBoth" = 1; then
tk_oldLibs=$LIBS
LIBS="$LIBS -lsocket -lnsl"
AC_CHECK_FUNC(accept, tcl_checkNsl=0, [LIBS=$tk_oldLibs])
fi
AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, gethostbyname,
[LIBS="$LIBS -lnsl"])])
AC_CHECK_FUNC(mp_log_u32, , [AC_CHECK_LIB(tommath, mp_log_u32,
[LIBS="$LIBS -ltommath"])])
AC_CHECK_FUNC(deflateSetHeader, , [AC_CHECK_LIB(z, deflateSetHeader,
[LIBS="$LIBS -lz"])])
])
#--------------------------------------------------------------------
# TEA_TCL_EARLY_FLAGS
#
@@ -2492,6 +2514,7 @@ AC_DEFUN([TEA_BUGGY_STRTOD], [
# _ISOC99_SOURCE
# _LARGEFILE64_SOURCE
# _LARGEFILE_SOURCE64
#
#--------------------------------------------------------------------
AC_DEFUN([TEA_TCL_EARLY_FLAG],[
@@ -2912,7 +2935,7 @@ AC_DEFUN([TEA_ADD_LIBS], [
for i in $vars; do
if test "${TEA_PLATFORM}" = "windows" -a "$GCC" = "yes" ; then
# Convert foo.lib to -lfoo for GCC. No-op if not *.lib
i=`echo "$i" | sed -e 's/^\([[^-]].*\)\.lib[$]/-l\1/i'`
i=`echo "$i" | sed -e 's/^\([[^-]].*\)\.[[lL]][[iI]][[bB]][$]/-l\1/'`
fi
PKG_LIBS="$PKG_LIBS $i"
done
@@ -3099,7 +3122,7 @@ AC_DEFUN([TEA_SETUP_COMPILER], [
AC_DEFUN([TEA_MAKE_LIB], [
if test "${TEA_PLATFORM}" = "windows" -a "$GCC" != "yes"; then
MAKE_STATIC_LIB="\${STLIB_LD} -out:\[$]@ \$(PKG_OBJECTS)"
MAKE_SHARED_LIB="\${SHLIB_LD} \${SHLIB_LD_LIBS} \${LDFLAGS_DEFAULT} -out:\[$]@ \$(PKG_OBJECTS)"
MAKE_SHARED_LIB="\${SHLIB_LD} \${LDFLAGS} \${LDFLAGS_DEFAULT} -out:\[$]@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}"
AC_EGREP_CPP([manifest needed], [
#if defined(_MSC_VER) && _MSC_VER >= 1400
print("manifest needed")
@@ -3114,7 +3137,7 @@ print("manifest needed")
MAKE_STUB_LIB="\${STLIB_LD} -nodefaultlib -out:\[$]@ \$(PKG_STUB_OBJECTS)"
else
MAKE_STATIC_LIB="\${STLIB_LD} \[$]@ \$(PKG_OBJECTS)"
MAKE_SHARED_LIB="\${SHLIB_LD} -o \[$]@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}"
MAKE_SHARED_LIB="\${SHLIB_LD} \${LDFLAGS} \${LDFLAGS_DEFAULT} -o \[$]@ \$(PKG_OBJECTS) \${SHLIB_LD_LIBS}"
MAKE_STUB_LIB="\${STLIB_LD} \[$]@ \$(PKG_STUB_OBJECTS)"
fi
@@ -3856,11 +3879,11 @@ AC_DEFUN([TEA_EXPORT_CONFIG], [
# pkglibdir must be a fully qualified path and (not ${exec_prefix}/lib)
eval pkglibdir="[$]{libdir}/$1${PACKAGE_VERSION}"
if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
eval $1_LIB_FLAG="-l$1${PACKAGE_VERSION}${DBGX}"
eval $1_STUB_LIB_FLAG="-l$1stub${PACKAGE_VERSION}${DBGX}"
eval $1_LIB_FLAG="-l$1${PACKAGE_VERSION}"
eval $1_STUB_LIB_FLAG="-l$1stub${PACKAGE_VERSION}"
else
eval $1_LIB_FLAG="-l$1`echo ${PACKAGE_VERSION} | tr -d .`${DBGX}"
eval $1_STUB_LIB_FLAG="-l$1stub`echo ${PACKAGE_VERSION} | tr -d .`${DBGX}"
eval $1_LIB_FLAG="-l$1`echo ${PACKAGE_VERSION} | tr -d .`"
eval $1_STUB_LIB_FLAG="-l$1stub`echo ${PACKAGE_VERSION} | tr -d .`"
fi
$1_BUILD_LIB_SPEC="-L`$CYGPATH $(pwd)` ${$1_LIB_FLAG}"
$1_LIB_SPEC="-L`$CYGPATH ${pkglibdir}` ${$1_LIB_FLAG}"

View File

@@ -114,12 +114,12 @@ test basic-1.6 {objects have an access command
namespace which -command x
} -cleanup $cleanup2 -result ::x
test basic-1.7a {objects are added to the master list
test basic-1.7a {objects are added to the global list
} -setup $setup2 -body {
itcl::find objects x
} -cleanup $cleanup2 -result x
test basic-1.7b {objects are added to the master list
test basic-1.7b {objects are added to the global list
} -setup $setup2 -body {
itcl::find objects -class Counter x
} -cleanup $cleanup2 -result x

View File

@@ -14,7 +14,8 @@
package require tcltest 2.2
namespace import ::tcltest::test
::tcltest::loadTestedCommands
set ::itcllib [lindex [package ifneeded itcl [package require itcl]] 1]
package require itcl
set ::itcllib [lindex [lsearch -exact -index 1 -inline [info loaded] Itcl] 0]
# ----------------------------------------------------------------------
# Test "itcl::import::stub" command
@@ -45,7 +46,7 @@ test import-1.3 {"stub exists" requires one argument} {
set interp [interp create]
$interp eval {set ::tcl::inl_mem_test 0}
$interp eval "
[list ::load $::itcllib itcl]
[list ::load $::itcllib Itcl]
[::tcltest::configure -load]
proc auto_load {cmd {namespace {}}} {
global debug
@@ -95,7 +96,7 @@ catch {interp delete $interp}
set interp [interp create]
$interp eval {set ::tcl::inl_mem_test 0}
$interp eval "
[list ::load $::itcllib itcl]
[list ::load $::itcllib Itcl]
[::tcltest::configure -load]
proc auto_load {cmd {namespace {}}} {
proc \$cmd {args} \[format {return \"%s: \$args\"} \$cmd\]

View File

@@ -1,5 +1,5 @@
#
# Tests for using [incr Tcl] in slave interpreters
# Tests for using [incr Tcl] in child interpreters
# ----------------------------------------------------------------------
# AUTHOR: Michael J. McLennan
# Bell Labs Innovations for Lucent Technologies
@@ -17,26 +17,26 @@ namespace import ::tcltest::test
package require itcl
# ----------------------------------------------------------------------
# Make sure that slave interpreters can be created and loaded
# Make sure that child interpreters can be created and loaded
# with [incr Tcl]...
# ----------------------------------------------------------------------
test interp-1.1 {create a slave interp with [incr Tcl]} {
interp create slave
load "" Itcl slave
list [slave eval "namespace children :: itcl"] [interp delete slave]
test interp-1.1 {create a child interp with [incr Tcl]} {
interp create child
load "" Itcl child
list [child eval "namespace children :: itcl"] [interp delete child]
} {::itcl {}}
test interp-1.2 {create a safe slave interp with [incr Tcl]} {
interp create -safe slave
load "" Itcl slave
list [slave eval "namespace children :: itcl"] [interp delete slave]
test interp-1.2 {create a safe child interp with [incr Tcl]} {
interp create -safe child
load "" Itcl child
list [child eval "namespace children :: itcl"] [interp delete child]
} {::itcl {}}
test interp-1.3 {errors are okay when slave interp is deleted} {
catch {interp delete slave}
interp create slave
load "" Itcl slave
slave eval {
test interp-1.3 {errors are okay when child interp is deleted} {
catch {interp delete child}
interp create child
load "" Itcl child
child eval {
itcl::class Troublemaker {
destructor { error "cannot delete this object" }
}
@@ -51,13 +51,13 @@ catch {interp delete slave}
}
Foo f
}
interp delete slave
interp delete child
} {}
test interp-1.4 {one namespace can cause another to be destroyed} {
interp create slave
load "" Itcl slave
slave eval {
interp create child
load "" Itcl child
child eval {
namespace eval group {
itcl::class base1 {}
itcl::class base2 {}
@@ -66,14 +66,14 @@ test interp-1.4 {one namespace can cause another to be destroyed} {
inherit group::base1 group::base2
}
}
interp delete slave
interp delete child
} {}
test interp-1.5 {cleanup interp object list, this should not
include an object that deletes itself in ctor} {
interp create slave
load "" Itcl slave
slave eval {
interp create child
load "" Itcl child
child eval {
itcl::class DeleteSelf {
constructor {} {
itcl::delete object $this
@@ -81,7 +81,7 @@ test interp-1.5 {cleanup interp object list, this should not
}
DeleteSelf ds
}
interp delete slave
interp delete child
} {}
::tcltest::cleanupTests

View File

@@ -153,6 +153,49 @@ test methods-2.1 {covers leak condition test for compiled locals, no args} {
}
list 0
} 0
test methods-2.2 {covers leak condition test for nested methods calls within eval, bug [8e632ce049]} -setup {
itcl::class C1 {
proc factory {} {
set obj [C1 #auto]
$obj myeval [list $obj read]
itcl::delete object $obj
}
method myeval {script} { eval $script }
method read {} { myeval {} }
}
} -body {
time { C1::factory } 50
list 0
} -result 0 -cleanup {
itcl::delete class C1
}
test methods-2.3 {call of method after object is destroyed inside other methods, SF-bug [c1289b1c32]} -setup {
proc c1test {} {
return c1test
}
itcl::class C1 {
public method m1 {} {
itcl::delete object $this
c1test
}
public method m2 {} {
rename $this {}
c1test
}
public method c1test {} {
return C1::c1test
}
}
} -body {
set result {}
set obj [C1 #auto]
lappend result [catch {$obj m1} v] $v [namespace which -command $obj]
set obj [C1 #auto]
lappend result [catch {$obj m2} v] $v [namespace which -command $obj]
} -match glob -result {1 * {} 1 * {}} -cleanup {
itcl::delete class C1
rename c1test {}
}
# ----------------------------------------------------------------------
# Clean up

View File

@@ -457,12 +457,12 @@ test sfbug-257 { SF bug #257
-cleanup {interp delete $interp}
test sfbug-259 { SF bug #257 } -setup {
interp create slave
load {} Itcl slave
interp create child
load {} Itcl child
} -cleanup {
interp delete slave
interp delete child
} -body {
slave eval {
child eval {
proc do_uplevel { body } {
uplevel 1 $body
}

Some files were not shown because too many files have changed in this diff Show More