diff --git a/src/backend/utils/adt/uuid.c b/src/backend/utils/adt/uuid.c
index 124d430dbfa80ea1414363534b01f538232c8876..f0b22c83f5a224f8f5554bc64a5752e3715fcf3e 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 12cb00a0b7115a56e001d58f3df0a28970863d6f..4817939d5287e0e6875ec4e162734625ec6827db 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 */