diff options
author | Sverker Eriksson <[email protected]> | 2012-10-23 17:56:16 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2012-10-23 17:56:16 +0200 |
commit | 49b7b5d5158f89fb4bee068719d000d6c753fdcd (patch) | |
tree | 6677ca88f4f62d2a9bf4ca41f1288680db1a07d8 | |
parent | 5f3a7727464522da88d07a3012aa87b8703e3f3a (diff) | |
parent | 9548270009eb2fbe06840e1cf2ed428650d9d04a (diff) | |
download | otp-49b7b5d5158f89fb4bee068719d000d6c753fdcd.tar.gz otp-49b7b5d5158f89fb4bee068719d000d6c753fdcd.tar.bz2 otp-49b7b5d5158f89fb4bee068719d000d6c753fdcd.zip |
Merge branch 'sverk/valgrind-quoting'
* sverk/valgrind-quoting:
Make cerl -valgrind work with quoted spaces in command line
-rw-r--r-- | erts/etc/common/erlexec.c | 3 | ||||
-rw-r--r-- | erts/etc/unix/cerl.src | 15 |
2 files changed, 11 insertions, 7 deletions
diff --git a/erts/etc/common/erlexec.c b/erts/etc/common/erlexec.c index 52add1c1ba..04d3425fe0 100644 --- a/erts/etc/common/erlexec.c +++ b/erts/etc/common/erlexec.c @@ -989,8 +989,7 @@ int main(int argc, char **argv) if (print_args_exit) { for (i = 1; i < EargsCnt; i++) - printf("%s ", Eargsp[i]); - printf("\n"); + printf("%s\n", Eargsp[i]); exit(0); } diff --git a/erts/etc/unix/cerl.src b/erts/etc/unix/cerl.src index e0d7404de7..651452e531 100644 --- a/erts/etc/unix/cerl.src +++ b/erts/etc/unix/cerl.src @@ -267,11 +267,16 @@ if [ "x$GDB" = "x" ]; then valgrind_misc_flags="$VALGRIND_MISC_FLAGS" fi beam_args=`$EXEC -emu_args_exit ${1+"$@"}` - # Ahhhh... Need to quote $PROGNAME... - early_beam_args=`echo $beam_args | sed "s|^\(.*-progname\).*$|\1|g"` - late_beam_args=`echo $beam_args | sed "s|^$pre_beam_args.*\(-- -home.*\)$|\1|g"` - - exec valgrind $valgrind_xml $valgrind_log $valgrind_misc_flags $BINDIR/$EMU_NAME $emu_xargs $early_beam_args "$PROGNAME" $late_beam_args -pz $PRELOADED + + # Time for some argument passing voodoo: + # $beam_args is a list of command line arguments separated by newlines. + # Make "$@" represent those arguments verbatim (including spaces and quotes). + SAVE_IFS="$IFS" + IFS=' +' + set -- $beam_args + IFS="$SAVE_IFS" + exec valgrind $valgrind_xml $valgrind_log $valgrind_misc_flags $BINDIR/$EMU_NAME $emu_xargs "$@" -pz $PRELOADED else exec $EXEC $eeargs $xargs ${1+"$@"} fi |