tcsh-org / tcsh

This is a read-only mirror of the tcsh code repository.
https://www.tcsh.org/
Other
238 stars 42 forks source link

Fix variable expansion on expressions. #107

Open Krush206 opened 3 months ago

Krush206 commented 3 months ago

It's known variables expand earlier than expression evaluations. The procedure

if ( $?a && "$a" != ) echo "$a"

would fail if a isn't set. The correct behavior is to evaluate $?a first, and, if expanded to zero, cancel further processing.

This work remedies the issue by postponing variable expansions during expression evaluations. The function Dfix1 is used for I/O redirections, and fails if the expansion is null or, if not quoted, larger than one word/vector. I believe this behavior is fine.

This work was also supposed to fix $< expansions on pipes and redirections. I had some success with a fix, but ends up blocking the shell, making it unusable and uninterruptible.