diff options
author | David Maus <dmaus@ictsoc.de> | 2010-05-16 16:27:33 +0200 |
---|---|---|
committer | David Maus <dmaus@ictsoc.de> | 2010-05-16 16:27:33 +0200 |
commit | aa0004004b7f7e38e9169b24bcd32dd17f3c2a22 (patch) | |
tree | 40cfa5759427af6c9dc2568236e0be4188709435 | |
parent | 7f86e0dedb3953d7e8c7d8d41408e4f8be0efc77 (diff) | |
download | org-mode-aa0004004b7f7e38e9169b24bcd32dd17f3c2a22.tar.gz |
Provide function that returns a string with a random (version 4) UUID.
-rw-r--r-- | lisp/ChangeLog | 5 | ||||
-rw-r--r-- | 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 <dmaus@ictsoc.de> + + * org-id.el (org-id-uuid): New function. Return string with + random (version 4) UUID. + 2010-05-15 Carsten Dominik <carsten.dominik@gmail.com> * 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)) "")) |