]> git.g-eek.se Git - interimap.git/commitdiff
libinterimap: use directories relative to $HOME for the XDG defaults. master
authorGuilhem Moulin <guilhem@fripost.org>
Mon, 8 Jul 2019 03:30:37 +0000 (05:30 +0200)
committerGuilhem Moulin <guilhem@fripost.org>
Mon, 8 Jul 2019 03:36:24 +0000 (05:36 +0200)
Previously getpwuid() was called to determine the user's home directory,
while the XDG specification explicitely mentions $HOME.

Conveniently our docs always mentioned ~/, which on POSIX-compliant
systems expands to the value of the variable HOME (and the result is
unspecified when the variable is unset).  Cf. Shell and Utilities volume
of POSIX.1-2017, sec. 2.6.1:

    https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_01

Changelog
lib/Net/IMAP/InterIMAP.pm

index 84a62b624b758ef1644175a33bac0a65fd3eb902..d4299327e4c56d754c3dd8a03c9773d04c960a02 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -69,6 +69,13 @@ interimap (0.5) upstream;
    the 'foreign_keys' PRAGMA during a transaction is a documented no-op).
  - interimap: fix handling of mod-sequence values greater or equal than
    2 << 63.
+ - libinterimap: use directories relative to $HOME for the XDG
+   environment variables default values.  Previously getpwuid() was
+   called to determine the user's home directory, while the XDG
+   specification explicitely mentions $HOME.  Conveniently our docs
+   always mentioned ~/, which on POSIX-compliant systems expands to the
+   value of the variable HOME.  (Cf. Shell and Utilities volume of
+   POSIX.1-2017, sec. 2.6.1.)
 
  -- Guilhem Moulin <guilhem@fripost.org>  Fri, 10 May 2019 00:58:14 +0200
 
index 19895c48c3d39f2552f4456c0a652de61c54c240..aacc8e7e1542045079e55b30ed4527ddc9cc7a67 100644 (file)
@@ -92,11 +92,9 @@ sub xdg_basedir($$$$) {
     return $path if $path =~ /\A\//;
 
     my $basedir = $ENV{$xdg_variable};
-    unless (defined $basedir) {
-        my @getent = getpwuid($>);
-        $basedir = $getent[7] ."/". $default;
-    }
+    $basedir = ($ENV{HOME} // "") ."/". $default unless defined $basedir;
     die "No such directory: ", $basedir unless -d $basedir;
+
     $basedir .= "/".$subdir;
     $basedir =~ /\A(\/\p{Print}+)\z/ or die "Insecure $basedir";
     $basedir = $1;