texlive[63002] Master/tlpkg/TeXLive/TLUtils.pm: Disk space code for
commits+siepo at tug.org
commits+siepo at tug.org
Mon Apr 11 16:04:37 CEST 2022
Revision: 63002
http://tug.org/svn/texlive?view=revision&revision=63002
Author: siepo
Date: 2022-04-11 16:04:37 +0200 (Mon, 11 Apr 2022)
Log Message:
-----------
Disk space code for Windows reinstated
Modified Paths:
--------------
trunk/Master/tlpkg/TeXLive/TLUtils.pm
Modified: trunk/Master/tlpkg/TeXLive/TLUtils.pm
===================================================================
--- trunk/Master/tlpkg/TeXLive/TLUtils.pm 2022-04-11 14:03:28 UTC (rev 63001)
+++ trunk/Master/tlpkg/TeXLive/TLUtils.pm 2022-04-11 14:04:37 UTC (rev 63002)
@@ -815,6 +815,43 @@
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, which should
+ # consist of empty lines and a number surrounded by spaces
+ 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 +869,7 @@
$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
More information about the tex-live-commits
mailing list.