diff options
author | Siep Kroonenberg <siepo@cybercomm.nl> | 2022-03-18 21:42:01 +0000 |
---|---|---|
committer | Siep Kroonenberg <siepo@cybercomm.nl> | 2022-03-18 21:42:01 +0000 |
commit | 7bd6a757fb3e108777ca9bfda5985f31aa0ebf58 (patch) | |
tree | 8d85fffc771b0e38320b8b85eafe9d1d96e6ebe2 | |
parent | d381da11f9589438ab45fc3bd90d51cee6f0aaf3 (diff) |
diskfree for windows >= 8
git-svn-id: svn://tug.org/texlive/trunk@62794 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/tlpkg/TeXLive/TLUtils.pm | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/Master/tlpkg/TeXLive/TLUtils.pm b/Master/tlpkg/TeXLive/TLUtils.pm index 252f2295b08..e3f51b5de97 100644 --- a/Master/tlpkg/TeXLive/TLUtils.pm +++ b/Master/tlpkg/TeXLive/TLUtils.pm @@ -815,6 +815,42 @@ computing the disk space. sub diskfree { my $td = shift; + my ($output, $retval); + if (win32()) { + # the powershell one-liner only works from win8 on. + my @winver = Win32::GetOSVersion(); + if ($winver[1]<=6 && $winver[2]<=1) { + return -1; + } + my $avl; + if ($td =~ /^[a-zA-Z]:/) { + my $drv = substr($td,0,1); + # ea ignore: error action ignore: no output at all + my $cmd = "powershell -nologo -noninteractive -noprofile -command " . + "\"get-psdrive -name $drv -ea ignore |select-object free |format-wide\""; + ($output, $retval) = run_cmd($cmd); + # ignore exit code, just parse the output + my @lines = split(/\r*\n/, $output); + foreach (@lines) { + chomp $_; + if ($_ !~ /^\s*$/) { + $_ =~ s/^\s*//; + $_ =~ s/\s*$//; + $avl = $_; + last; + } + } + if ($avl !~ /^[0-9]+$/) { + return (-1); + } else { + return (int($avl/(1024*1024))); + } + } else { + # maybe UNC drive; do not try to handle this + return -1; + } + } + # now windows case has been taken care of return (-1) if (! $::progs{"df"}); # drop final / $td =~ s!/$!!; @@ -832,7 +868,7 @@ sub diskfree { $td .= "/" if ($td !~ m!/$!); return (-1) if (! -e $td); debug("Checking for free diskspace in $td\n"); - my ($output, $retval) = run_cmd("df -P \"$td\"", POSIXLY_CORRECT => 1); + ($output, $retval) = run_cmd("df -P \"$td\"", POSIXLY_CORRECT => 1); if ($retval == 0) { # Output format should be this: # Filesystem 512-blocks Used Available Capacity Mounted on |