Thanks for the code example. This was very helpful.
This seems to work. However, there is a small problem. In Finder the
alias appears as a file alias not a dir alias . The alias functions
correctly but does not look right.
From: Chris Nandor <[EMAIL PROTECTED]>
Date: November 6, 2006 7:22:39 PM PST
To: macosx@perl.org
Subject: Re: Code Examples for NewAlias
In article <[EMAIL PROTECTED]>,
[EMAIL PROTECTED] (Paul McCann) wrote:
http://use.perl.org/~pudge/journal/10437
Thanks Paul. I knew I had this code somewhere, but couldn't find
it. :-)
Here's a slightly cleaned-up version.
#!/usr/bin/perl
use warnings;
use strict;
use MacPerl qw(GetFileInfo);
use Mac::AppleEvents qw(typeAlias);
use Mac::Errors;
use Mac::Files;
use Mac::Resources;
my $target = '/Users/pudge/Desktop/foo';
my $alias = '/Users/pudge/Desktop/foo alias';
# get target's creator, type, and alias
my($creator, $type) = GetFileInfo($target);
my $alis = NewAlias($target) or die
$Mac::Errors::MacError;
# make resource file, open it, add the resource, and close it
FSpCreateResFile($alias, $creator, $type, 0) or die
$Mac::Errors::MacError;
my $res = FSpOpenResFile($alias, 0) or die
$Mac::Errors::MacError;
AddResource($alis, typeAlias, 0, '') or die
$Mac::Errors::MacError;
CloseResFile($res);
# set "alias" attribute
my $finfo = FSpGetFInfo($alias) or die
$Mac::Errors::MacError;
$finfo->fdFlags( $finfo->fdFlags | kIsAlias );
FSpSetFInfo($alias, $finfo) or die
$Mac::Errors::MacError;
--
Chris Nandor [EMAIL PROTECTED] http://pudge.net/
Open Source Technology Group [EMAIL PROTECTED] http://ostg.com/
Regards,
Laurence Haynes