diff options
author | Sverker Eriksson <[email protected]> | 2012-09-28 19:21:48 +0200 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2012-09-28 19:21:48 +0200 |
commit | 9548270009eb2fbe06840e1cf2ed428650d9d04a (patch) | |
tree | 640a6617a4a6f79aa835f450c04708427207a746 /erts | |
parent | cccf365a9991a61029ef710046e11bbb78171e25 (diff) | |
download | otp-9548270009eb2fbe06840e1cf2ed428650d9d04a.tar.gz otp-9548270009eb2fbe06840e1cf2ed428650d9d04a.tar.bz2 otp-9548270009eb2fbe06840e1cf2ed428650d9d04a.zip |
Make cerl -valgrind work with quoted spaces in command line
Diffstat (limited to 'erts')
-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 |