[comp.lang.perl] Bugs with Perl on Irix 3.3.2

mikef@borg.lerc.nasa.gov (Mike J. Fuller) (06/25/91)

Just in case anyone is interested, the following Perl script which I use to
start AMD fails to work correctly under Irix 3.3.2:

#! /usr/local/bin/perl

$amd = "/usr/local/etc/amd";
$master = "amd.master";

open (YPCAT, "ypcat -k $master |") || die "Cannot open pipe from ypcat.\n";
$args = "-p -r -a /tmp_mnt -l syslog";

while (<YPCAT>) {
	chop;
	split;
	if ( -d "$_[0]" || ("$_[2]" !~ /direct/)) {
		$args = "$args $_";
	}
}

close(YPCAT);
exec "$amd $args > /etc/amd.pid";
die "Failed to exec amd.\n";

The -d "$_[0]" always evaluates true, causing every directory in the map to be
automounted.  I tried a simple Perl script like:

if ( -d "/tmp/foo" ) {
	print "Foo.\n";
}

and it worked correctly for the cases when "/tmp/foo" didn't exist, was a
directory, and was a plain file.  Since I am used to the Mips compilers being
Buggs Bunny, I recompiled Perl with GCC and it now works correctly.
Incidently, if you want to compile Perl with GCC under Irix 3.3.2, the first
line of perly.c which reads:

extern char *malloc(), *realloc();

will have to be changed to:

extern void *malloc(), *realloc();

or commented out after the YACC run.

/-----------------------------------------------------------------------------\
| Mike J. Fuller | Internet: mikef@sarah.lerc.nasa.gov      |     "I hate     |
|----------------|           mikef@zippysun.math.uakron.edu |   quotations."  |
|/\/\/\/\/\/\/\/\| Bitnet:   r3mjf1@akronvm                 | -- R.W. Emerson |
\-----------------------------------------------------------------------------/