summaryrefslogtreecommitdiff
path: root/Master/tlpkg
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2009-09-18 19:36:14 +0000
committerNorbert Preining <preining@logic.at>2009-09-18 19:36:14 +0000
commit87f08dbac512a5b4aff5617fb26ca687bd370c32 (patch)
treed6171b19c9a717f01cf9cb6429e85129ec9df545 /Master/tlpkg
parent94672e1ae3c58e635dea1ecdd00b220a3105447b (diff)
TLUtils: add dir_creatable in addition to dir_writable. On Vista/W7
in c:/ one can create directories, but not files! TLUtils: use dir_creatable in texdir_check, since that is what we need for parent and parent install-tl: on w32 if %ProgramFiles% is not writable fall back to c:\texlive\NNNN git-svn-id: svn://tug.org/texlive/trunk@15364 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/tlpkg')
-rw-r--r--Master/tlpkg/TeXLive/TLUtils.pm27
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
&copy
@@ -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;
}