Mac-Carbon

 view release on metacpan or  search on metacpan

Files/Files.xs  view on Meta::CPAN


=cut
Handle
NewAliasMinimalFromFullPath(name, zone=NO_INIT, server=NO_INIT)
	char *	name
	Str255	zone
	Str255	server
	CODE:
	if (items < 3)
		server[0] = 0;
	if (items < 2)
		zone[0] = 0;
	gMacPerl_OSErr = 
		NewAliasMinimalFromFullPath(strlen(name), name, zone, server, (AliasHandle *)&RETVAL);
	OUTPUT:
	RETVAL

=item UpdateAlias TARGET, ALIAS

Updates an alias to point to the target file. Returns whether the alias was changed..

=cut
Boolean
UpdateAlias(target, alias)
	FSSpec	target
	Handle	alias
	CODE:
	if (gMacPerl_OSErr = UpdateAlias(nil, &target, (AliasHandle) alias, &RETVAL)) {
		XSRETURN_UNDEF;
	}
	OUTPUT:
	RETVAL

=item UpdateAliasRelative FROM, TARGET, ALIAS

Updates an alias to point to the target file relative to FROM. Returns whether 
the alias was changed..

=cut
Boolean
UpdateAliasRelative(from, target, alias)
	FSSpec  &from
	FSSpec	&target
	Handle	alias
	CODE:
	if (gMacPerl_OSErr = UpdateAlias(&from, &target, (AliasHandle) alias, &RETVAL)) {
		XSRETURN_UNDEF;
	}
	OUTPUT:
	RETVAL

=item ResolveAlias ALIAS

Resolves an alias. In scalar context, returns the path to the resolved file.
In list context, also returns whether the alias was changed when resolving.

=cut
void
ResolveAlias(alias)
	Handle	alias
	PPCODE:
	{
		FSSpec	target;
		Boolean	changed;
		
		gMacPerl_OSErr = ResolveAlias(nil, (AliasHandle) alias, &target, &changed);
		
		if (gMacPerl_OSErr)  {
			XSRETURN_EMPTY;
		} 
		XS_XPUSH(FSSpec, target);
		if (GIMME == G_ARRAY) {
			XS_XPUSH(Boolean, changed);
		}
	}

=item ResolveAliasRelative FROM, ALIAS

Resolves an alias relative to a file. In scalar context, returns the path to the 
resolved file. In list context, also returns whether the alias was changed when 
resolving.

=cut
void
ResolveAliasRelative(from, alias)
	FSSpec	&from
	Handle	alias
	PPCODE:
	{
		FSSpec	target;
		Boolean	changed;
		
		gMacPerl_OSErr = ResolveAlias(&from, (AliasHandle) alias, &target, &changed);
		
		if (gMacPerl_OSErr)  {
			XSRETURN_EMPTY;
		} 
		XS_XPUSH(FSSpec, target);
		if (GIMME == G_ARRAY) {
			XS_XPUSH(Boolean, changed);
		}
	}

=item GetAliasInfo ALIAS, INDEX

Return a component of the alias information.

=cut
Str255
GetAliasInfo(alias, index)
	Handle	alias
	short 	index
	CODE:
	if (gMacPerl_OSErr = GetAliasInfo((AliasHandle) alias, index, RETVAL)) {
		XSRETURN_UNDEF;
	}
	OUTPUT:
	RETVAL

=item UnmountVol (VOLUMENAME | VOLUMENR)

Unmounts a volume.

=cut
MacOSRet
_UnmountVol(volName, vRefNum)
	Str255	volName
	short	vRefNum
	CODE:
	RETVAL = UnmountVol(volName, vRefNum);
	OUTPUT:
	RETVAL

=item Eject (VOLUMENAME | VOLUMENR)

B<Mac OS only.>

Ejects a volume, placing it offline.

=cut
MacOSRet
_Eject(volName, vRefNum)
	Str255	volName
	short	vRefNum
	CODE:
#ifndef MACOS_TRADITIONAL
	croak("Usage: Mac::Files::Eject unsupported in Carbon");
#else



( run in 0.817 second using v1.01-cache-2.11-cpan-5511b514fd6 )