00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include <config.h>
00019 #include "midgard/guid.h"
00020 #include "midgard/uuid.h"
00021
00022 gboolean midgard_is_guid(const gchar *guid) {
00023 g_assert(guid != NULL);
00024 int i;
00025 for (i = 0; guid[i] != 0 && i < 80; i++) {
00026 if (guid[i] != '-' && !g_ascii_isxdigit(guid[i])) {
00027 return FALSE;
00028 }
00029 }
00030 return (i >= 21);
00031 }
00032
00033 static void uuid2guid(gchar *uuid) {
00034 gchar *guid = uuid;
00035 do {
00036 if (*uuid == '-') {
00037 uuid++;
00038 }
00039 *guid++ = *uuid++;
00040 } while (*uuid);
00041 }
00042
00043 gchar *midgard_guid_new(midgard *mgd) {
00044 g_assert(mgd != NULL);
00045 gchar *uuid = midgard_uuid_new();
00046 uuid2guid(uuid);
00047 return uuid;
00048 }
00049
00050 gchar *midgard_guid_external(midgard *mgd, const gchar *external) {
00051 g_assert(mgd != NULL);
00052 g_assert(external != NULL);
00053 gchar *uuid = midgard_uuid_external(external);
00054 uuid2guid(uuid);
00055 return uuid;
00056 }
00057
00058 gchar *mgd_create_guid(midgard *mgd, const gchar *table, guint id) {
00059 g_assert(mgd != NULL);
00060 g_assert(table != NULL);
00061 return midgard_guid_new(mgd);
00062 }