Open MPI logo

MTT Users Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

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