[net.bugs.4bsd] bug in csh "@" command

jeff (03/30/83)

The csh statements
	set tt = 0
	set t1 = 0
	  @ tt = 0
are processed properly and do the expected thing.

However, the statement
	  @ t1 = 0
fails with the message  "@: Syntax error.".

The problem occurs because the @ command disallows variable names containing
integers.  I can't concoct a good justification for this - it looks like a
simple oversight to me.  At any rate, it disagrees with the documentation.

The @ command is processed by the routine dolet() in file sh.set.c.
A quick inspection shows that variable names are parsed by the statements
	for (vp = p; letter(*p); p++)
		continue;
	if (vp == p)
		goto letsyn;

I believe that this should be changed to
	for (vp = p; alnum(*p); p++)
		continue;		/* step over the variable name */
	if (vp == p || !letter(*vp))
		goto letsyn;		/* the name must be non-null and begin
					   with a letter */

	Jeff Stearns     ...!decvax!microsoft!fluke!jeff
	John Fluke Mfg. Co., Everett WA.  (206) 356-5064

BTW, here's one that *is* accepted:
	set 1 = 2
The set statement is processed by the function doset() in sh.set.c; analogous
changes to that function would correct this anomaly as well.