6 my $seen_leak_check = 0;
7 my $seen_num_callers = 0;
11 my $topsrc = &find_topsrc
();
13 for (my $i = 0; $i < @ARGV;) {
16 $seen_leak_check = 1 if $a =~ /^--leak-check\b/;
17 $seen_num_callers = 1 if $a =~ /^--num-callers\b/;
21 die "$0: failed to understand command line.\n";
24 push @cmd, "$topsrc/libtool", "--mode=execute";
30 die "$0: usage $0 [valgrind options] gnumeric [gnumeric-options]\n"
33 &add_debug_flag
('G_SLICE', 'always-malloc');
34 &add_debug_flag
('GNM_DEBUG', 'valgrind-bitfield-workarounds');
35 if ($seen_leak_check) {
36 &add_debug_flag
('G_DEBUG', 'resident-modules');
37 &add_debug_flag
('GNM_DEBUG', 'close-displays');
40 push @cmd, 'valgrind';
41 push @cmd, '--num-callers=40' unless $seen_num_callers;
42 push @cmd, "--suppressions=$topsrc/test/common.supp";
43 push @cmd, "--suppressions=$topsrc/test/gui.supp";
46 print STDERR
"Executing ", join (' ', map { "earg
($_) } @cmd), "\n" if $verbose;
48 or die "$0: failed to execute valgrind.\n";
54 if (exists $ENV{$var}) {
55 foreach my $f2 (split (':', $ENV{$var})) {
56 return if $f2 eq $flag;
58 $ENV{$var} .= ":$flag";
62 print STDERR
"Setting $var=", $ENV{$var}, "\n" if $verbose;
69 if (-r
"$dir/configure" && -r
"$dir/gnumeric.xsd") {
80 if (-r
"$dir/configure" && -r
"$dir/gnumeric.xsd") {
90 die "$0: Cannot find top-level directory.\n";
96 return $arg if $arg =~ m{^[-a-zA-Z0-9_/=.,]+$};
97 return "'$arg'" if $arg =~ m{^[-a-zA-Z0-9_/=., *?<>%&^!@#]*$};
101 if ($arg =~ m{^([-a-zA-Z0-9_/=.,]+)}) {
103 $arg = substr ($arg, length $1);
105 $res .= "\\" . substr ($arg, 0, 1);
106 $arg = substr ($arg, 1);