2 # -----------------------------------------------------------------------------
5 use lib
($0 =~ m
|^(.*/)| ?
$1 : ".");
8 &message
("Check that vba roundtrips through xls");
10 my $src = "$samples/vba-725220.xls";
11 &GnumericTest
::report_skip
("file $src does not exist") unless -r
$src;
13 my $gsf = &GnumericTest
::find_program
("gsf");
15 my $dir1 = &gsf_list
($src);
19 $tmp =~ s
|\
..*|-tmp
.xls
|;
20 &GnumericTest
::junkfile
($tmp);
21 system ("$ssconvert $src $tmp");
22 my $dir2 = &gsf_list
($tmp);
24 foreach my $f (sort keys %$dir1) {
25 next unless ($f eq "\001Ole" ||
26 $f eq "\001CompObj" ||
27 $f =~ m{^_VBA_PROJECT_CUR/});
29 $fprint =~ s{\001}{\\001};
30 if (!exists $dir2->{$f}) {
31 die "$0: member $fprint is missing after conversion.\n";
32 } elsif ($dir1->{$f} ne $dir2->{$f}) {
33 die "$0: member $fprint changed length during conversion.\n";
35 my $d1 = `$gsf cat '$src' '$f'`;
36 my $d2 = `$gsf cat '$tmp' '$f'`;
37 if (length ($d1) ne $dir1->{$f}) {
38 print "Member $fprint is strange\n";
39 } elsif ($d1 eq $d2) {
40 print "Member $fprint is ok\n";
42 die "$0: member $fprint changed contents during conversion.\n";
52 open (FIL
, "$gsf list '$fn' | ") or die "Cannot parse $fn: $!\n";
54 next unless /^f\s.*\s(\d+)\s+(.*)$/;