Stefan wrote:
Catch got passed a string in which the command substitution happened before, so it could not catch the error thrown by 'exec'. The string match for error messages afterwards was relying on an english language setting and did not
even match the english error message of whoami from coreutils.

Can you provide more information about your environment, in particular how whoami(1) failed?

This code dates back to the beginning of the repository history and ChangeLog-1992 suggests that it likely originated in 1993 or 1994. Those error messages presumably are from some particular (now archaic) environment that did not have whoami(1), but unless Tcl's evaluation semantics have changed, this misuse of catch(n) should have blown up then, too. I am a bit confused how this could have gone unnoticed for so long. If you are actually the first person to have tried running DejaGnu on a system lacking both of the USER and LOGNAME environment variables and the whoami(1) command, I am not sure that the fallback for a missing whoami(1) is still relevant. (If it never worked, then I am unsure that it was ever relevant.)

On a side note, a thorough audit of the code base for misuses of eval-like commands (including catch) is planned as the solution to PR44602 (DejaGnu fails if run in a directory where the full absolute name contains spaces).


-- Jacob

Reply via email to