echo bug in 4.{2,3}BSD /bin/csh
Tony Birnseth
tonyb at tektools.UUCP
Fri Dec 12 14:29:29 AEST 1986
Index: /bin/csh 4.3BSD
Description:
Repeative echo's trim the quote bits off words.
Quote bits should not be trimed. Addtionally, the '-n' option
should be valid even if it were quoted.
Repeat by:
% repeat 3 echo '/genvmu*'
/genvmu*
/genvmunix
/genvmunix
Output should be:
% repeat 3 echo '/genvmu*'
/genvmu*
/genvmu*
/genvmu*
Fix:
Don't trim the quote bits off words before output.
Check for a quoted '-n' option as well.
Apply the following diff to sh.func.c and define -DTEK_BUGS in
'DEFS' in the Makefile.
*** /tmp/,RCSt1027852 Thu Dec 11 17:03:03 1986
--- sh.func.c Thu Dec 11 16:58:59 1986
***************
*** 743,748
v = glob(v);
if (v == 0)
bferr("No match");
} else
trim(v);
if (sep == ' ' && *v && !strcmp(*v, "-n"))
--- 751,768 -----
v = glob(v);
if (v == 0)
bferr("No match");
+ #ifdef TEK_BUGS
+ }
+ /*
+ * Don't trim quote bit in case we are repeating - rdoty at tek
+ * Repeat by "repeat 3 echo -n '/genvmu*'"
+ * should produce: /genvmu*/genvmu*/genvmu*
+ */
+ if( sep == ' ' && *v
+ && ( (*v)[0]&TRIM == '-' && (*v)[1]&TRIM == 'n' && (*v)[2]&TRIM == '\0' )
+ || !strcmp(*v, "-n") )
+ nonl++, v++;
+ #else
} else
trim(v);
if (sep == ' ' && *v && !strcmp(*v, "-n"))
***************
*** 747,752
trim(v);
if (sep == ' ' && *v && !strcmp(*v, "-n"))
nonl++, v++;
while (cp = *v++) {
register int c;
--- 767,773 -----
trim(v);
if (sep == ' ' && *v && !strcmp(*v, "-n"))
nonl++, v++;
+ #endif TEK_BUGS
while (cp = *v++) {
register int c;
More information about the Comp.bugs.4bsd.ucb-fixes
mailing list