Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!watmath!clyde!floyd!harpo!seismo!hao!hplabs!sri-unix!v.wales@ucla-locus
From: v.wales%ucla-locus@sri-unix.UUCP
Newsgroups: net.unix-wizards
Subject: Re: "set noglob" in "tset"
Message-ID: <16490@sri-arpa.UUCP>
Date: Tue, 7-Feb-84 12:32:45 EST
Article-I.D.: sri-arpa.16490
Posted: Tue Feb  7 12:32:45 1984
Date-Received: Fri, 10-Feb-84 03:17:38 EST
Lines: 33

From:            Rich Wales 

Phil --

This is in response to your question about why "tset -s" doesn't gener-
ate a "set noglob" as well as an "unset noglob".  That is, why do you
have to say

			set noglob
			eval `tset -sQ`

Actually, "tset -s" does generate a "set noglob" (at least, some ver-
sions do).  However, a bug or misfeature in the C shell prevents this
command from having the desired effect.

The problem is that the builtin C-shell command "eval" parses its entire
argument list before executing anything.  In particular, "eval" performs
any necessary wildcard expansion before trying to do anything.  Hence, a
"set noglob" included as part of the "eval" argument is not executed
until after wildcard expansion in the TERMCAP value has already taken
place.

I suspect that the above-described behaviour of the "eval" command is
too firmly entrenched in the inner recesses of the C shell to be fixed
(though I would love to hear from anyone who knows otherwise); hence the
evasive manoeuvre of sticking in a "set noglob" before the "eval".

Another thing to note about "tset", by the way:  I once fixed our "tset"
so that it would output "\041" instead of "!", and "\140" instead of
"`", in the TERMCAP string.  It seems that the C shell insists these two
characters are magic whether or not "noglob" is set.

-- Rich