/usr/share/perl5/File/HomeDir/Darwin/Cocoa.pm is in libfile-homedir-perl 1.00-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | package File::HomeDir::Darwin::Cocoa;
use 5.00503;
use strict;
use Cwd ();
use Carp ();
use File::HomeDir::Darwin ();
use vars qw{$VERSION @ISA};
BEGIN {
$VERSION = '1.00';
@ISA = 'File::HomeDir::Darwin';
# Load early if in a forking environment and we have
# prefork, or at run-time if not.
local $@;
eval "use prefork 'Mac::SystemDirectory'";
}
#####################################################################
# Current User Methods
sub my_home {
my $class = shift;
# A lot of unix people and unix-derived tools rely on
# the ability to overload HOME. We will support it too
# so that they can replace raw HOME calls with File::HomeDir.
if ( exists $ENV{HOME} and defined $ENV{HOME} ) {
return $ENV{HOME};
}
require Mac::SystemDirectory;
return Mac::SystemDirectory::HomeDirectory();
}
# from 10.4
sub my_desktop {
my $class = shift;
require Mac::SystemDirectory;
eval {
$class->_find_folder(Mac::SystemDirectory::NSDesktopDirectory())
}
||
$class->SUPER::my_desktop;
}
# from 10.2
sub my_documents {
my $class = shift;
require Mac::SystemDirectory;
eval {
$class->_find_folder(Mac::SystemDirectory::NSDocumentDirectory())
}
||
$class->SUPER::my_documents;
}
# from 10.4
sub my_data {
my $class = shift;
require Mac::SystemDirectory;
eval {
$class->_find_folder(Mac::SystemDirectory::NSApplicationSupportDirectory())
}
||
$class->SUPER::my_data;
}
# from 10.6
sub my_music {
my $class = shift;
require Mac::SystemDirectory;
eval {
$class->_find_folder(Mac::SystemDirectory::NSMusicDirectory())
}
||
$class->SUPER::my_music;
}
# from 10.6
sub my_pictures {
my $class = shift;
require Mac::SystemDirectory;
eval {
$class->_find_folder(Mac::SystemDirectory::NSPicturesDirectory())
}
||
$class->SUPER::my_pictures;
}
# from 10.6
sub my_videos {
my $class = shift;
require Mac::SystemDirectory;
eval {
$class->_find_folder(Mac::SystemDirectory::NSMoviesDirectory())
}
||
$class->SUPER::my_videos;
}
sub _find_folder {
my $class = shift;
my $name = shift;
require Mac::SystemDirectory;
my $folder = Mac::SystemDirectory::FindDirectory($name);
return undef unless defined $folder;
unless ( -d $folder ) {
# Make sure that symlinks resolve to directories.
return undef unless -l $folder;
my $dir = readlink $folder or return;
return undef unless -d $dir;
}
return Cwd::abs_path($folder);
}
1;
=pod
=head1 NAME
File::HomeDir::Darwin::Cocoa - Find your home and other directories on Darwin (OS X)
=head1 DESCRIPTION
This module provides Darwin-specific implementations for determining
common user directories using Cocoa API through
L<Mac::SystemDirectory>. In normal usage this module will always be
used via L<File::HomeDir>.
Theoretically, this should return the same paths as both of the other
Darwin drivers.
Because this module requires L<Mac::SystemDirectory>, if the module
is not installed, L<File::HomeDir> will fall back to L<File::HomeDir::Darwin>.
=head1 SYNOPSIS
use File::HomeDir;
# Find directories for the current user
$home = File::HomeDir->my_home; # /Users/mylogin
$desktop = File::HomeDir->my_desktop; # /Users/mylogin/Desktop
$docs = File::HomeDir->my_documents; # /Users/mylogin/Documents
$music = File::HomeDir->my_music; # /Users/mylogin/Music
$pics = File::HomeDir->my_pictures; # /Users/mylogin/Pictures
$videos = File::HomeDir->my_videos; # /Users/mylogin/Movies
$data = File::HomeDir->my_data; # /Users/mylogin/Library/Application Support
=cut
|