~ruther/guix-local

aed1f1b049f6e7ef9f2f2db58bdca6cd3effe94b — Ludovic Courtès 8 years ago 67a08f1
uuid: Add 'uuid=?' and use it.

* gnu/system/uuid.scm (uuid=?): New procedure.
* tests/uuid.scm ("uuid=?"): New test.
* gnu/build/file-systems.scm (partition-uuid-predicate)
(luks-partition-uuid-predicate): Use it instead of 'bytevector=?'.
3 files changed, 21 insertions(+), 2 deletions(-)

M gnu/build/file-systems.scm
M gnu/system/uuid.scm
M tests/uuid.scm
M gnu/build/file-systems.scm => gnu/build/file-systems.scm +2 -2
@@ 415,12 415,12 @@ was READ is = to the given value."
  (partition-predicate read-partition-label string=?))

(define partition-uuid-predicate
  (partition-predicate read-partition-uuid bytevector=?))
  (partition-predicate read-partition-uuid uuid=?))

(define luks-partition-uuid-predicate
  (partition-predicate
   (partition-field-reader read-luks-header luks-header-uuid)
   bytevector=?))
   uuid=?))

(define (find-partition predicate)
  "Return the first partition found that matches PREDICATE, or #f if none

M gnu/system/uuid.scm => gnu/system/uuid.scm +13 -0
@@ 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))))

M tests/uuid.scm => tests/uuid.scm +6 -0
@@ 57,4 57,10 @@
  "1234-ABCD"
  (uuid->string (uuid "1234-abcd" 'fat32)))

(test-equal "uuid=?"
  (and (uuid=? (uuid-bytevector (uuid "1234-abcd" 'fat32))
               (uuid "1234-abcd" 'fat32))
       (uuid=? (uuid "1234-abcd" 'fat32)
               (uuid "1234-abcd" 'fat))))

(test-end)