From: Wilfried Goesgens Date: Sun, 3 Jul 2011 22:34:03 +0000 (+0000) Subject: merge in euid generation from master X-Git-Tag: v8.11~1036 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=d9666dbf7dd0623cdf4335ba3bae3776c592050b merge in euid generation from master --- 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() ); }