On Sun, Jul 11, 1999 at 03:46:26PM +0200, Jan Wieck wrote:
> Bruce Momjian wrote:
>
> >
> > > On Sat, Jul 10, 1999 at 02:45:47AM -0400, Bruce Momjian wrote:
> > > > I didn't understand this the first time you sent it either.
> > > >
> > > > Send me a patch to review, please.
> > >
> > > --- src/pl/tcl/mkMakefile.tcldefs.sh.in.orig Fri Jul 9 08:29:09 1999
> > > +++ src/pl/tcl/mkMakefile.tcldefs.sh.in Fri Jul 9 08:29:49 1999
> > > @@ -8,9 +8,6 @@
> > >
> > > cat @TCL_CONFIG_SH@ |
> > > egrep '^TCL_|^TK_' |
> > > - while read inp
> > > - do
> > > - eval eval echo $inp
> > > - done >Makefile.tcldefs
> > > + sed -e "s/^\([^=]*\)='\(.*\)'$/\1=\2/" >Makefile.tcldefs
> > >
> >
> > I understand what your patch does, and it looks OK, but any idea why the
> > 'eval eval' was there, and is it safe to skip it? I can apply this to
> > 6.6.
>
> As far as I can recall, the first of all versions I've
> created did it mainly that way (with a simple sed(1) call).
> But since tclConfig.sh is a shell script, there have to be
> shell variable expansions done on some platforms and that
> resulted finally in the double eval. So I would consider the
> above a little step for a man, but a big leap backward for
> mankind.
>
> Instead, the result of the double eval must get special
> characters quoted in some way.
I just looked at the man for make on Solaris, Digital UNIX, HP-UX, and
IRIX and all support $() and ${} for variable expansion. BTW, I also
looked at the Makefile generated by Tk and it assumes make can handle
${}. It basically does one eval of tclConfig.sh and uses the result in
make variables. As Tk assumes make can handle ${}, can we safely
assume the same? With this, we'd do one eval rather than two before.
This is the same as the sed line I posted because everything in
tclConfig.sh is VAR='VAL' so the one eval would just strip the single
quotes (which sed did). But, if tclConfig.sh changes to some use of
double quotes in the future, we won't break.
> Jan
--
albert chin (china@thewrittenword.com)