diff options
| author | Vijay Bellur <vijay@gluster.com> | 2010-07-15 00:33:03 +0000 | 
|---|---|---|
| committer | Anand V. Avati <avati@dev.gluster.com> | 2010-07-15 03:18:53 -0700 | 
| commit | bb209f56147878ac420e4d1915e989bb11d272a2 (patch) | |
| tree | 2ce9af426bac2dd845d541639e90a836c7657b92 /contrib/uuid/parse.c | |
| parent | 47dc8def246c6338cb95e71b4656962a5f74ee90 (diff) | |
Bring in uuid to contrib
Signed-off-by: Vijay Bellur <vijay@gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>
BUG: 971 (dynamic volume management)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
Diffstat (limited to 'contrib/uuid/parse.c')
| -rw-r--r-- | contrib/uuid/parse.c | 79 | 
1 files changed, 79 insertions, 0 deletions
diff --git a/contrib/uuid/parse.c b/contrib/uuid/parse.c new file mode 100644 index 00000000000..074383efae7 --- /dev/null +++ b/contrib/uuid/parse.c @@ -0,0 +1,79 @@ +/* + * parse.c --- UUID parsing + * + * 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 <stdlib.h> +#include <stdio.h> +#include <ctype.h> +#include <string.h> + +#include "uuidP.h" + +int uuid_parse(const char *in, uuid_t uu) +{ +	struct uuid	uuid; +	int 		i; +	const char	*cp; +	char		buf[3]; + +	if (strlen(in) != 36) +		return -1; +	for (i=0, cp = in; i <= 36; i++,cp++) { +		if ((i == 8) || (i == 13) || (i == 18) || +		    (i == 23)) { +			if (*cp == '-') +				continue; +			else +				return -1; +		} +		if (i== 36) +			if (*cp == 0) +				continue; +		if (!isxdigit(*cp)) +			return -1; +	} +	uuid.time_low = strtoul(in, NULL, 16); +	uuid.time_mid = strtoul(in+9, NULL, 16); +	uuid.time_hi_and_version = strtoul(in+14, NULL, 16); +	uuid.clock_seq = strtoul(in+19, NULL, 16); +	cp = in+24; +	buf[2] = 0; +	for (i=0; i < 6; i++) { +		buf[0] = *cp++; +		buf[1] = *cp++; +		uuid.node[i] = strtoul(buf, NULL, 16); +	} + +	uuid_pack(&uuid, uu); +	return 0; +}  | 
