Filesys-CygwinPaths
view release on metacpan or search on metacpan
lib/Filesys/CygwinPaths.pm view on Meta::CPAN
my @pics_to_ogle = glob("$HOME/mypics/*.jpg");
foreach my $pic (@pics_to_ogle) {
system('C:/Applications/IrfanView/iview32',
vetted_path($pic), '/bf /pos=(0,0) /one', "/title=$pic")
or die "No fun today!";
}
system('C:/Applications/IrfanView/iview32', '/killmesoftly');
OR
use Filesys::CygwinPaths ':all';
my $windows_groks_this = fullwin32path("$ENV{HOME}");
my $posix_style = fullposixpath($ENV{'USERPROFILE'});
if(posixpath($windows_groks_this) ne $posix_style)
{
print "You don't keep your bash HOME in your NT Profile dir, huh?\n";
}
=cut
sub PATHS_mode {
my $selfobj ; # OO-ready
if(ref $_[0]) {
$selfobj = shift;
}
if(not $_[0] and not defined $PATHSMODE) {
$PATHSMODE = 'cyg_mixed';
} elsif(defined $_[0]) {
my $arg = shift;
$arg eq 'cyg_mixed'?
do{ $PATHSMODE = $arg; }
: $arg eq 'cyg_posix'?
do{ $PATHSMODE = $arg; }
: $arg eq 'cyg_win32'?
do{ $PATHSMODE = $arg; }
:
do{ Carp::croak "Invalid PATHSMODE name: \"$arg\" -- "; }
; # end psuedo case / switch statement.
}
$selfobj->{'PATHSMODE'} = $PATHSMODE if defined($selfobj);
return $PATHSMODE;
}
sub _handle_tilde {
my $arg = shift;
return $arg unless $arg =~/^~/;
my $pathsep = (defined($PATHSMODE) && $PATHSMODE eq 'cyg_win32')?
'\\' : '/';
my @homey = split( /\/|$pathsep/, $arg, 2 );
Carp::croak "Cannot understand your arg: $_[0] -- " unless
$homey[0] =~/^~\w*\z/;
# pattern ' m/^~(\w+)?/ ' is tilde with optional username
$homey[0] =~ s%^~(\w*)%$1 ?
((getpwnam($1))[7] || "~$1")
: (getpwuid($>))[7]
%ex;
return join( $pathsep, $homey[0],$homey[1] );
}
sub vetted_path {
my $returnpath;
my $inpath = _handle_tilde(shift);
if(not defined $PATHSMODE) {
Carp::carp 'You ought to set $PATHSMODE'.
' before calling this subroutine!'.
"\nDefaulting to 'cyg_mixed' style. -- ";
$PATHSMODE = &PATHS_mode('cyg_mixed');
}
$returnpath =
$PATHSMODE eq 'cyg_mixed'?
do{ $returnpath = win32path($inpath);
$returnpath =~s@\\@/@g; $returnpath; }
:$PATHSMODE eq 'cyg_posix'?
posixpath($inpath)
:$PATHSMODE eq 'cyg_win32'?
win32path($inpath)
: '' # should never happen.
; # end psuedo case / switch statement
$returnpath;
}
#-----------------------------------------------------------------#
# #
# CALL THE ACTUAL XS INTERFACE C FUNCTIONS #
# #
#-----------------------------------------------------------------#
sub fullposixpath {
my ($input, $retval, $output);
$input = _handle_tilde(shift);
if( $input eq '') {
Carp::carp "No path argument supplied! -- ";
return '';
}
$output = cygwin_conv_to_full_posix_path($input);
}
sub fullwin32path {
my ($input, $retval, $output);
$input = _handle_tilde(shift);
if( $input eq '') {
Carp::carp "No path argument supplied! -- ";
return '';
}
$output = ucfirst
cygwin_conv_to_full_win32_path($input);
}
sub posixpath {
( run in 1.004 second using v1.01-cache-2.11-cpan-39bf76dae61 )