+2007-05-16 Noah Misch <noah@cs.caltech.edu>
+
+ * bin/autoconf.as: Handle `-' just like other input files.
+ * bin/autom4te.in (parse_args): Pass `-' through.
+ (handle_output): Skip the forbidden token search if we read from stdin.
+ (up_to_date): Always treat stdin as out of date.
+ * tests/tools.at (autoconf: input from stdin): New test.
+ (autoconf: forbidden tokens, basic): Check a second `autoconf' run.
+
2007-05-16 Stepan Kasal <kasal@ucw.cz>
* tests/foreign.at tests/semantics.at, tests/tools.at: Remove
my @argv;
foreach (@ARGV)
{
- if (/\.m4f$/)
+ if ($_ eq '-')
+ {
+ push @argv, $_;
+ }
+ elsif (/\.m4f$/)
{
# Frozen files are optional => pass a `?' to `find_file'.
my $file = find_file ("$_?", @include);
# Locate the forbidden words in the last input file.
# This is unsatisfying but...
- my $prohibited = '\b(' . join ('|', keys %prohibited) . ')\b';
- my $file = new Autom4te::XFile ($ARGV[$#ARGV]);
$exit_code = 1;
-
- while ($_ = $file->getline)
+ if ($ARGV[$#ARGV] ne '-')
{
- # Don't complain in comments. Well, until we have something
- # better, don't consider `#include' etc. are comments.
- s/\#.*//
- unless /^\#(if|include|endif|ifdef|ifndef|define)\b/;
-
- # Complain once per word, but possibly several times per line.
- while (/$prohibited/)
+ my $prohibited = '\b(' . join ('|', keys %prohibited) . ')\b';
+ my $file = new Autom4te::XFile ($ARGV[$#ARGV]);
+
+ while ($_ = $file->getline)
{
- my $word = $1;
- warn_forbidden ("$ARGV[$#ARGV]:$.", $word, %forbidden);
- delete $prohibited{$word};
- # If we're done, exit.
- return
- if ! %prohibited;
- $prohibited = '\b(' . join ('|', keys %prohibited) . ')\b';
+ # Don't complain in comments. Well, until we have something
+ # better, don't consider `#include' etc. to be comments.
+ s/\#.*//
+ unless /^\#(if|include|endif|ifdef|ifndef|define)\b/;
+
+ # Complain once per word, but possibly several times per line.
+ while (/$prohibited/)
+ {
+ my $word = $1;
+ warn_forbidden ("$ARGV[$#ARGV]:$.", $word, %forbidden);
+ delete $prohibited{$word};
+ # If we're done, exit.
+ return
+ if ! %prohibited;
+ $prohibited = '\b(' . join ('|', keys %prohibited) . ')\b';
+ }
}
}
warn_forbidden ("$output:$prohibited{$_}", $_, %forbidden)
# We depend at least upon the arguments.
my @dep = @ARGV;
+ # stdin is always out of date.
+ if (grep { $_ eq '-' } @dep)
+ { return 0 }
+
# Files may include others. We can use traces since we just checked
# if they are available.
handle_traces ($req, "$tmp/dependencies",
configure.ac:5: error: possibly undefined macro: _AS@&t@_BAR
configure.ac:6: error: possibly undefined macro: d@&t@nl
]])
+# Second run should succeed and yield no output.
+AT_CHECK([autoconf])
AT_CLEANUP
AT_CLEANUP
+# autoconf: input from stdin
+# --------------------------
+AT_SETUP([autoconf: input from stdin])
+
+# Past Autoconf versions failed to read from stdin when other, non-frozen input
+# files were present.
+AT_DATA([aclocal.m4])
+
+AT_CHECK([echo 'AC_INIT(X, 1.0, bug-autoconf@gnu.org)' | autoconf -t AC_INIT -],
+ 0, [stdin:1:AC_INIT:X:1.0:bug-autoconf@gnu.org
+])
+AT_CHECK([echo 'AC_INIT(X, 2.0, bug-autoconf@gnu.org)' | autoconf -t AC_INIT -],
+ 0, [stdin:1:AC_INIT:X:2.0:bug-autoconf@gnu.org
+])
+
+AT_CLEANUP
+