summaryrefslogtreecommitdiff
path: root/systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-06-14 03:00:57 +0000
committerNorbert Preining <norbert@preining.info>2022-06-14 03:00:57 +0000
commit0123ca8e30234615dca0d8853dffec2fb93fe9a8 (patch)
tree2e6f55a6928daf3e96ceb73914e529368ed8f906 /systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm
parentef6d63ded56fb892decaa8ab41d7deebbe670473 (diff)
CTAN sync 202206140300
Diffstat (limited to 'systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm')
-rw-r--r--systems/texlive/tlnet/tlpkg/TeXLive/TLUtils.pm45
1 files changed, 40 insertions, 5 deletions
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<TeXLive::TLUtils> - 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<get_user_home()>
+
+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<expand_tilde($str)>
+
+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