include("../../include/msg-header.inc"); ?>
From: Ethan Mallove (ethan.mallove_at_[hidden])
Date: 2006-11-03 12:08:33
On Fri, Nov/03/2006 09:54:06AM, Jeff Squyres wrote:
> On Nov 3, 2006, at 9:46 AM, Ethan Mallove wrote:
>
> >> So just to confirm -- this works:
> >>
> >> command = ./configure --with-mpi-dir=&test_prefix(); gmake
> >>
> >> Right?
> >
> > Right. I still like doing trim_quotes before returning, so
> > that we're more forgiving in allowing ''both'' of these:
> >
> > shell_build_command = configure --with-mpi-dir=&test_prefix(); gmake
> > shell_build_command = "configure --with-mpi-dir=&test_prefix(); gmake"
>
> But what if there are cases where I *do* want quotes?
>
> I'm more in favor of being as literal as possible. What
> you type for the shell_build_command will be directly
> launched. This provides greater flexiblity for if you
> *do* need quotes. For example:
>
> shell_build_command = ./configure "CFLAGS=-g -O"
>
> In this case you definitely do not want to remove the quotes.
>
> More specifically, proper quoting handling is a really,
> really tricky task and I don't really want to tackle it.
> :-)
>
Ah, sorry I was unclear. trim_quotes (not strip_quotes) will
remove only leading and trailing quotes. But right, it would
wreck something like this:
shell_build_command = ./configure &my_cflags()
If you wanted the above to expand to:
shell_build_command = ./configure "CFLAGS=-g -O"
My last proposal would be this:
--- Index: lib/MTT/DoCommand.pm =================================================================== --- lib/MTT/DoCommand.pm (revision 411) +++ lib/MTT/DoCommand.pm (working copy) @@ -194,6 +194,11 @@ select STDOUT; $| = 1; + # Remove leading/trailing quotes, which + # protects against a common funclet syntax error + @$tokens[0] =~ s/^\"+//; + @$tokens[(@$tokens - 1)] =~ s/\"+$//; + # Run it! exec(@$tokens) || @@ -323,6 +328,11 @@ $max_stdout_lines, $max_stderr_lines) = @_; my ($fh, $filename) = tempfile(); + + # Remove leading/trailing quotes, which + # protects against a common funclet syntax error + $cmds =~ s/^\"+|\"+$//g; + print $fh ":\n$cmds\n"; close($fh); chmod(0700, $filename); ---- Point taken about being literal. My thinking is that most will be only guessing about the quoting mechanism of funclets (as I was for a bit), and there would never be a real case for sending '"cmd"' to exec(). -Ethan > -- > Jeff Squyres > Server Virtualization Business Unit > Cisco Systems > > _______________________________________________ > mtt-users mailing list > mtt-users_at_[hidden] > http://www.open-mpi.org/mailman/listinfo.cgi/mtt-users