--- /dev/null
+#! perl
+$win_flag = "WIN32##";
+@wflags = ();
+$mit_specific = 0;
+@ignore_list = ( "DOS#?#?" );
+
+foreach $arg (@ARGV) {
+ if ($arg =~ /^-/) { push @wflags, $arg; }
+ if ("--mit" eq $arg) {
+ $mit_specific = 1;
+ } elsif ("--win16" eq $arg) {
+ $win_flag = "WIN16##";
+ } elsif ("--win32" eq $arg) {
+ $win_flag = "WIN32##";
+ } elsif ($arg =~ /^--enable-/) {
+ my($a) = $arg . "##";
+ $a =~ s/^--enable-//;
+ $a =~ tr/a-z/A-Z/;
+ push @ignore_list, $a;
+ } elsif ($arg =~ /^--ignore=/) {
+ my($a) = $arg;
+ $a =~ s/--ignore=//;
+ push @ignore_list, $a;
+ } elsif ($arg =~ /^-/) {
+ print STDERR "Invalid option '$arg'\n";
+ exit 1;
+ } else {
+ if (! defined $dir) {
+ $dir = $arg;
+ }
+ }
+}
+push @ignore_list, $win_flag;
+push @ignore_list, "MIT##" if $mit_specific;
+
+if ($#wflags >= 0) { printf "WCONFIG_FLAGS=%s\n", join (" ", @wflags); }
+
+# This has a couple variations from the old wconfig.c.
+#
+# The old script wouldn't treat the input strings as regular expressions.
+# This one does, and actually it builds one regexp, so the strict order of
+# checks done by wconfig.c no longer applies.
+#
+# And the old script would change "##DOS#" to "#", whereas this
+# version (with the regexp given above) will accept and discard 0, 1
+# or 2 "#" marks.
+$sub = "sub do_subst { my (\$a) = shift; \$a =~ s/^##(" . join("|", @ignore_list) . ")//; return \$a; }";
+#print STDERR $sub, "\n";
+eval $sub;
+
+sub process {
+ my $fh = shift;
+ while (<$fh>) {
+ if (/^@/) {
+ # This branch isn't actually used as far as I can tell.
+ print "\n";
+ next;
+ }
+ # Do we want to do any autoconf-style @FOO@ substitutions?
+ # s/@MAINT@/#/g;
+ # Are there any options we might want to set at configure time?
+ print &do_subst($_);
+ }
+}
+
+if (defined $dir) {
+ open AUX, "<$dir/win-pre.in" || die "Couldn't open win-pre.in: $!\n";
+ &process(\*AUX);
+ close AUX;
+}
+&process(\*STDIN);
+if (defined $dir) {
+ open AUX, "<$dir/win-post.in" || die "Couldn't open win-post.in: $!\n";
+ &process(\*AUX);
+ close AUX;
+}
+exit 0;