Merged in Governor-Tarkin/swg-src (pull request #17)
[swg-src.git] / tools / translateExceptionDirectories.pl
blob6ea08413b4dbea936b52f4f9cabfd0c5640b7613
1 die "usage: $0 ProgramName.exe PathToExceptionDirectories\n" if (@ARGV != 2);
3 my $debug = 1;
5 $program = shift;
6 $dir = shift;
8 opendir(DIR, $dir) || die "could not open directory $dir\n";
9 my @filenames = readdir(DIR);
10 closedir(DIR);
12 # ignore . and ..
13 shift @filenames;
14 shift @filenames;
16 # sort them just to be nice
17 @filenames = sort @filenames;
19 # create the temp file of all the addresses
20 open(TMP, ">excepts.tmp");
21 foreach(@filenames)
23 print "look up $_\n" if ($debug);
24 print TMP "0x", $_, "\n";
26 close(TMP);
28 # create descriptions files for all the addresses
29 open(ADDR2LINE, "AddressToLine $program < excepts.tmp |");
30 while (<ADDR2LINE>)
32 chomp;
34 $address = shift(@filenames);
36 # ignore symbols we couldn't look up
37 if (/^unknown/i)
39 print "$address unknown\n" if ($debug);
40 next;
43 # strip off the path
44 s/^.*[\\\/]//;
46 # don't overwrite existing descriptions
47 $desc = "$dir/$address/_description.txt";
48 if (! -e $desc)
50 open(DESC, ">$desc") || die "could not open $desc for writing\n";
51 print DESC $_, "\n";
52 close(DESC);
54 print "$address $desc\n" if ($debug);
58 close(ADDR2LINE);