unparse.c

00001 /*
00002  * unparse.c -- convert a UUID to string
00003  * 
00004  * Copyright (C) 1996, 1997 Theodore Ts'o.
00005  *
00006  * %Begin-Header%
00007  * Redistribution and use in source and binary forms, with or without
00008  * modification, are permitted provided that the following conditions
00009  * are met:
00010  * 1. Redistributions of source code must retain the above copyright
00011  *    notice, and the entire permission notice in its entirety,
00012  *    including the disclaimer of warranties.
00013  * 2. Redistributions in binary form must reproduce the above copyright
00014  *    notice, this list of conditions and the following disclaimer in the
00015  *    documentation and/or other materials provided with the distribution.
00016  * 3. The name of the author may not be used to endorse or promote
00017  *    products derived from this software without specific prior
00018  *    written permission.
00019  * 
00020  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
00021  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00022  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
00023  * WHICH ARE HEREBY DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE
00024  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00025  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
00026  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
00027  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
00028  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00029  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
00030  * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
00031  * DAMAGE.
00032  * %End-Header%
00033  */
00034 
00035 #include <stdio.h>
00036 
00037 #include "uuidP.h"
00038 
00039 static const char *fmt_lower = 
00040         "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x";
00041 
00042 static const char *fmt_upper = 
00043         "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X";
00044 
00045 #ifdef UUID_UNPARSE_DEFAULT_UPPER
00046 #define FMT_DEFAULT fmt_upper
00047 #else
00048 #define FMT_DEFAULT fmt_lower
00049 #endif
00050 
00051 static void uuid_unparse_x(const uuid_t uu, char *out, const char *fmt)
00052 {
00053         struct uuid uuid;
00054 
00055         uuid_unpack(uu, &uuid);
00056         sprintf(out, fmt,
00057                 uuid.time_low, uuid.time_mid, uuid.time_hi_and_version,
00058                 uuid.clock_seq >> 8, uuid.clock_seq & 0xFF,
00059                 uuid.node[0], uuid.node[1], uuid.node[2],
00060                 uuid.node[3], uuid.node[4], uuid.node[5]);
00061 }
00062 
00063 void uuid_unparse_lower(const uuid_t uu, char *out)
00064 {
00065         uuid_unparse_x(uu, out, fmt_lower);
00066 }
00067 
00068 void uuid_unparse_upper(const uuid_t uu, char *out)
00069 {
00070         uuid_unparse_x(uu, out, fmt_upper);
00071 }
00072 
00073 void uuid_unparse(const uuid_t uu, char *out)
00074 {
00075         uuid_unparse_x(uu, out, FMT_DEFAULT);
00076 }

Generated on Sun Sep 24 20:10:49 2006 for WvStreams by  doxygen 1.4.7