index 6cb1d9f687b1eaf1da070ff0e2d78d017ac31887..acad79dec63d3540ffc29414a00a3050e4cca917 100644 (file)
/*
* PostgreSQL type definitions for the INET and CIDR types.
*
- * $PostgreSQL: pgsql/src/backend/utils/adt/network.c,v 1.48 2003年11月29日 19:51:59 pgsql Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/network.c,v 1.49 2003年12月01日 18:50:19 tgl Exp $
*
* Jon Postel RIP 16 Oct 1998
*/
errmsg("invalid mask length: %d", bits)));
/* clone the original data */
- dst = (inet *) palloc(VARHDRSZ + sizeof(inet_struct));
- memcpy(dst, src, VARHDRSZ + sizeof(inet_struct));
+ dst = (inet *) palloc(VARSIZE(src));
+ memcpy(dst, src, VARSIZE(src));
ip_bits(dst) = bits;
inet *dst;
int byte;
int bits;
- int maxbytes;
unsigned char mask;
unsigned char *a,
*b;
/* make sure any unused bits are zeroed */
dst = (inet *) palloc0(VARHDRSZ + sizeof(inet_struct));
- if (ip_family(ip) == PGSQL_AF_INET)
- maxbytes = 4;
- else
- maxbytes = 16;
-
bits = ip_bits(ip);
a = ip_addr(ip);
b = ip_addr(dst);
inet *dst;
int byte;
int bits;
- int maxbytes;
unsigned char mask;
unsigned char *b;
/* make sure any unused bits are zeroed */
dst = (inet *) palloc0(VARHDRSZ + sizeof(inet_struct));
- if (ip_family(ip) == PGSQL_AF_INET)
- maxbytes = 4;
- else
- maxbytes = 16;
-
bits = ip_bits(ip);
b = ip_addr(dst);
}
ip_family(dst) = ip_family(ip);
- ip_bits(dst) = ip_bits(ip);
+ ip_bits(dst) = ip_maxbits(ip);
ip_type(dst) = 0;
VARATT_SIZEP(dst) = VARHDRSZ
+ ((char *) ip_addr(dst) - (char *) VARDATA(dst))
}
ip_family(dst) = ip_family(ip);
- ip_bits(dst) = ip_bits(ip);
+ ip_bits(dst) = ip_maxbits(ip);
ip_type(dst) = 0;
VARATT_SIZEP(dst) = VARHDRSZ
+ ((char *) ip_addr(dst) - (char *) VARDATA(dst))