From d9666dbf7dd0623cdf4335ba3bae3776c592050b Mon Sep 17 00:00:00 2001 From: Wilfried Goesgens Date: Sun, 3 Jul 2011 22:34:03 +0000 Subject: [PATCH] merge in euid generation from master --- libcitadel/lib/libcitadel.h | 1 + libcitadel/lib/tools.c | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/libcitadel/lib/libcitadel.h b/libcitadel/lib/libcitadel.h index 88ab8d72b..89fb4cee6 100644 --- a/libcitadel/lib/libcitadel.h +++ b/libcitadel/lib/libcitadel.h @@ -109,6 +109,7 @@ typedef enum _room_views { VIEW_MAX } ROOM_VIEWS; +#define BLOG_EUIDBUF_SIZE 40 #ifndef IsEmptyStr #define IsEmptyStr(a) ((a)[0] == '\0') diff --git a/libcitadel/lib/tools.c b/libcitadel/lib/tools.c index 4a8eb6baa..0c012e795 100644 --- a/libcitadel/lib/tools.c +++ b/libcitadel/lib/tools.c @@ -858,12 +858,20 @@ char *strcpy(char *dest, const char *src) { * Generate a new, globally unique UID parameter for a calendar etc. object */ void generate_uuid(char *buf) { - static int seq = 0; + static int seq = (-1); - sprintf(buf, "%lx-%lx-%x", - time(NULL), + if (seq == (-1)) { + seq = (int)rand(); + } + ++seq; + seq = (seq % 0x0FFF) ; + + sprintf(buf, "%08lx-%04lx-4%03x-a%03x-%012lx", + (long)time(NULL), (long)getpid(), - (seq++) + seq, + seq, + (long)rand() ); } -- 2.30.2