aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/sortdin
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/sortdin')
-rwxr-xr-xwinsup/cygwin/sortdin35
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;