=head1 NAME

Mac::MoreFiles - Sophisticated file management routines

=head1 SYNOPSIS

    use Mac::MoreFiles;

    $application = $Application{"MrPL"};

=head1 DESCRIPTION

=cut

use strict;

package Mac::MoreFiles;

BEGIN {
	use MacPerl ();
	use Mac::Processes ();
	use Exporter   ();
	use DynaLoader ();
	
	use vars qw($VERSION @ISA @EXPORT %Application);
	$VERSION = '1.03';
	@ISA = qw(Exporter DynaLoader);
	@EXPORT = qw(
		FSpCreateMinimum
		FSpShare
		FSpUnshare
		FSpFileCopy
		FSpDirectoryCopy
		FSpIterateDirectory
		FSpDTGetAPPL
		FSpDTSetComment
		FSpDTGetComment
		FSpDTCopyComment
		
		%Application
	);
}

package Mac::MoreFiles::_ApplHash;

BEGIN {
	use Tie::Hash ();

	use vars qw(@ISA);
	
	@ISA = qw(Tie::StdHash);
}

sub FETCH {
	my($self, $id) = @_;

	if (!$self->{$id}) {
		my($app);
		if ($^O eq 'MacOS') {
			for my $vol (MacPerl::Volumes()) {
				$app = Mac::MoreFiles::FSpDTGetAPPL(hex(substr($vol, 1, 4)), $id);
				last if $app;
			}
		} else {
			$app = Mac::Processes::LSFindApplicationForInfo($id);
		}
		$self->{$id} = $app;
	}
	return $self->{$id};
}

package Mac::MoreFiles;

=head2 Variables

=over 4

=item %Application

The C<%Application> hash will return the path to the application for a given 
signature, searching on all mounted volumes.

=back

=cut
tie %Application, q(Mac::MoreFiles::_ApplHash);

bootstrap Mac::MoreFiles;

=include MF.xs

=head1 AUTHOR

Written by Matthias Ulrich Neeracher E<lt>neeracher@mac.comE<gt>,
documentation by Bob Dalgleish E<lt>bob.dalgleish@sasknet.sk.caE<gt>.
Currently maintained by Chris Nandor E<lt>pudge@pobox.comE<gt>.

=cut

1;

__END__
