diff options
Diffstat (limited to 'contrib/uuid/pack.c')
| -rw-r--r-- | contrib/uuid/pack.c | 69 | 
1 files changed, 69 insertions, 0 deletions
diff --git a/contrib/uuid/pack.c b/contrib/uuid/pack.c new file mode 100644 index 00000000000..097516d2e2f --- /dev/null +++ b/contrib/uuid/pack.c @@ -0,0 +1,69 @@ +/* + * Internal routine for packing UUID's + * + * Copyright (C) 1996, 1997 Theodore Ts'o. + * + * %Begin-Header% + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *    notice, and the entire permission notice in its entirety, + *    including the disclaimer of warranties. + * 2. Redistributions in binary form must reproduce the above copyright + *    notice, this list of conditions and the following disclaimer in the + *    documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote + *    products derived from this software without specific prior + *    written permission. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF + * WHICH ARE HEREBY DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH + * DAMAGE. + * %End-Header% + */ + +#include <string.h> +#include "uuidP.h" + +void uuid_pack(const struct uuid *uu, uuid_t ptr) +{ +	uint32_t	tmp; +	unsigned char	*out = ptr; + +	tmp = uu->time_low; +	out[3] = (unsigned char) tmp; +	tmp >>= 8; +	out[2] = (unsigned char) tmp; +	tmp >>= 8; +	out[1] = (unsigned char) tmp; +	tmp >>= 8; +	out[0] = (unsigned char) tmp; + +	tmp = uu->time_mid; +	out[5] = (unsigned char) tmp; +	tmp >>= 8; +	out[4] = (unsigned char) tmp; + +	tmp = uu->time_hi_and_version; +	out[7] = (unsigned char) tmp; +	tmp >>= 8; +	out[6] = (unsigned char) tmp; + +	tmp = uu->clock_seq; +	out[9] = (unsigned char) tmp; +	tmp >>= 8; +	out[8] = (unsigned char) tmp; + +	memcpy(out+10, uu->node, 6); +} +  | 
