Tcl - a tool command language for Unix patch 1
Karl Lehenbauer
karl at sugar.hackercorp.com
Sat Dec 22 13:10:45 AEST 1990
Archive-name: tcl4.0/patch1
Patch #: 1
Priority: MEDIUM
patch 1 to Tcl 4.0
==================
This patch fixes three relatively minor problems with Tcl, described in detail
below.
Fix: From rn, say "| patch -p -N -d DIR", where DIR is your Tcl 4.0 source
directory. Outside of rn, say "cd DIR; patch -p -N <thisarticle".
If you don't have the patch program, apply the following by hand,
or get patch (version 2.0, latest patchlevel).
After patching:
Configure
make
make bldhelp
make install
If patch indicates that patchlevel is the wrong version, the patch
may already have been applied. See the patchlevel.h file to find out
what has or has not been applied. In any event, don't continue with
the patch.
strerror function
-----------------
Some BSD variants (Sun-OS, apparently BSD-tahoe) do not have the strerror
function. Tcl has one for these cases, but Configure doesn't realize
that it is needed. Consequently, if you are configuring for BSD the
Configure script will ask if you have strerror in your C library. If you
don't know, answer "y" and if you get a link error saying it's not found, run
Configure again and say "n" to that question.
getenv
------
getenv -- a memory overwrite would occur if an environment variable body
returned by getenv was greater in length that TCL_RESULT_SIZE, i.e. 199 bytes.
help and other procedures not being found after an install
----------------------------------------------------------
The problem here is a very simple one. "make install" copies the Tcl
source files and libraries from the directory they were unpacked/built
from to the place they are to reside. Unfortunately, the .tndx files
(there could be many of them, but right now there's only one) get copied
and really they shouldn't, they should be rebuilt by the install procedure
and, after this patch, they are.
MEMORY DEBUGGING WARNING
------------------------
Modules compiled with memory debugging enabled are incompatible with
modules that were not compiled with it. If you reconfigure to have
memory debugging or to not have it, you should do a make clean and
rebuild to insure that all C source is recompiled. If you suddenly
start getting overwrites on a system that used to work, you might
check for some .o files that didn't get deleted or something after
the "make clean".
DOCUMENTATION PATCH IS FORTHCOMING
----------------------------------
If you've printed the man pages, no doubt you've found some annoying little
problems with them, plus some entries need to be updated. We are preparing
a documentation patch, hopefully it will be ready within the next week.
And now, the patch...
Index: tclsh/src/patchlevel.h
Prereq: 0
***************
*** 1,2
! #define PATCHLEVEL 0
--- 1,2 -----
! #define PATCHLEVEL 1
Index: extend/src/unixcmds.c
***************
*** 357,363
return TCL_OK;
}
! if (envstr != NULL)
strcpy(interp->result, envstr);
return TCL_OK;
}
--- 357,368 -----
return TCL_OK;
}
! if (envstr != NULL) { /* Section modified by Glenn M. Lewis - 12/20/90 */
! int size = strlen(envstr);
! if (size >= TCL_RESULT_SIZE) {
! interp->result = ckalloc(size + 1);
! interp->dynamic = TCL_DYNAMIC;
! }
strcpy(interp->result, envstr);
}
return TCL_OK;
***************
*** 359,364
if (envstr != NULL)
strcpy(interp->result, envstr);
return TCL_OK;
}
--- 364,370 -----
interp->dynamic = TCL_DYNAMIC;
}
strcpy(interp->result, envstr);
+ }
return TCL_OK;
}
Index: Configure
***************
*** 112,117
fi
done
if [ "$TCL_BINDIR" = "" ]
then
TCL_BINDIR=$CWD
--- 112,132 -----
fi
done
+ if [ "$UNIX_TYPE" = "bsd" ]
+ then
+ if [ "$HAS_STRERROR" = "" ]
+ then
+ HAS_STRERROR="y"
+ fi
+ echo "Does your C library have the strerror function?"
+ echo "[$HAS_STRERROR]: \c"
+ read A
+ if [ "$A" != "" ]
+ then
+ HAS_STRERROR=$A
+ fi
+ fi
+
if [ "$TCL_BINDIR" = "" ]
then
TCL_BINDIR=$CWD
***************
*** 297,302
echo "TCL_MEM_DEBUG=\""$TCL_MEM_DEBUG\" >>$CONFIG
echo "TCL_MEM_VALIDATE=\""$TCL_MEM_VALIDATE\" >>$CONFIG
echo "TCL_DEFAULTFILE=\""$TCL_DEFAULTFILE\" >>$CONFIG
echo creating $CONFIG_H
echo "/* generated by Configure script -- don't edit by hand */" >$CONFIG_H
--- 312,318 -----
echo "TCL_MEM_DEBUG=\""$TCL_MEM_DEBUG\" >>$CONFIG
echo "TCL_MEM_VALIDATE=\""$TCL_MEM_VALIDATE\" >>$CONFIG
echo "TCL_DEFAULTFILE=\""$TCL_DEFAULTFILE\" >>$CONFIG
+ echo "HAS_STRERROR=\""$HAS_STRERROR\" >>$CONFIG
echo creating $CONFIG_H
echo "/* generated by Configure script -- don't edit by hand */" >$CONFIG_H
***************
*** 341,347
bsd) MF_SYSDEF="SYSDEF= -DBSD";
MF_RANLIB="RANLIB=ranlib";
MF_OS_OBJS="strtol.o strtoul.o strstr.o putenv.o panic.o ascftime.o";;
-
hpux) MF_SYSDEF="SYSDEF= -DSYSV -DHPUX";
MF_LIBS="LIBS=-lBSD -lPW";
MF_OS_OBJS="panic.o";;
--- 357,362 -----
bsd) MF_SYSDEF="SYSDEF= -DBSD";
MF_RANLIB="RANLIB=ranlib";
MF_OS_OBJS="strtol.o strtoul.o strstr.o putenv.o panic.o ascftime.o";;
hpux) MF_SYSDEF="SYSDEF= -DSYSV -DHPUX";
MF_LIBS="LIBS=-lBSD -lPW";
MF_OS_OBJS="panic.o";;
***************
*** 360,365
MF_OS_OBJS="strstr.o strtoul.o panic.o ascftime.o";;
esac
MF_COMPOPTS="COMPOPTS= $VOID"
if [ "$TCL_HISTORY" = "n" ]
--- 375,386 -----
MF_OS_OBJS="strstr.o strtoul.o panic.o ascftime.o";;
esac
+ if [ "$UNIX_TYPE" = "bsd" -a "$HAS_STRERROR" = "n" ]
+ then
+ MF_OS_OBJS="$MF_OS_OBJS strerror.o"
+ fi
+
+
MF_COMPOPTS="COMPOPTS= $VOID"
if [ "$TCL_HISTORY" = "n" ]
***************
*** 450,455
echo " -rm -rf $TCL_SOURCEDIR/help" >> Makefile
echo " -mkdir $TCL_SOURCEDIR/help" >> Makefile
echo " -./tcl -f tclsh/tclsrc/copydir.tcl tclsh/tclsrc $TCL_SOURCEDIR" >> Makefile
echo " -find $TCL_SOURCEDIR -type f -exec chmod go-w,a+r {} \;" >>Makefile
echo " -find $TCL_SOURCEDIR -type d -exec chmod go-w,a+rx {} \;" >>Makefile
fi
--- 471,478 -----
echo " -rm -rf $TCL_SOURCEDIR/help" >> Makefile
echo " -mkdir $TCL_SOURCEDIR/help" >> Makefile
echo " -./tcl -f tclsh/tclsrc/copydir.tcl tclsh/tclsrc $TCL_SOURCEDIR" >> Makefile
+ echo " -rm -f $TCL_SOURCEDIR/*.ndx" >> Makefile
+ echo " -./tcl \"source tclsh/tclsrc/packages.tcl; set TCL_PATHLIST $TCL_SOURCEDIR; build_package_indexes\"" >> Makefile
echo " -find $TCL_SOURCEDIR -type f -exec chmod go-w,a+r {} \;" >>Makefile
echo " -find $TCL_SOURCEDIR -type d -exec chmod go-w,a+rx {} \;" >>Makefile
fi
--
-- uunet!sugar!karl
-- Usenet access: (713) 438-5018
--
-- uunet!sugar!karl
-- Usenet access: (713) 438-5018
More information about the Alt.sources
mailing list