From 0123ca8e30234615dca0d8853dffec2fb93fe9a8 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 14 Jun 2022 03:00:57 +0000 Subject: CTAN sync 202206140300 --- systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm | 45 +++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 5 deletions(-) (limited to 'systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm') diff --git a/systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm b/systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm index 32654458cb..2e9e0240b3 100644 --- a/systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm +++ b/systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm @@ -1,4 +1,4 @@ -# $Id: TLUtils.pm 63068 2022-04-18 05:58:07Z preining $ +# $Id: TLUtils.pm 63571 2022-06-13 01:11:19Z karl $ # TeXLive::TLUtils.pm - the inevitable utilities for TeX Live. # Copyright 2007-2022 Norbert Preining, Reinhard Kotucha # This file is licensed under the GNU General Public License version 2 @@ -8,7 +8,7 @@ use strict; use warnings; package TeXLive::TLUtils; -my $svnrev = '$Revision: 63068 $'; +my $svnrev = '$Revision: 63571 $'; my $_modulerevision = ($svnrev =~ m/: ([0-9]+) /) ? $1 : "unknown"; sub module_revision { return $_modulerevision; } @@ -43,6 +43,8 @@ C - TeX Live infrastructure miscellany TeXLive::TLUtils::run_cmd($cmd [, @envvars ]); TeXLive::TLUtils::system_pipe($prog, $infile, $outfile, $removeIn, @args); TeXLive::TLUtils::diskfree($path); + TeXLive::TLUtils::get_user_home(); + TeXLive::TLUtils::expand_tilde($str); =head2 File utilities @@ -234,6 +236,8 @@ BEGIN { &run_cmd &system_pipe &diskfree + &get_user_home + &expand_tilde &announce_execute_actions &add_symlinks &remove_symlinks @@ -868,7 +872,7 @@ sub diskfree { } $td .= "/" if ($td !~ m!/$!); return (-1) if (! -e $td); - debug("Checking for free diskspace in $td\n"); + debug("checking diskfree() in $td\n"); ($output, $retval) = run_cmd("df -P \"$td\"", POSIXLY_CORRECT => 1); if ($retval == 0) { # Output format should be this: @@ -876,16 +880,47 @@ sub diskfree { # /dev/sdb3 6099908248 3590818104 2406881416 60% /home my ($h,$l) = split(/\n/, $output); my ($fs, $nrb, $used, $avail, @rest) = split(' ', $l); - debug("disk space: used=$used (512-block), avail=$avail (512-block)\n"); + debug("diskfree: used=$used (512-block), avail=$avail (512-block)\n"); # $avail is in 512-byte blocks, so we need to divide by 2*1024 to # obtain Mb. Require that at least 100M remain free. return (int($avail / 2048)); } else { - # error in running df -P out of whatever reason + # error in running df -P for whatever reason return (-1); } } +=item C + +Returns the current user's home directory (C<$HOME> on Unix, +C<$USERPROFILE> on Windows, and C<~> if none of the two are +set. Save in package variable C<$user_home_dir> after computing. + +=cut + +# only search for home directory once, and save expansion here +my $user_home_dir; + +sub get_user_home { + return $user_home_dir if ($user_home_dir); + $user_home_dir = getenv (win32() ? 'USERPROFILE' : 'HOME') || '~'; + return $user_home_dir; +} + +=item C + +Expands initial C<~> with the user's home directory in C<$str> if +available, else leave C<~> in place. + +=cut + +sub expand_tilde { + my $str = shift; + my $h = get_user_home(); + $str =~ s/^~/$h/; + return $str; +} + =back =head2 File utilities -- cgit v1.2.3