From aa0004004b7f7e38e9169b24bcd32dd17f3c2a22 Mon Sep 17 00:00:00 2001 From: David Maus Date: Sun, 16 May 2010 16:27:33 +0200 Subject: [PATCH] Provide function that returns a string with a random (version 4) UUID. --- lisp/ChangeLog | 5 +++++ lisp/org-id.el | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4fb3aac20..fafe7dbff 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2010-05-16 David Maus + + * org-id.el (org-id-uuid): New function. Return string with + random (version 4) UUID. + 2010-05-15 Carsten Dominik * org-latex.el (org-export-latex-format-image): Add support diff --git a/lisp/org-id.el b/lisp/org-id.el index 06781613a..6175eee2c 100644 --- a/lisp/org-id.el +++ b/lisp/org-id.el @@ -318,6 +318,30 @@ So a typical ID could look like \"Org:4nd91V40HI\"." (t (error "Invalid `org-id-method'"))) (concat prefix unique))) +(defun org-id-uuid () + "Return string with random (version 4) UUID." + (let ((rnd (md5 (format "%s%s%s%s%s%s%s" + (random t) + (current-time) + (user-uid) + (emacs-pid) + (user-full-name) + user-mail-address + (recent-keys))))) + (format "%s-%s-4%s-%s%s-%s" + (substring rnd 0 8) + (substring rnd 8 12) + (substring rnd 13 16) + (format "%x" + (logior + #B10000000 + (logand + #B10111111 + (string-to-number + (substring rnd 16 18) 16)))) + (substring rnd 18 20) + (substring rnd 20 32)))) + (defun org-id-reverse-string (s) (mapconcat 'char-to-string (nreverse (string-to-list s)) "")) -- 2.11.4.GIT