emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] [PATCH 1/2] Provide function that returns a string with a rand


From: David Maus
Subject: [Orgmode] [PATCH 1/2] Provide function that returns a string with a random (version 4) UUID.
Date: Tue, 18 May 2010 08:10:59 +0200

---
 lisp/ChangeLog |    5 +++++
 lisp/org-id.el |   24 ++++++++++++++++++++++++
 2 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 4fb3aac..fafe7db 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2010-05-16  David Maus  <address@hidden>
+
+       * org-id.el (org-id-uuid): New function.  Return string with
+       random (version 4) UUID.
+
 2010-05-15  Carsten Dominik  <address@hidden>
 
        * org-latex.el (org-export-latex-format-image): Add support
diff --git a/lisp/org-id.el b/lisp/org-id.el
index 0678161..6175eee 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)) ""))
 
-- 
1.7.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]