[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/5.10.0/File/Spec/ -> Cygwin.pm (source)

   1  package File::Spec::Cygwin;
   2  
   3  use strict;
   4  use vars qw(@ISA $VERSION);
   5  require File::Spec::Unix;
   6  
   7  $VERSION = '3.2501';
   8  
   9  @ISA = qw(File::Spec::Unix);
  10  
  11  =head1 NAME
  12  
  13  File::Spec::Cygwin - methods for Cygwin file specs
  14  
  15  =head1 SYNOPSIS
  16  
  17   require File::Spec::Cygwin; # Done internally by File::Spec if needed
  18  
  19  =head1 DESCRIPTION
  20  
  21  See L<File::Spec> and L<File::Spec::Unix>.  This package overrides the
  22  implementation of these methods, not the semantics.
  23  
  24  This module is still in beta.  Cygwin-knowledgeable folks are invited
  25  to offer patches and suggestions.
  26  
  27  =cut
  28  
  29  =pod
  30  
  31  =over 4
  32  
  33  =item canonpath
  34  
  35  Any C<\> (backslashes) are converted to C</> (forward slashes),
  36  and then File::Spec::Unix canonpath() is called on the result.
  37  
  38  =cut
  39  
  40  sub canonpath {
  41      my($self,$path) = @_;
  42      $path =~ s|\\|/|g;
  43  
  44      # Handle network path names beginning with double slash
  45      my $node = '';
  46      if ( $path =~ s@^(//[^/]+)(?:/|\z)@/@s ) {
  47          $node = $1;
  48      }
  49      return $node . $self->SUPER::canonpath($path);
  50  }
  51  
  52  sub catdir {
  53      my $self = shift;
  54  
  55      # Don't create something that looks like a //network/path
  56      if ($_[0] and ($_[0] eq '/' or $_[0] eq '\\')) {
  57          shift;
  58          return $self->SUPER::catdir('', @_);
  59      }
  60  
  61      $self->SUPER::catdir(@_);
  62  }
  63  
  64  =pod
  65  
  66  =item file_name_is_absolute
  67  
  68  True is returned if the file name begins with C<drive_letter:>,
  69  and if not, File::Spec::Unix file_name_is_absolute() is called.
  70  
  71  =cut
  72  
  73  
  74  sub file_name_is_absolute {
  75      my ($self,$file) = @_;
  76      return 1 if $file =~ m{^([a-z]:)?[\\/]}is; # C:/test
  77      return $self->SUPER::file_name_is_absolute($file);
  78  }
  79  
  80  =item tmpdir (override)
  81  
  82  Returns a string representation of the first existing directory
  83  from the following list:
  84  
  85      $ENV{TMPDIR}
  86      /tmp
  87      $ENV{'TMP'}
  88      $ENV{'TEMP'}
  89      C:/temp
  90  
  91  Since Perl 5.8.0, if running under taint mode, and if the environment
  92  variables are tainted, they are not used.
  93  
  94  =cut
  95  
  96  my $tmpdir;
  97  sub tmpdir {
  98      return $tmpdir if defined $tmpdir;
  99      $tmpdir = $_[0]->_tmpdir( $ENV{TMPDIR}, "/tmp", $ENV{'TMP'}, $ENV{'TEMP'}, 'C:/temp' );
 100  }
 101  
 102  =item case_tolerant
 103  
 104  Override Unix. Cygwin case-tolerance depends on managed mount settings and
 105  as with MsWin32 on GetVolumeInformation() $ouFsFlags == FS_CASE_SENSITIVE,
 106  indicating the case significance when comparing file specifications.
 107  Default: 1
 108  
 109  =cut
 110  
 111  sub case_tolerant () {
 112    if ($^O ne 'cygwin') {
 113      return 1;
 114    }
 115    my $drive = shift;
 116    if (! $drive) {
 117        my @flags = split(/,/, Cygwin::mount_flags('/cygwin'));
 118        my $prefix = pop(@flags);
 119        if (! $prefix || $prefix eq 'cygdrive') {
 120            $drive = '/cygdrive/c';
 121        } elsif ($prefix eq '/') {
 122            $drive = '/c';
 123        } else {
 124            $drive = "$prefix/c";
 125        }
 126    }
 127    my $mntopts = Cygwin::mount_flags($drive);
 128    if ($mntopts and ($mntopts =~ /,managed/)) {
 129      return 0;
 130    }
 131    eval { require Win32API::File; } or return 1;
 132    my $osFsType = "\0"x256;
 133    my $osVolName = "\0"x256;
 134    my $ouFsFlags = 0;
 135    Win32API::File::GetVolumeInformation($drive, $osVolName, 256, [], [], $ouFsFlags, $osFsType, 256 );
 136    if ($ouFsFlags & Win32API::File::FS_CASE_SENSITIVE()) { return 0; }
 137    else { return 1; }
 138  }
 139  
 140  =back
 141  
 142  =head1 COPYRIGHT
 143  
 144  Copyright (c) 2004,2007 by the Perl 5 Porters.  All rights reserved.
 145  
 146  This program is free software; you can redistribute it and/or modify
 147  it under the same terms as Perl itself.
 148  
 149  =cut
 150  
 151  1;


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1