/usr/share/perl5/File/HomeDir/Unix.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 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | package File::HomeDir::Unix;
# See POD at the end of the file for documentation
use 5.00503;
use strict;
use Carp ();
use File::HomeDir::Driver ();
use vars qw{$VERSION @ISA};
BEGIN {
$VERSION = '1.00';
@ISA = 'File::HomeDir::Driver';
}
#####################################################################
# Current User Methods
sub my_home {
my $class = shift;
my $home = $class->_my_home(@_);
# On Unix in general, a non-existant home means "no home"
# For example, "nobody"-like users might use /nonexistant
if ( defined $home and ! -d $home ) {
$home = undef;
}
return $home;
}
sub _my_home {
my $class = shift;
if ( exists $ENV{HOME} and defined $ENV{HOME} ) {
return $ENV{HOME};
}
# This is from the original code, but I'm guessing
# it means "login directory" and exists on some Unixes.
if ( exists $ENV{LOGDIR} and $ENV{LOGDIR} ) {
return $ENV{LOGDIR};
}
### More-desperate methods
# Light desperation on any (Unixish) platform
SCOPE: {
my $home = (getpwuid($<))[7];
return $home if $home and -d $home;
}
return undef;
}
# On unix by default, everything is under the same folder
sub my_desktop {
shift->my_home;
}
sub my_documents {
shift->my_home;
}
sub my_data {
shift->my_home;
}
sub my_music {
shift->my_home;
}
sub my_pictures {
shift->my_home;
}
sub my_videos {
shift->my_home;
}
#####################################################################
# General User Methods
sub users_home {
my ($class, $name) = @_;
# IF and only if we have getpwuid support, and the
# name of the user is our own, shortcut to my_home.
# This is needed to handle HOME environment settings.
if ( $name eq getpwuid($<) ) {
return $class->my_home;
}
SCOPE: {
my $home = (getpwnam($name))[7];
return $home if $home and -d $home;
}
return undef;
}
sub users_desktop {
shift->users_home(@_);
}
sub users_documents {
shift->users_home(@_);
}
sub users_data {
shift->users_home(@_);
}
sub users_music {
shift->users_home(@_);
}
sub users_pictures {
shift->users_home(@_);
}
sub users_videos {
shift->users_home(@_);
}
1;
=pod
=head1 NAME
File::HomeDir::Unix - Find your home and other directories on legacy Unix
=head1 SYNOPSIS
use File::HomeDir;
# Find directories for the current user
$home = File::HomeDir->my_home; # /home/mylogin
$desktop = File::HomeDir->my_desktop; # All of these will...
$docs = File::HomeDir->my_documents; # ...default to home...
$music = File::HomeDir->my_music; # ...directory
$pics = File::HomeDir->my_pictures; #
$videos = File::HomeDir->my_videos; #
$data = File::HomeDir->my_data; #
=head1 DESCRIPTION
This module provides implementations for determining common user
directories. In normal usage this module will always be
used via L<File::HomeDir>.
=head1 SUPPORT
See the support section the main L<File::HomeDir> module.
=head1 AUTHORS
Adam Kennedy E<lt>adamk@cpan.orgE<gt>
Sean M. Burke E<lt>sburke@cpan.orgE<gt>
=head1 SEE ALSO
L<File::HomeDir>, L<File::HomeDir::Win32> (legacy)
=head1 COPYRIGHT
Copyright 2005 - 2011 Adam Kennedy.
Some parts copyright 2000 Sean M. Burke.
This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the
LICENSE file included with this module.
=cut
|