summaryrefslogtreecommitdiff
path: root/guix/git-download.scm
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2017-05-14 17:21:46 +0200
committerMarius Bakke <mbakke@fastmail.com>2017-05-14 17:21:46 +0200
commit61b1df6f2791a2afa291b56708d73a5264ca70eb (patch)
tree314ddb96391b25e83e9a31637be0f1a7f52cc249 /guix/git-download.scm
parentbdb8267680f14ee5d3df9d029f23279c1457c211 (diff)
parent4be014128e1c422f37b56f9a6b3420b4e85c4302 (diff)
Merge branch 'master' into staging
Diffstat (limited to 'guix/git-download.scm')
-rw-r--r--guix/git-download.scm10
1 files changed, 8 insertions, 2 deletions
diff --git a/guix/git-download.scm b/guix/git-download.scm
index 5d86ab2b62..9f6d20ee38 100644
--- a/guix/git-download.scm
+++ b/guix/git-download.scm
@@ -145,6 +145,10 @@ absolute file name and STAT is the result of 'lstat'."
(reverse lines))
(line
(loop (cons line lines))))))
+ (inodes (map (lambda (file)
+ (let ((stat (lstat file)))
+ (cons (stat:dev stat) (stat:ino stat))))
+ files))
(status (close-pipe pipe)))
(and (zero? status)
(lambda (file stat)
@@ -155,8 +159,10 @@ absolute file name and STAT is the result of 'lstat'."
(any (lambda (f) (parent-directory? f file))
files))
((or 'regular 'symlink)
- (any (lambda (f) (string-suffix? f file))
- files))
+ ;; Comparing file names is always tricky business so we rely on
+ ;; inode numbers instead
+ (member (cons (stat:dev stat) (stat:ino stat))
+ inodes))
(_
#f))))))