summary refs log tree commit diff
path: root/gnu/system/uuid.scm
diff options
context:
space:
mode:
authorMarius Bakke <mbakke@fastmail.com>2017-10-06 11:03:27 +0200
committerMarius Bakke <mbakke@fastmail.com>2017-10-06 11:03:27 +0200
commit6a317919cf0f9dbc651a4a41f9ed99c49bf2d543 (patch)
tree9454b6c587b75ee1e3625be64f39cc39a5154db6 /gnu/system/uuid.scm
parent68932812b8f6581dda4bf1896235492f687b7cc9 (diff)
parent8bde6a524e19d2bc9763b84dbf99959faf653bf8 (diff)
downloadguix-6a317919cf0f9dbc651a4a41f9ed99c49bf2d543.tar.gz
Merge branch 'master' into staging
Diffstat (limited to 'gnu/system/uuid.scm')
-rw-r--r--gnu/system/uuid.scm13
1 files changed, 13 insertions, 0 deletions
diff --git a/gnu/system/uuid.scm b/gnu/system/uuid.scm
index 6470abb8cc..e422e06a6d 100644
--- a/gnu/system/uuid.scm
+++ b/gnu/system/uuid.scm
@@ -29,6 +29,7 @@
             uuid?
             uuid-type
             uuid-bytevector
+            uuid=?
 
             bytevector->uuid
 
@@ -281,3 +282,15 @@ corresponding bytevector; otherwise return #f."
        ((_ . (? procedure? unparse)) (unparse bv))))
     (((? uuid? uuid))
      (uuid->string (uuid-bytevector uuid) (uuid-type uuid)))))
+
+(define uuid=?
+  ;; Return true if A is equal to B, comparing only the actual bits.
+  (match-lambda*
+    (((? bytevector? a) (? bytevector? b))
+     (bytevector=? a b))
+    (((? uuid? a) (? bytevector? b))
+     (bytevector=? (uuid-bytevector a) b))
+    (((? uuid? a) (? uuid? b))
+     (bytevector=? (uuid-bytevector a) (uuid-bytevector b)))
+    ((a b)
+     (uuid=? b a))))