diff options
Diffstat (limited to 'winsup/cygwin/sortdin')
-rwxr-xr-x | winsup/cygwin/sortdin | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/winsup/cygwin/sortdin b/winsup/cygwin/sortdin new file mode 100755 index 0000000..bdb4323 --- /dev/null +++ b/winsup/cygwin/sortdin @@ -0,0 +1,35 @@ +#!/usr/bin/perl + +my %data = (); +my %code = (); + +my @out = (); + +my $fn = $ARGV[0]; + +while (<>) { + push(@out, $_); + /^\s*exports/i and last; +} + +while (<>) { + my $key; + $arr = /\sDATA\s*$/o ? \%data : \%code; + $_ =~ s/^\s+//; + my $key = (split(' ', $_))[0]; + substr($key, 0, 1) = '' if /^_/o; + chomp $key; + $arr->{$key}->{$_} = 1; +} + +for my $k (sort keys %data) { + push(@out, sort {$b cmp $a} keys %{$data{$k}}); +} + +for my $k (sort keys %code) { + push(@out, sort {$b cmp $a} keys %{$code{$k}}); +} + +open(R, '>', $fn); +print R @out; +close R; |