diff options
Diffstat (limited to 'Master/tlpkg/TeXLive')
-rw-r--r-- | Master/tlpkg/TeXLive/TLUtils.pm | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/Master/tlpkg/TeXLive/TLUtils.pm b/Master/tlpkg/TeXLive/TLUtils.pm index ba48ed0586e..7e158279d46 100644 --- a/Master/tlpkg/TeXLive/TLUtils.pm +++ b/Master/tlpkg/TeXLive/TLUtils.pm @@ -51,6 +51,7 @@ C<TeXLive::TLUtils> -- utilities used in the TeX Live infrastructure TeXLive::TLUtils::basename($path); TeXLive::TLUtils::dirname_and_basename($path); TeXLive::TLUtils::dir_writable($path); + TeXLive::TLUtils::dir_creatable($path); TeXLive::TLUtils::mkdirhier($path); TeXLive::TLUtils::rmtree($root, $verbose, $safe); TeXLive::TLUtils::copy($file, $target_dir); @@ -113,6 +114,7 @@ BEGIN { &basename &dirname_and_basename &dir_writable + &dir_creatable &mkdirhier &rmtree © @@ -522,6 +524,27 @@ sub dirname_and_basename { } +=item C<dir_creatable($path)> + +Tests whether its argument is a directory where we can create a directory. + +=cut + +sub dir_creatable { + $path=shift; + return 0 unless -d $path; + $path =~ s!\\!/!g if win32; + $path =~ s!/$!!g; + my $i = 0; + while (-e $path . "/" . $i) { $i++; } + my $d = $path."/".$i; + return 0 unless mkdir $d; + return 0 unless -d $d; + rmdir $d; + return 1; +} + + =item C<dir_writable($path)> Tests whether its argument is writable by trying to write to @@ -2592,8 +2615,8 @@ sub texdir_check { my ($texdir) = shift; # PATH/texlive/2008 my $texdirparent = dirname($texdir); # PATH/texlive my $texdirpparent = dirname($texdirparent); # PATH - if ( (dir_writable($texdirpparent)) || - ( (-d $texdirparent) && (dir_writable($texdirparent)) ) || + if ( (dir_creatable($texdirpparent)) || + ( (-d $texdirparent) && (dir_creatable($texdirparent)) ) || ( (-d $texdir) && (dir_writable($texdir)) ) ) { return 1; } |