On Tue, 16 May 2017 10:31:36 +0200 l...@gnu.org (Ludovic Courtès) wrote: > Honestly, I was under the assumptions that DCE UUIDs was all that > mattered: it works for ext2 and btrfs, right? I would think that people > would rarely add FAT32 or ISO9660 UUIDs to the OS config.
With UEFI I thought that everyone has at least one FAT32 UUID in the OS config? What's more, just by checking /dev/disk/by-uuid the user wouldn't know what kind of filesystem it is. But he had to specify the file system type in the config anyway - so it would be no worse than before. Okay then. What do you all think of the following? (define %iso9660-uuid-rx ;; Y m d H M S ss (make-regexp "^([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})-([[:digit:]]{2})-([[:digit:]]{2})-([[:digit:]]{2})-([[:digit:]]{2})$")) (define (string->iso9660-uuid str) "Parse STR as a ISO9660 UUID (which is really a timestamp - see /dev/disk/by-uuid). Return its contents as a 16-byte bytevector. Return #f if STR is not a valid ISO9660 UUID representation." (and=> (regexp-exec %iso9660-uuid-rx str) (lambda (match) (letrec-syntax ((match-numeral (syntax-rules () ((_ index) (match:substring match index))))) (let ((year (match-numeral 1)) (month (match-numeral 2)) (day (match-numeral 3)) (hour (match-numeral 4)) (minute (match-numeral 5)) (second (match-numeral 6)) (hundredths (match-numeral 7))) (string->utf8 (string-append year month day hour minute second hundredths))))))) And also: (define string->btrfs-uuid string->uid) (define string->ext2-uuid string->uid) (define string->ext3-uuid string->uid) ...