From 74a1a2b8b16cd94d5046dfbe74f37d70a5347adc Mon Sep 17 00:00:00 2001 From: Neil Conway Date: Sun, 28 Jan 2007 20:25:38 +0000 Subject: [PATCH] Rename the uuid_t type to pg_uuid_t, to avoid a conflict with any definitions of uuid_t that may be provided by the system headers. This should hopefully fix the Win32 build problems reported by Magnus. --- src/backend/utils/adt/uuid.c | 86 ++++++++++++++++++------------------ src/include/utils/uuid.h | 10 +++-- 2 files changed, 49 insertions(+), 47 deletions(-) diff --git a/src/backend/utils/adt/uuid.c b/src/backend/utils/adt/uuid.c index 124d430dbf..f0b22c83f5 100644 --- a/src/backend/utils/adt/uuid.c +++ b/src/backend/utils/adt/uuid.c @@ -6,7 +6,7 @@ * Copyright (c) 2007, PostgreSQL Global Development Group * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/uuid.c,v 1.1 2007/01/28 16:16:52 neilc Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/uuid.c,v 1.2 2007/01/28 20:25:38 neilc Exp $ * *------------------------------------------------------------------------- */ @@ -35,50 +35,49 @@ /* uuid size in bytes */ #define UUID_LEN 16 -/* The uuid_t type is declared as struct uuid_t in uuid.h */ -struct uuid_t +/* pg_uuid_t is declared to be struct pg_uuid_t in uuid.h */ +struct pg_uuid_t { char data[UUID_LEN]; }; -static void uuid_data_from_string(const char *source, unsigned char *data); -static void string_from_uuid_data(const char *fmt, const char *data, char *uuid_str); +static void string_to_uuid(const char *source, pg_uuid_t *uuid); +static void uuid_to_string(const char *fmt, const pg_uuid_t *uuid, + char *uuid_str); static bool parse_uuid_string(const char *fmt, const char *chk_fmt, - const char *source, unsigned char *data); + const char *source, char *data); static bool is_valid_format(const char *source, const char *fmt); -static int32 uuid_internal_cmp(uuid_t *arg1, uuid_t *arg2); +static int uuid_internal_cmp(const pg_uuid_t *arg1, const pg_uuid_t *arg2); Datum uuid_in(PG_FUNCTION_ARGS) { char *uuid_str = PG_GETARG_CSTRING(0); - uuid_t *uuid; - uint8 data[UUID_LEN]; + pg_uuid_t *uuid; - uuid_data_from_string(uuid_str, data); - uuid = (uuid_t *) palloc(sizeof(uuid_t)); - memcpy(uuid->data, data, UUID_LEN); + uuid = (pg_uuid_t *) palloc(sizeof(*uuid)); + string_to_uuid(uuid_str, uuid); PG_RETURN_UUID_P(uuid); } Datum uuid_out(PG_FUNCTION_ARGS) { - uuid_t *uuid = (uuid_t *) PG_GETARG_POINTER(0); + pg_uuid_t *uuid = PG_GETARG_UUID_P(0); char *uuid_str; uuid_str = (char *) palloc(PRINT_SIZE); - string_from_uuid_data(UUID_FMT1, uuid->data, uuid_str); + uuid_to_string(UUID_FMT1, uuid, uuid_str); PG_RETURN_CSTRING(uuid_str); } /* string to uuid convertor by various format types */ static void -uuid_data_from_string(const char *source, unsigned char *data) +string_to_uuid(const char *source, pg_uuid_t *uuid) { - if (!parse_uuid_string(UUID_FMT1, UUID_CHK_FMT1, source, data) && - !parse_uuid_string(UUID_FMT2, UUID_CHK_FMT2, source, data) && - !parse_uuid_string(UUID_FMT3, UUID_CHK_FMT3, source, data)) + if (!parse_uuid_string(UUID_FMT1, UUID_CHK_FMT1, source, uuid->data) && + !parse_uuid_string(UUID_FMT2, UUID_CHK_FMT2, source, uuid->data) && + !parse_uuid_string(UUID_FMT3, UUID_CHK_FMT3, source, uuid->data)) { ereport(ERROR, (errcode(ERRCODE_INVALID_TEXT_REPRESENTATION), @@ -126,7 +125,7 @@ is_valid_format(const char *source, const char *fmt) /* parse the uuid string to a format and return true if okay */ static bool parse_uuid_string(const char *fmt, const char *chk_fmt, - const char *source, unsigned char *data) + const char *source, char *data) { int result = sscanf(source, fmt, &data[0], &data[1], &data[2], &data[3], &data[4], @@ -139,8 +138,9 @@ parse_uuid_string(const char *fmt, const char *chk_fmt, /* create a string representation of the uuid */ static void -string_from_uuid_data(const char *fmt, const char *data, char *uuid_str) +uuid_to_string(const char *fmt, const pg_uuid_t *uuid, char *uuid_str) { + const char *data = uuid->data; snprintf(uuid_str, PRINT_SIZE, fmt, data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7], data[8], data[9], @@ -152,9 +152,9 @@ Datum uuid_recv(PG_FUNCTION_ARGS) { StringInfo buffer = (StringInfo) PG_GETARG_POINTER(0); - uuid_t *uuid; + pg_uuid_t *uuid; - uuid = (uuid_t *) palloc(UUID_LEN); + uuid = (pg_uuid_t *) palloc(UUID_LEN); memcpy(uuid->data, pq_getmsgbytes(buffer, UUID_LEN), UUID_LEN); PG_RETURN_POINTER(uuid); } @@ -162,7 +162,7 @@ uuid_recv(PG_FUNCTION_ARGS) Datum uuid_send(PG_FUNCTION_ARGS) { - uuid_t *uuid = PG_GETARG_UUID_P(0); + pg_uuid_t *uuid = PG_GETARG_UUID_P(0); StringInfoData buffer; pq_begintypsend(&buffer); @@ -171,8 +171,8 @@ uuid_send(PG_FUNCTION_ARGS) } /* internal uuid compare function */ -static int32 -uuid_internal_cmp(uuid_t *arg1, uuid_t *arg2) +static int +uuid_internal_cmp(const pg_uuid_t *arg1, const pg_uuid_t *arg2) { return memcmp(arg1->data, arg2->data, UUID_LEN); } @@ -180,8 +180,8 @@ uuid_internal_cmp(uuid_t *arg1, uuid_t *arg2) Datum uuid_lt(PG_FUNCTION_ARGS) { - uuid_t *arg1 = PG_GETARG_UUID_P(0); - uuid_t *arg2 = PG_GETARG_UUID_P(1); + pg_uuid_t *arg1 = PG_GETARG_UUID_P(0); + pg_uuid_t *arg2 = PG_GETARG_UUID_P(1); PG_RETURN_BOOL(uuid_internal_cmp(arg1, arg2) < 0); } @@ -189,8 +189,8 @@ uuid_lt(PG_FUNCTION_ARGS) Datum uuid_le(PG_FUNCTION_ARGS) { - uuid_t *arg1 = PG_GETARG_UUID_P(0); - uuid_t *arg2 = PG_GETARG_UUID_P(1); + pg_uuid_t *arg1 = PG_GETARG_UUID_P(0); + pg_uuid_t *arg2 = PG_GETARG_UUID_P(1); PG_RETURN_BOOL(uuid_internal_cmp(arg1, arg2) <= 0); } @@ -198,8 +198,8 @@ uuid_le(PG_FUNCTION_ARGS) Datum uuid_eq(PG_FUNCTION_ARGS) { - uuid_t *arg1 = PG_GETARG_UUID_P(0); - uuid_t *arg2 = PG_GETARG_UUID_P(1); + pg_uuid_t *arg1 = PG_GETARG_UUID_P(0); + pg_uuid_t *arg2 = PG_GETARG_UUID_P(1); PG_RETURN_BOOL(uuid_internal_cmp(arg1, arg2) == 0); } @@ -207,8 +207,8 @@ uuid_eq(PG_FUNCTION_ARGS) Datum uuid_ge(PG_FUNCTION_ARGS) { - uuid_t *arg1 = PG_GETARG_UUID_P(0); - uuid_t *arg2 = PG_GETARG_UUID_P(1); + pg_uuid_t *arg1 = PG_GETARG_UUID_P(0); + pg_uuid_t *arg2 = PG_GETARG_UUID_P(1); PG_RETURN_BOOL(uuid_internal_cmp(arg1, arg2) >= 0); } @@ -216,8 +216,8 @@ uuid_ge(PG_FUNCTION_ARGS) Datum uuid_gt(PG_FUNCTION_ARGS) { - uuid_t *arg1 = PG_GETARG_UUID_P(0); - uuid_t *arg2 = PG_GETARG_UUID_P(1); + pg_uuid_t *arg1 = PG_GETARG_UUID_P(0); + pg_uuid_t *arg2 = PG_GETARG_UUID_P(1); PG_RETURN_BOOL(uuid_internal_cmp(arg1, arg2) > 0); } @@ -225,8 +225,8 @@ uuid_gt(PG_FUNCTION_ARGS) Datum uuid_ne(PG_FUNCTION_ARGS) { - uuid_t *arg1 = PG_GETARG_UUID_P(0); - uuid_t *arg2 = PG_GETARG_UUID_P(1); + pg_uuid_t *arg1 = PG_GETARG_UUID_P(0); + pg_uuid_t *arg2 = PG_GETARG_UUID_P(1); PG_RETURN_BOOL(uuid_internal_cmp(arg1, arg2) != 0); } @@ -235,8 +235,8 @@ uuid_ne(PG_FUNCTION_ARGS) Datum uuid_cmp(PG_FUNCTION_ARGS) { - uuid_t *arg1 = PG_GETARG_UUID_P(0); - uuid_t *arg2 = PG_GETARG_UUID_P(1); + pg_uuid_t *arg1 = PG_GETARG_UUID_P(0); + pg_uuid_t *arg2 = PG_GETARG_UUID_P(1); PG_RETURN_INT32(uuid_internal_cmp(arg1, arg2)); } @@ -245,8 +245,8 @@ uuid_cmp(PG_FUNCTION_ARGS) Datum uuid_hash(PG_FUNCTION_ARGS) { - uuid_t *key = PG_GETARG_UUID_P(0); - return hash_any((unsigned char *) key, sizeof(uuid_t)); + pg_uuid_t *key = PG_GETARG_UUID_P(0); + return hash_any((unsigned char *) key, sizeof(pg_uuid_t)); } /* cast text to uuid */ @@ -272,8 +272,8 @@ text_uuid(PG_FUNCTION_ARGS) Datum uuid_text(PG_FUNCTION_ARGS) { - uuid_t *uuid = PG_GETARG_UUID_P(0); - Datum uuid_str = DirectFunctionCall1(uuid_out, UUIDPGetDatum(uuid)); + pg_uuid_t *uuid = PG_GETARG_UUID_P(0); + Datum uuid_str = DirectFunctionCall1(uuid_out, UUIDPGetDatum(uuid)); PG_RETURN_DATUM(DirectFunctionCall1(textin, uuid_str)); } diff --git a/src/include/utils/uuid.h b/src/include/utils/uuid.h index 12cb00a0b7..4817939d52 100644 --- a/src/include/utils/uuid.h +++ b/src/include/utils/uuid.h @@ -1,11 +1,13 @@ /*------------------------------------------------------------------------- * * uuid.h - * Header file for the "uuid" data type. + * Header file for the "uuid" ADT. In C, we use the name pg_uuid_t, + * to avoid conflicts with any uuid_t type that might be defined by + * the system headers. * * Copyright (c) 2007, PostgreSQL Global Development Group * - * $PostgreSQL: pgsql/src/include/utils/uuid.h,v 1.1 2007/01/28 16:16:54 neilc Exp $ + * $PostgreSQL: pgsql/src/include/utils/uuid.h,v 1.2 2007/01/28 20:25:38 neilc Exp $ * *------------------------------------------------------------------------- */ @@ -16,12 +18,12 @@ #define UUID_LEN 16 /* opaque struct; defined in uuid.c */ -typedef struct uuid_t uuid_t; +typedef struct pg_uuid_t pg_uuid_t; /* fmgr interface macros */ #define UUIDPGetDatum(X) PointerGetDatum(X) #define PG_RETURN_UUID_P(X) return UUIDPGetDatum(X) -#define DatumGetUUIDP(X) ((uuid_t *) DatumGetPointer(X)) +#define DatumGetUUIDP(X) ((pg_uuid_t *) DatumGetPointer(X)) #define PG_GETARG_UUID_P(X) DatumGetUUIDP(PG_GETARG_DATUM(X)) #endif /* UUID_H */ -- 2.40.0