package Filter::m4;
use Filter::Util::Exec;
use strict;
use warnings;
our $VERSION = '1.60';
my $m4;
my $sep;
if ($^O eq 'MSWin32') {
$m4 = 'm4.exe';
$sep = ';';
}
else {
($m4) = 'm4';
$sep = ':';
}
if (!$m4) {
require Carp;
Carp::croak("Cannot find m4\n");
}
# Check whether m4 is installed.
if (!-x $m4) {
my $foundM4 = 0;
foreach my $dir (split($sep, $ENV{PATH}), '') {
if (-x "$dir/$m4") {
$foundM4 = 1;
last;
}
}
if (!$foundM4) {
require Carp;
Carp::croak("Cannot find m4\n");
}
}
sub import
{
my ($self, @args) = @_;
my $m4arg = '';
foreach my $arg (@args) {
if ($arg eq 'prefix') {
$m4arg = '-P';
}
else {
require Carp;
Carp::croak("Unrecognized argument $arg\n");
}
}
if ($^O eq 'MSWin32') {
Filter::Util::Exec::filter_add($self, 'cmd', '/c',
"m4.exe $m4arg 2>nul");
}
else {
Filter::Util::Exec::filter_add ($self, 'sh', '-c',
"m4 $m4arg 2>/dev/null");
}
}
1;
__END__
=head1 NAME
Filter::m4 - M4 source filter
=head1 SYNOPSIS
use Filter::m4;
use Filter::m4 'prefix';
=head1 DESCRIPTION
This source filter pipes the current source file through the M4 macro
processor (C