diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | Makefile.am | 2 | ||||
| -rw-r--r-- | configure.ac | 21 | ||||
| -rw-r--r-- | contrib/uuid/clear.c | 43 | ||||
| -rw-r--r-- | contrib/uuid/compare.c | 55 | ||||
| -rw-r--r-- | contrib/uuid/copy.c | 45 | ||||
| -rw-r--r-- | contrib/uuid/gen_uuid.c | 686 | ||||
| -rw-r--r-- | contrib/uuid/gen_uuid_nt.c | 92 | ||||
| -rw-r--r-- | contrib/uuid/isnull.c | 48 | ||||
| -rw-r--r-- | contrib/uuid/pack.c | 69 | ||||
| -rw-r--r-- | contrib/uuid/parse.c | 79 | ||||
| -rw-r--r-- | contrib/uuid/tst_uuid.c | 180 | ||||
| -rw-r--r-- | contrib/uuid/unpack.c | 63 | ||||
| -rw-r--r-- | contrib/uuid/unparse.c | 76 | ||||
| -rw-r--r-- | contrib/uuid/uuid.h | 104 | ||||
| -rw-r--r-- | contrib/uuid/uuidP.h | 63 | ||||
| -rw-r--r-- | contrib/uuid/uuid_time.c | 171 | ||||
| -rw-r--r-- | contrib/uuid/uuid_types.h.in | 50 | ||||
| -rw-r--r-- | contrib/uuid/uuidd.h | 54 | ||||
| -rw-r--r-- | glusterfs.spec.in | 3 | ||||
| -rw-r--r-- | libglusterfs/src/Makefile.am | 11 | ||||
| -rw-r--r-- | libglusterfs/src/compat-uuid.h | 8 | 
22 files changed, 21 insertions, 1903 deletions
diff --git a/.gitignore b/.gitignore index 4b266e544bd..8a192e1eed3 100644 --- a/.gitignore +++ b/.gitignore @@ -48,7 +48,6 @@ api/src/gfapi.map  cli/src/gluster  contrib/argp-standalone/libargp.a  contrib/fuse-util/fusermount-glusterfs -contrib/uuid/uuid_types.h  extras/geo-rep/gsync-sync-gfid  extras/geo-rep/schedule_georep.py  extras/snap_scheduler/conf.py diff --git a/Makefile.am b/Makefile.am index 80faf1abc78..9d29629a23b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -8,7 +8,6 @@ EXTRA_DIST = autogen.sh \  	build-aux/pkg-version \          contrib/argp-standalone \          contrib/umountd \ -        contrib/uuid \  	$(shell find $(top_srcdir)/tests -type f -print)  SUBDIRS = $(ARGP_STANDALONE_DIR) rpc/xdr/gen libglusterfs rpc api xlators \ @@ -23,7 +22,6 @@ endif  CLEANFILES = glusterfs-api.pc libgfchangelog.pc libgfdb.pc \  	contrib/umountd/Makefile -CONFIG_CLEAN_FILES = $(CONTRIB_BUILDDIR)/uuid/uuid_types.h  gitclean: distclean  	find . -name Makefile.in -exec rm -f {} \; diff --git a/configure.ac b/configure.ac index 3c9602033e0..e8fd0ea6952 100644 --- a/configure.ac +++ b/configure.ac @@ -272,7 +272,6 @@ AC_CONFIG_FILES([Makefile                  events/tools/Makefile                  contrib/fuse-util/Makefile                  contrib/umountd/Makefile -                contrib/uuid/uuid_types.h                  glusterfs-api.pc                  libgfchangelog.pc                  libgfdb.pc @@ -504,13 +503,12 @@ dnl Math library  AC_CHECK_LIB([m], [pow], [MATH_LIB='-lm'], [MATH_LIB=''])  AC_SUBST(MATH_LIB) -dnl use libuuid.so or fall-back to contrib/uuid +dnl depend on libuuid.so  PKG_CHECK_MODULES([UUID], [uuid],          [have_uuid=yes           AC_DEFINE(HAVE_LIBUUID, 1, [have libuuid.so])           PKGCONFIG_UUID=uuid], -        [have_uuid=no -         UUID_CFLAGS='-I$(CONTRIBDIR)/uuid']) +        [have_uuid=no])  AM_CONDITIONAL([HAVE_LIBUUID], [test x$have_uuid = xyes])  dnl older version of libuuid (from e2fsprogs) require including uuid/uuid.h @@ -524,6 +522,21 @@ AC_CHECK_HEADER([uuid.h], [], [AC_CHECK_HEADER([uuid/uuid.h])],  CFLAGS=${saved_CFLAGS}  if test "x$ac_cv_header_uuid_uuid_h" = "xyes"; then      UUID_CFLAGS="${UUID_CFLAGS} -I$(pkg-config --variable=includedir uuid)/uuid" +    have_uuid=yes +fi + +if test "x$have_uuid" != "xyes"; then +    case $host_os in +        *freebsd*) +            AC_MSG_ERROR([e2fsprogs-libuuid is required to build glusterfs]) +            ;; +        linux*) +            AC_MSG_ERROR([libuuid is required to build glusterfs]) +            ;; +        *) +            AC_MSG_ERROR([a Linux compatible libuuid is required to build glusterfs]) +            ;; +    esac  fi  dnl libglusterfs needs uuid.h, practically everything depends on it diff --git a/contrib/uuid/clear.c b/contrib/uuid/clear.c deleted file mode 100644 index 0362d073e3d..00000000000 --- a/contrib/uuid/clear.c +++ /dev/null @@ -1,43 +0,0 @@ -/* - * clear.c -- Clear a UUID - * - * 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 gf_uuid_clear(uuid_t uu) -{ -	memset(uu, 0, 16); -} - diff --git a/contrib/uuid/compare.c b/contrib/uuid/compare.c deleted file mode 100644 index dba4c5bf8cf..00000000000 --- a/contrib/uuid/compare.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * compare.c --- compare whether or not two UUID's are the same - * - * Returns 0 if the two UUID's are different, and 1 if they are the same. - * - * 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 "uuidP.h" -#include <string.h> - -#define UUCMP(u1,u2) if (u1 != u2) return((u1 < u2) ? -1 : 1); - -int gf_uuid_compare(const uuid_t uu1, const uuid_t uu2) -{ -	struct uuid	uuid1, uuid2; - -	uuid_unpack(uu1, &uuid1); -	uuid_unpack(uu2, &uuid2); - -	UUCMP(uuid1.time_low, uuid2.time_low); -	UUCMP(uuid1.time_mid, uuid2.time_mid); -	UUCMP(uuid1.time_hi_and_version, uuid2.time_hi_and_version); -	UUCMP(uuid1.clock_seq, uuid2.clock_seq); -	return memcmp(uuid1.node, uuid2.node, 6); -} - diff --git a/contrib/uuid/copy.c b/contrib/uuid/copy.c deleted file mode 100644 index 45983bfd48b..00000000000 --- a/contrib/uuid/copy.c +++ /dev/null @@ -1,45 +0,0 @@ -/* - * copy.c --- copy UUIDs - * - * 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 "uuidP.h" - -void gf_uuid_copy(uuid_t dst, const uuid_t src) -{ -	unsigned char		*cp1; -	const unsigned char	*cp2; -	int			i; - -	for (i=0, cp1 = dst, cp2 = src; i < 16; i++) -		*cp1++ = *cp2++; -} diff --git a/contrib/uuid/gen_uuid.c b/contrib/uuid/gen_uuid.c deleted file mode 100644 index 1ec156f76ff..00000000000 --- a/contrib/uuid/gen_uuid.c +++ /dev/null @@ -1,686 +0,0 @@ -/* - * gen_uuid.c --- generate a DCE-compatible uuid - * - * Copyright (C) 1996, 1997, 1998, 1999 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% - */ - -/* - * Force inclusion of SVID stuff since we need it if we're compiling in - * gcc-wall wall mode - */ -#define _SVID_SOURCE - -#include "config.h" -#ifdef _WIN32 -#define _WIN32_WINNT 0x0500 -#include <windows.h> -#define UUID MYUUID -#endif -#include <stdio.h> -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif -#ifdef HAVE_STDLIB_H -#include <stdlib.h> -#endif -#include <string.h> -#include <fcntl.h> -#include <errno.h> -#include <sys/types.h> -#ifdef HAVE_SYS_TIME_H -#include <sys/time.h> -#endif -#include <sys/wait.h> -#include <sys/stat.h> -#ifdef HAVE_SYS_FILE_H -#include <sys/file.h> -#endif -#ifdef HAVE_SYS_IOCTL_H -#include <sys/ioctl.h> -#endif -#ifdef HAVE_SYS_SOCKET_H -#include <sys/socket.h> -#endif -#ifdef HAVE_SYS_UN_H -#include <sys/un.h> -#endif -#ifdef HAVE_SYS_SOCKIO_H -#include <sys/sockio.h> -#endif -#ifdef HAVE_NET_IF_H -#include <net/if.h> -#endif -#ifdef HAVE_NETINET_IN_H -#include <netinet/in.h> -#endif -#ifdef HAVE_NET_IF_DL_H -#include <net/if_dl.h> -#endif -#if defined(__linux__) && defined(HAVE_SYS_SYSCALL_H) -#include <sys/syscall.h> -#endif -#ifdef HAVE_SYS_RESOURCE_H -#include <sys/resource.h> -#endif -#include <limits.h> - -#include "uuidP.h" -#include "uuidd.h" - -#ifdef HAVE_SRANDOM -#define srand(x) 	srandom(x) -#define rand() 		random() -#endif - -#ifdef TLS -#define THREAD_LOCAL static TLS -#else -#define THREAD_LOCAL static -#endif - -#if defined(__linux__) && defined(__NR_gettid) && defined(HAVE_JRAND48) -#define DO_JRAND_MIX -THREAD_LOCAL unsigned short jrand_seed[3]; -#endif - -#ifndef OPEN_MAX -#define OPEN_MAX 1024 -#endif - -#ifdef _WIN32 -static void gettimeofday (struct timeval *tv, void *dummy) -{ -	FILETIME	ftime; -	uint64_t	n; - -	GetSystemTimeAsFileTime (&ftime); -	n = (((uint64_t) ftime.dwHighDateTime << 32) -	     + (uint64_t) ftime.dwLowDateTime); -	if (n) { -		n /= 10; -		n -= ((369 * 365 + 89) * (uint64_t) 86400) * 1000000; -	} - -	tv->tv_sec = n / 1000000; -	tv->tv_usec = n % 1000000; -} - -static int getuid (void) -{ -	return 1; -} -#endif - -static int get_random_fd(void) -{ -	struct timeval	tv; -	static int	fd = -2; -	int		i; - -	if (fd == -2) { -		gettimeofday(&tv, 0); -#ifndef _WIN32 -		fd = open("/dev/urandom", O_RDONLY); -		if (fd == -1) -			fd = open("/dev/random", O_RDONLY | O_NONBLOCK); -		if (fd >= 0) { -			i = fcntl(fd, F_GETFD); -			if (i >= 0) -				fcntl(fd, F_SETFD, i | FD_CLOEXEC); -		} -#endif -		srand((getpid() << 16) ^ getuid() ^ tv.tv_sec ^ tv.tv_usec); -#ifdef DO_JRAND_MIX -		jrand_seed[0] = getpid() ^ (tv.tv_sec & 0xFFFF); -		jrand_seed[1] = getppid() ^ (tv.tv_usec & 0xFFFF); -		jrand_seed[2] = (tv.tv_sec ^ tv.tv_usec) >> 16; -#endif -	} -	/* Crank the random number generator a few times */ -	gettimeofday(&tv, 0); -	for (i = (tv.tv_sec ^ tv.tv_usec) & 0x1F; i > 0; i--) -		rand(); -	return fd; -} - - -/* - * Generate a series of random bytes.  Use /dev/urandom if possible, - * and if not, use srandom/random. - */ -static void get_random_bytes(void *buf, int nbytes) -{ -	int i, n = nbytes, fd = get_random_fd(); -	int lose_counter = 0; -	unsigned char *cp = (unsigned char *) buf; -#ifdef DO_JRAND_MIX -	unsigned short tmp_seed[3]; -#endif -	if (fd >= 0) { -		while (n > 0) { -			i = read(fd, cp, n); -			if (i <= 0) { -				if (lose_counter++ > 16) -					break; -				continue; -			} -			n -= i; -			cp += i; -			lose_counter = 0; -		} -	} - -	/* -	 * We do this all the time, but this is the only source of -	 * randomness if /dev/random/urandom is out to lunch. -	 */ -	for (cp = buf, i = 0; i < nbytes; i++) -		*cp++ ^= (rand() >> 7) & 0xFF; -#ifdef DO_JRAND_MIX -	memcpy(tmp_seed, jrand_seed, sizeof(tmp_seed)); -	jrand_seed[2] = jrand_seed[2] ^ syscall(__NR_gettid); -	for (cp = buf, i = 0; i < nbytes; i++) -		*cp++ ^= (jrand48(tmp_seed) >> 7) & 0xFF; -	memcpy(jrand_seed, tmp_seed, -	       sizeof(jrand_seed)-sizeof(unsigned short)); -#endif - -	return; -} - -/* - * Get the ethernet hardware address, if we can find it... - * - * XXX for a windows version, probably should use GetAdaptersInfo: - * http://www.codeguru.com/cpp/i-n/network/networkinformation/article.php/c5451 - * commenting out get_node_id just to get gen_uuid to compile under windows - * is not the right way to go! - */ -static int get_node_id(unsigned char *node_id) -{ -#ifdef HAVE_NET_IF_H -	int 		sd; -	struct ifreq 	ifr, *ifrp; -	struct ifconf 	ifc; -	char buf[1024]; -	int		n, i; -	unsigned char 	*a; -#ifdef HAVE_NET_IF_DL_H -	struct sockaddr_dl *sdlp; -#endif - -/* - * BSD 4.4 defines the size of an ifreq to be - * max(sizeof(ifreq), sizeof(ifreq.ifr_name)+ifreq.ifr_addr.sa_len - * However, under earlier systems, sa_len isn't present, so the size is - * just sizeof(struct ifreq) - */ -#ifdef HAVE_SA_LEN -#ifndef max -#define max(a,b) ((a) > (b) ? (a) : (b)) -#endif -#define ifreq_size(i) max(sizeof(struct ifreq),\ -     sizeof((i).ifr_name)+(i).ifr_addr.sa_len) -#else -#define ifreq_size(i) sizeof(struct ifreq) -#endif /* HAVE_SA_LEN*/ - -	sd = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP); -	if (sd < 0) { -		return -1; -	} -	memset(buf, 0, sizeof(buf)); -	ifc.ifc_len = sizeof(buf); -	ifc.ifc_buf = buf; -	if (ioctl (sd, SIOCGIFCONF, (char *)&ifc) < 0) { -		close(sd); -		return -1; -	} -	n = ifc.ifc_len; -	for (i = 0; i < n; i+= ifreq_size(*ifrp) ) { -		ifrp = (struct ifreq *)((char *) ifc.ifc_buf+i); -		strncpy(ifr.ifr_name, ifrp->ifr_name, IFNAMSIZ); -#ifdef SIOCGIFHWADDR -		if (ioctl(sd, SIOCGIFHWADDR, &ifr) < 0) -			continue; -		a = (unsigned char *) &ifr.ifr_hwaddr.sa_data; -#else -#ifdef SIOCGENADDR -		if (ioctl(sd, SIOCGENADDR, &ifr) < 0) -			continue; -		a = (unsigned char *) ifr.ifr_enaddr; -#else -#ifdef HAVE_NET_IF_DL_H -		sdlp = (struct sockaddr_dl *) &ifrp->ifr_addr; -		if ((sdlp->sdl_family != AF_LINK) || (sdlp->sdl_alen != 6)) -			continue; -		a = (unsigned char *) &sdlp->sdl_data[sdlp->sdl_nlen]; -#else -		/* -		 * XXX we don't have a way of getting the hardware -		 * address -		 */ -		close(sd); -		return 0; -#endif /* HAVE_NET_IF_DL_H */ -#endif /* SIOCGENADDR */ -#endif /* SIOCGIFHWADDR */ -		if (!a[0] && !a[1] && !a[2] && !a[3] && !a[4] && !a[5]) -			continue; -		if (node_id) { -			memcpy(node_id, a, 6); -			close(sd); -			return 1; -		} -	} -	close(sd); -#endif -	return 0; -} - -/* Assume that the gettimeofday() has microsecond granularity */ -#define MAX_ADJUSTMENT 10 - -static int get_clock(uint32_t *clock_high, uint32_t *clock_low, -		     uint16_t *ret_clock_seq, int *num) -{ -	THREAD_LOCAL int		adjustment = 0; -	THREAD_LOCAL struct timeval	last = {0, 0}; -	THREAD_LOCAL int		state_fd = -2; -	THREAD_LOCAL FILE		*state_f; -	THREAD_LOCAL uint16_t		clock_seq; -	struct timeval 			tv; -	struct flock			fl; -	uint64_t			clock_reg; -	mode_t				save_umask; -	int				len; - -	if (state_fd == -2) { -		save_umask = umask(0); -		state_fd = open("/var/lib/libuuid/clock.txt", -				O_RDWR|O_CREAT, 0660); -		(void) umask(save_umask); -		state_f = fdopen(state_fd, "r+"); -		if (!state_f) { -			close(state_fd); -			state_fd = -1; -		} -	} -	fl.l_type = F_WRLCK; -	fl.l_whence = SEEK_SET; -	fl.l_start = 0; -	fl.l_len = 0; -	fl.l_pid = 0; -	if (state_fd >= 0) { -		rewind(state_f); -		while (fcntl(state_fd, F_SETLKW, &fl) < 0) { -			if ((errno == EAGAIN) || (errno == EINTR)) -				continue; -			fclose(state_f); -			close(state_fd); -			state_fd = -1; -			break; -		} -	} -	if (state_fd >= 0) { -		unsigned int cl; -		unsigned long tv1, tv2; -		int a; - -		if (fscanf(state_f, "clock: %04x tv: %lu %lu adj: %d\n", -			   &cl, &tv1, &tv2, &a) == 4) { -			clock_seq = cl & 0x3FFF; -			last.tv_sec = tv1; -			last.tv_usec = tv2; -			adjustment = a; -		} -	} - -	if ((last.tv_sec == 0) && (last.tv_usec == 0)) { -		get_random_bytes(&clock_seq, sizeof(clock_seq)); -		clock_seq &= 0x3FFF; -		gettimeofday(&last, 0); -		last.tv_sec--; -	} - -try_again: -	gettimeofday(&tv, 0); -	if ((tv.tv_sec < last.tv_sec) || -	    ((tv.tv_sec == last.tv_sec) && -	     (tv.tv_usec < last.tv_usec))) { -		clock_seq = (clock_seq+1) & 0x3FFF; -		adjustment = 0; -		last = tv; -	} else if ((tv.tv_sec == last.tv_sec) && -	    (tv.tv_usec == last.tv_usec)) { -		if (adjustment >= MAX_ADJUSTMENT) -			goto try_again; -		adjustment++; -	} else { -		adjustment = 0; -		last = tv; -	} - -	clock_reg = tv.tv_usec*10 + adjustment; -	clock_reg += ((uint64_t) tv.tv_sec)*10000000; -	clock_reg += (((uint64_t) 0x01B21DD2) << 32) + 0x13814000; - -	if (num && (*num > 1)) { -		adjustment += *num - 1; -		last.tv_usec += adjustment / 10; -		adjustment = adjustment % 10; -		last.tv_sec += last.tv_usec / 1000000; -		last.tv_usec = last.tv_usec % 1000000; -	} - -	if (state_fd > 0) { -		rewind(state_f); -		len = fprintf(state_f,  -			      "clock: %04x tv: %016lu %08lu adj: %08d\n", -			      clock_seq, last.tv_sec, last.tv_usec, adjustment); -		fflush(state_f); -		if (ftruncate(state_fd, len) < 0) { -			fprintf(state_f, "                   \n"); -			fflush(state_f); -		} -		rewind(state_f); -		fl.l_type = F_UNLCK; -		fcntl(state_fd, F_SETLK, &fl); -	} - -	*clock_high = clock_reg >> 32; -	*clock_low = clock_reg; -	*ret_clock_seq = clock_seq; -	return 0; -} - -#if defined(USE_UUIDD) && defined(HAVE_SYS_UN_H) -static ssize_t read_all(int fd, char *buf, size_t count) -{ -	ssize_t ret; -	ssize_t c = 0; -	int tries = 0; - -	memset(buf, 0, count); -	while (count > 0) { -		ret = read(fd, buf, count); -		if (ret <= 0) { -			if ((errno == EAGAIN || errno == EINTR || ret == 0) && -			    (tries++ < 5)) -				continue; -			return c ? c : -1; -		} -		if (ret > 0) -			tries = 0; -		count -= ret; -		buf += ret; -		c += ret; -	} -	return c; -} -#endif - -/* - * Close all file descriptors - */ -#if defined(USE_UUIDD) && defined(HAVE_SYS_UN_H) -static void close_all_fds(void) -{ -#ifdef F_CLOSEM -	(void)fcntl(0, F_CLOSEM); -	(void)open("/dev/null", O_RDWR); /* stdin */ -	(void)open("/dev/null", O_RDWR); /* stdout */ -	(void)open("/dev/null", O_RDWR); /* stderr */ -#else /* F_CLOSEM */ -	int i, max; - -#if defined(HAVE_SYSCONF) && defined(_SC_OPEN_MAX) -	max = sysconf(_SC_OPEN_MAX); -#elif defined(HAVE_GETDTABLESIZE) -	max = getdtablesize(); -#elif defined(HAVE_GETRLIMIT) && defined(RLIMIT_NOFILE) -	struct rlimit rl; - -	getrlimit(RLIMIT_NOFILE, &rl); -	max = rl.rlim_cur; -#else -	max = OPEN_MAX; -#endif - -	for (i=0; i < max; i++) { -		close(i); -		if (i <= 2) -			open("/dev/null", O_RDWR); -	} -#endif /* F_CLOSEM */ -} -#endif - - -/* - * Try using the uuidd daemon to generate the UUID - * - * Returns 0 on success, non-zero on failure. - */ -static int get_uuid_via_daemon(int op, uuid_t out, int *num) -{ -#if defined(USE_UUIDD) && defined(HAVE_SYS_UN_H) -	char op_buf[64]; -	int op_len; -	int s; -	ssize_t ret; -	int32_t reply_len = 0, expected = 16; -	struct sockaddr_un srv_addr; -	struct stat st; -	pid_t pid; -	static const char *uuidd_path = UUIDD_PATH; -	static int access_ret = -2; -	static int start_attempts = 0; - -	if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) -		return -1; - -	srv_addr.sun_family = AF_UNIX; -	strcpy(srv_addr.sun_path, UUIDD_SOCKET_PATH); - -	if (connect(s, (const struct sockaddr *) &srv_addr, -		    sizeof(struct sockaddr_un)) < 0) { -		if (access_ret == -2) -			access_ret = access(uuidd_path, X_OK); -		if (access_ret == 0) -			access_ret = stat(uuidd_path, &st); -		if (access_ret == 0 && (st.st_mode & (S_ISUID | S_ISGID)) == 0) -			access_ret = access(UUIDD_DIR, W_OK); -		if (access_ret == 0 && start_attempts++ < 5) { -			if ((pid = fork()) == 0) { -				close_all_fds(); -				execl(uuidd_path, "uuidd", "-qT", "300", -				      (char *) NULL); -				exit(1); -			} -			(void) waitpid(pid, 0, 0); -			if (connect(s, (const struct sockaddr *) &srv_addr, -				    sizeof(struct sockaddr_un)) < 0) -				goto fail; -		} else -			goto fail; -	} -	op_buf[0] = op; -	op_len = 1; -	if (op == UUIDD_OP_BULK_TIME_UUID) { -		memcpy(op_buf+1, num, sizeof(*num)); -		op_len += sizeof(*num); -		expected += sizeof(*num); -	} - -	ret = write(s, op_buf, op_len); -	if (ret < 1) -		goto fail; - -	ret = read_all(s, (char *) &reply_len, sizeof(reply_len)); -	if (ret < 0) -		goto fail; - -	if (reply_len != expected) -		goto fail; - -	ret = read_all(s, op_buf, reply_len); - -	if (op == UUIDD_OP_BULK_TIME_UUID) -		memcpy(op_buf+16, num, sizeof(int)); - -	memcpy(out, op_buf, 16); - -	close(s); -	return ((ret == expected) ? 0 : -1); - -fail: -	close(s); -#endif -	return -1; -} - -void uuid__generate_time(uuid_t out, int *num) -{ -	static unsigned char node_id[6]; -	static int has_init = 0; -	struct uuid uu; -	uint32_t	clock_mid; - -	if (!has_init) { -		if (get_node_id(node_id) <= 0) { -			get_random_bytes(node_id, 6); -			/* -			 * Set multicast bit, to prevent conflicts -			 * with IEEE 802 addresses obtained from -			 * network cards -			 */ -			node_id[0] |= 0x01; -		} -		has_init = 1; -	} -	get_clock(&clock_mid, &uu.time_low, &uu.clock_seq, num); -	uu.clock_seq |= 0x8000; -	uu.time_mid = (uint16_t) clock_mid; -	uu.time_hi_and_version = ((clock_mid >> 16) & 0x0FFF) | 0x1000; -	memcpy(uu.node, node_id, 6); -	uuid_pack(&uu, out); -} - -void gf_uuid_generate_time(uuid_t out) -{ -#ifdef TLS -	THREAD_LOCAL int		num = 0; -	THREAD_LOCAL struct uuid	uu; -	THREAD_LOCAL time_t		last_time = 0; -	time_t				now; - -	if (num > 0) { -		now = time(0); -		if (now > last_time+1) -			num = 0; -	} -	if (num <= 0) { -		num = 1000; -		if (get_uuid_via_daemon(UUIDD_OP_BULK_TIME_UUID, -					out, &num) == 0) { -			last_time = time(0); -			uuid_unpack(out, &uu); -			num--; -			return; -		} -		num = 0; -	} -	if (num > 0) { -		uu.time_low++; -		if (uu.time_low == 0) { -			uu.time_mid++; -			if (uu.time_mid == 0) -				uu.time_hi_and_version++; -		} -		num--; -		uuid_pack(&uu, out); -		return; -	} -#else -	if (get_uuid_via_daemon(UUIDD_OP_TIME_UUID, out, 0) == 0) -		return; -#endif - -	uuid__generate_time(out, 0); -} - - -void uuid__generate_random(uuid_t out, int *num) -{ -	uuid_t	buf; -	struct uuid uu; -	int i, n; - -	if (!num || !*num) -		n = 1; -	else -		n = *num; - -	for (i = 0; i < n; i++) { -		get_random_bytes(buf, sizeof(buf)); -		uuid_unpack(buf, &uu); - -		uu.clock_seq = (uu.clock_seq & 0x3FFF) | 0x8000; -		uu.time_hi_and_version = (uu.time_hi_and_version & 0x0FFF) -			| 0x4000; -		uuid_pack(&uu, out); -		out += sizeof(uuid_t); -	} -} - -void gf_uuid_generate_random(uuid_t out) -{ -	int	num = 1; -	/* No real reason to use the daemon for random uuid's -- yet */ - -	uuid__generate_random(out, &num); -} - - -/* - * This is the generic front-end to gf_uuid_generate_random and - * gf_uuid_generate_time.  It uses gf_uuid_generate_random only if - * /dev/urandom is available, since otherwise we won't have - * high-quality randomness. - */ -void gf_uuid_generate(uuid_t out) -{ -	if (get_random_fd() >= 0) -		gf_uuid_generate_random(out); -	else -		gf_uuid_generate_time(out); -} diff --git a/contrib/uuid/gen_uuid_nt.c b/contrib/uuid/gen_uuid_nt.c deleted file mode 100644 index 88ec49468ef..00000000000 --- a/contrib/uuid/gen_uuid_nt.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * gen_uuid_nt.c -- Use NT api to generate uuid - * - * Written by Andrey Shedel (andreys@ns.cr.cyco.com) - */ - - -#include "uuidP.h" - -#pragma warning(push,4) - -#pragma comment(lib, "ntdll.lib") - -// -// Here is a nice example why it's not a good idea -// to use native API in ordinary applications. -// Number of parameters in function below was changed from 3 to 4 -// for NT5. -// -// -// NTSYSAPI -// NTSTATUS -// NTAPI -// NtAllocateUuids( -//     OUT PULONG p1, -//     OUT PULONG p2, -//     OUT PULONG p3, -//     OUT PUCHAR Seed // 6 bytes -//   ); -// -// - -unsigned long -__stdcall -NtAllocateUuids( -   void* p1,  // 8 bytes -   void* p2,  // 4 bytes -   void* p3   // 4 bytes -   ); - -typedef -unsigned long -(__stdcall* -NtAllocateUuids_2000)( -   void* p1,  // 8 bytes -   void* p2,  // 4 bytes -   void* p3,  // 4 bytes -   void* seed // 6 bytes -   ); - - - -// -// Nice, but instead of including ntddk.h or winnt.h -// I should define it here because they MISSED __stdcall in those headers. -// - -__declspec(dllimport) -struct _TEB* -__stdcall -NtCurrentTeb(void); - - -// -// The only way to get version information from the system is to examine -// one stored in PEB. But it's pretty dangerouse because this value could -// be altered in image header. -// - -static -int -Nt5(void) -{ -	//return NtCuttentTeb()->Peb->OSMajorVersion >= 5; -	return (int)*(int*)((char*)(int)(*(int*)((char*)NtCurrentTeb() + 0x30)) + 0xA4) >= 5; -} - - - - -void gf_uuid_generate(uuid_t out) -{ -	if(Nt5()) -	{ -		unsigned char seed[6]; -		((NtAllocateUuids_2000)NtAllocateUuids)(out, ((char*)out)+8, ((char*)out)+12, &seed[0] ); -	} -	else -	{ -		NtAllocateUuids(out, ((char*)out)+8, ((char*)out)+12); -	} -} diff --git a/contrib/uuid/isnull.c b/contrib/uuid/isnull.c deleted file mode 100644 index 20d8fcef6da..00000000000 --- a/contrib/uuid/isnull.c +++ /dev/null @@ -1,48 +0,0 @@ -/* - * isnull.c --- Check whether or not the UUID is null - * - * 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 "uuidP.h" - -/* Returns 1 if the uuid is the NULL uuid */ -int gf_uuid_is_null(const uuid_t uu) -{ -	const unsigned char 	*cp; -	int			i; - -	for (i=0, cp = uu; i < 16; i++) -		if (*cp++) -			return 0; -	return 1; -} - diff --git a/contrib/uuid/pack.c b/contrib/uuid/pack.c deleted file mode 100644 index 097516d2e2f..00000000000 --- a/contrib/uuid/pack.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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); -} - diff --git a/contrib/uuid/parse.c b/contrib/uuid/parse.c deleted file mode 100644 index 059ae437805..00000000000 --- a/contrib/uuid/parse.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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 gf_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; -} diff --git a/contrib/uuid/tst_uuid.c b/contrib/uuid/tst_uuid.c deleted file mode 100644 index 865564b0c34..00000000000 --- a/contrib/uuid/tst_uuid.c +++ /dev/null @@ -1,180 +0,0 @@ -/* - * tst_uuid.c --- test program from the UUID library - * - * Copyright (C) 1996, 1997, 1998 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% - */ - -#ifdef _WIN32 -#define _WIN32_WINNT 0x0500 -#include <windows.h> -#define UUID MYUUID -#endif - -#include <stdio.h> -#include <stdlib.h> - -#include "uuid.h" - -static int test_uuid(const char * uuid, int isValid) -{ -	static const char * validStr[2] = {"invalid", "valid"}; -	uuid_t uuidBits; -	int parsedOk; - -	parsedOk = gf_uuid_parse(uuid, uuidBits) == 0; - -	printf("%s is %s", uuid, validStr[isValid]); -	if (parsedOk != isValid) { -		printf(" but gf_uuid_parse says %s\n", validStr[parsedOk]); -		return 1; -	} -	printf(", OK\n"); -	return 0; -} - -#ifdef __GNUC__ -#define ATTR(x) __attribute__(x) -#else -#define ATTR(x) -#endif - -int -main(int argc ATTR((unused)) , char **argv ATTR((unused))) -{ -	uuid_t		buf, tst; -	char		str[100]; -	struct timeval	tv; -	time_t		time_reg; -	unsigned char	*cp; -	int i; -	int failed = 0; -	int type, variant; - -	gf_uuid_generate(buf); -	gf_uuid_unparse(buf, str); -	printf("UUID generate = %s\n", str); -	printf("UUID: "); -	for (i=0, cp = (unsigned char *) &buf; i < 16; i++) { -		printf("%02x", *cp++); -	} -	printf("\n"); -	type = gf_uuid_type(buf); 	variant = gf_uuid_variant(buf); -	printf("UUID type = %d, UUID variant = %d\n", type, variant); -	if (variant != UUID_VARIANT_DCE) { -		printf("Incorrect UUID Variant; was expecting DCE!\n"); -		failed++; -	} -	printf("\n"); - -	gf_uuid_generate_random(buf); -	gf_uuid_unparse(buf, str); -	printf("UUID random string = %s\n", str); -	printf("UUID: "); -	for (i=0, cp = (unsigned char *) &buf; i < 16; i++) { -		printf("%02x", *cp++); -	} -	printf("\n"); -	type = gf_uuid_type(buf); 	variant = gf_uuid_variant(buf); -	printf("UUID type = %d, UUID variant = %d\n", type, variant); -	if (variant != UUID_VARIANT_DCE) { -		printf("Incorrect UUID Variant; was expecting DCE!\n"); -		failed++; -	} -	if (type != 4) { -		printf("Incorrect UUID type; was expecting " -		       "4 (random type)!\n"); -		failed++; -	} -	printf("\n"); - -	gf_uuid_generate_time(buf); -	gf_uuid_unparse(buf, str); -	printf("UUID string = %s\n", str); -	printf("UUID time: "); -	for (i=0, cp = (unsigned char *) &buf; i < 16; i++) { -		printf("%02x", *cp++); -	} -	printf("\n"); -	type = gf_uuid_type(buf); 	variant = gf_uuid_variant(buf); -	printf("UUID type = %d, UUID variant = %d\n", type, variant); -	if (variant != UUID_VARIANT_DCE) { -		printf("Incorrect UUID Variant; was expecting DCE!\n"); -		failed++; -	} -	if (type != 1) { -		printf("Incorrect UUID type; was expecting " -		       "1 (time-based type)!\\n"); -		failed++; -	} -	tv.tv_sec = 0; -	tv.tv_usec = 0; -	time_reg = gf_uuid_time(buf, &tv); -	printf("UUID time is: (%ld, %ld): %s\n", tv.tv_sec, tv.tv_usec, -	       ctime(&time_reg)); -	gf_uuid_parse(str, tst); -	if (!gf_uuid_compare(buf, tst)) -		printf("UUID parse and compare succeeded.\n"); -	else { -		printf("UUID parse and compare failed!\n"); -		failed++; -	} -	gf_uuid_clear(tst); -	if (gf_uuid_is_null(tst)) -		printf("UUID clear and is null succeeded.\n"); -	else { -		printf("UUID clear and is null failed!\n"); -		failed++; -	} -	gf_uuid_copy(buf, tst); -	if (!gf_uuid_compare(buf, tst)) -		printf("UUID copy and compare succeeded.\n"); -	else { -		printf("UUID copy and compare failed!\n"); -		failed++; -	} -	failed += test_uuid("84949cc5-4701-4a84-895b-354c584a981b", 1); -	failed += test_uuid("84949CC5-4701-4A84-895B-354C584A981B", 1); -	failed += test_uuid("84949cc5-4701-4a84-895b-354c584a981bc", 0); -	failed += test_uuid("84949cc5-4701-4a84-895b-354c584a981", 0); -	failed += test_uuid("84949cc5x4701-4a84-895b-354c584a981b", 0); -	failed += test_uuid("84949cc504701-4a84-895b-354c584a981b", 0); -	failed += test_uuid("84949cc5-470104a84-895b-354c584a981b", 0); -	failed += test_uuid("84949cc5-4701-4a840895b-354c584a981b", 0); -	failed += test_uuid("84949cc5-4701-4a84-895b0354c584a981b", 0); -	failed += test_uuid("g4949cc5-4701-4a84-895b-354c584a981b", 0); -	failed += test_uuid("84949cc5-4701-4a84-895b-354c584a981g", 0); - -	if (failed) { -		printf("%d failures.\n", failed); -		exit(1); -	} -	return 0; -} diff --git a/contrib/uuid/unpack.c b/contrib/uuid/unpack.c deleted file mode 100644 index beaaff3ca8a..00000000000 --- a/contrib/uuid/unpack.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Internal routine for unpacking UUID - * - * 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_unpack(const uuid_t in, struct uuid *uu) -{ -	const uint8_t	*ptr = in; -	uint32_t		tmp; - -	tmp = *ptr++; -	tmp = (tmp << 8) | *ptr++; -	tmp = (tmp << 8) | *ptr++; -	tmp = (tmp << 8) | *ptr++; -	uu->time_low = tmp; - -	tmp = *ptr++; -	tmp = (tmp << 8) | *ptr++; -	uu->time_mid = tmp; - -	tmp = *ptr++; -	tmp = (tmp << 8) | *ptr++; -	uu->time_hi_and_version = tmp; - -	tmp = *ptr++; -	tmp = (tmp << 8) | *ptr++; -	uu->clock_seq = tmp; - -	memcpy(uu->node, ptr, 6); -} - diff --git a/contrib/uuid/unparse.c b/contrib/uuid/unparse.c deleted file mode 100644 index f6e29534140..00000000000 --- a/contrib/uuid/unparse.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * unparse.c -- convert a UUID to string - * - * 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 <stdio.h> - -#include "uuidP.h" - -static const char *fmt_lower = -	"%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x"; - -static const char *fmt_upper = -	"%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X"; - -#ifdef UUID_UNPARSE_DEFAULT_UPPER -#define FMT_DEFAULT fmt_upper -#else -#define FMT_DEFAULT fmt_lower -#endif - -static void gf_uuid_unparse_x(const uuid_t uu, char *out, const char *fmt) -{ -	struct uuid uuid; - -	uuid_unpack(uu, &uuid); -	sprintf(out, fmt, -		uuid.time_low, uuid.time_mid, uuid.time_hi_and_version, -		uuid.clock_seq >> 8, uuid.clock_seq & 0xFF, -		uuid.node[0], uuid.node[1], uuid.node[2], -		uuid.node[3], uuid.node[4], uuid.node[5]); -} - -void gf_uuid_unparse_lower(const uuid_t uu, char *out) -{ -	gf_uuid_unparse_x(uu, out,	fmt_lower); -} - -void gf_uuid_unparse_upper(const uuid_t uu, char *out) -{ -	gf_uuid_unparse_x(uu, out,	fmt_upper); -} - -void gf_uuid_unparse(const uuid_t uu, char *out) -{ -	gf_uuid_unparse_x(uu, out, FMT_DEFAULT); -} diff --git a/contrib/uuid/uuid.h b/contrib/uuid/uuid.h deleted file mode 100644 index 97de360ad52..00000000000 --- a/contrib/uuid/uuid.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Public include file for the UUID library - * - * Copyright (C) 1996, 1997, 1998 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% - */ - -#ifndef _UUID_UUID_H -#define _UUID_UUID_H - -#include "config.h" -#include <sys/types.h> -#ifndef _WIN32 -#include <sys/time.h> -#endif -#include <time.h> - -typedef unsigned char uuid_t[16]; - -/* UUID Variant definitions */ -#define UUID_VARIANT_NCS 	0 -#define UUID_VARIANT_DCE 	1 -#define UUID_VARIANT_MICROSOFT	2 -#define UUID_VARIANT_OTHER	3 - -/* UUID Type definitions */ -#define UUID_TYPE_DCE_TIME   1 -#define UUID_TYPE_DCE_RANDOM 4 - -/* Allow UUID constants to be defined */ -#ifdef __GNUC__ -#define UUID_DEFINE(name,u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15) \ -	static const uuid_t name __attribute__ ((unused)) = {u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15} -#else -#define UUID_DEFINE(name,u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15) \ -	static const uuid_t name = {u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15} -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* clear.c */ -void gf_uuid_clear(uuid_t uu); - -/* compare.c */ -int gf_uuid_compare(const uuid_t uu1, const uuid_t uu2); - -/* copy.c */ -void gf_uuid_copy(uuid_t dst, const uuid_t src); - -/* gen_uuid.c */ -void gf_uuid_generate(uuid_t out); -void gf_uuid_generate_random(uuid_t out); -void gf_uuid_generate_time(uuid_t out); - -/* isnull.c */ -int gf_uuid_is_null(const uuid_t uu); - -/* parse.c */ -int gf_uuid_parse(const char *in, uuid_t uu); - -/* unparse.c */ -void gf_uuid_unparse(const uuid_t uu, char *out); -void gf_uuid_unparse_lower(const uuid_t uu, char *out); -void gf_uuid_unparse_upper(const uuid_t uu, char *out); - -/* uuid_time.c */ -time_t gf_uuid_time(const uuid_t uu, struct timeval *ret_tv); -int gf_uuid_type(const uuid_t uu); -int gf_uuid_variant(const uuid_t uu); - -#ifdef __cplusplus -} -#endif - -#endif /* _UUID_UUID_H */ diff --git a/contrib/uuid/uuidP.h b/contrib/uuid/uuidP.h deleted file mode 100644 index 9a2de6132fe..00000000000 --- a/contrib/uuid/uuidP.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * uuid.h -- private header file for uuids - * - * 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 "uuid.h" -#ifdef HAVE_INTTYPES_H -#include <inttypes.h> -#else -#include "uuid_types.h" -#endif -#include <sys/types.h> - - -/* - * Offset between 15-Oct-1582 and 1-Jan-70 - */ -#define TIME_OFFSET_HIGH 0x01B21DD2 -#define TIME_OFFSET_LOW  0x13814000 - -struct uuid { -	uint32_t	time_low; -	uint16_t	time_mid; -	uint16_t	time_hi_and_version; -	uint16_t	clock_seq; -	uint8_t	node[6]; -}; - - -/* - * prototypes - */ -void uuid_pack(const struct uuid *uu, uuid_t ptr); -void uuid_unpack(const uuid_t in, struct uuid *uu); diff --git a/contrib/uuid/uuid_time.c b/contrib/uuid/uuid_time.c deleted file mode 100644 index 35f727018b1..00000000000 --- a/contrib/uuid/uuid_time.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * uuid_time.c --- Interpret the time field from a uuid.  This program - * 	violates the UUID abstraction barrier by reaching into the guts - *	of a UUID and interpreting it. - * - * Copyright (C) 1998, 1999 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% - */ - -#ifdef _WIN32 -#define _WIN32_WINNT 0x0500 -#include <windows.h> -#define UUID MYUUID -#endif - -#include <stdio.h> -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif -#include <stdlib.h> -#include <sys/types.h> -#ifdef HAVE_SYS_TIME_H -#include <sys/time.h> -#endif -#include <time.h> - -#include "uuidP.h" -#include "logging.h" - -time_t gf_uuid_time(const uuid_t uu, struct timeval *ret_tv) -{ -	struct timeval		tv; -	struct uuid		uuid; -	uint32_t		high; -	uint64_t		clock_reg; - -	uuid_unpack(uu, &uuid); - -	high = uuid.time_mid | ((uuid.time_hi_and_version & 0xFFF) << 16); -	clock_reg = uuid.time_low | ((uint64_t) high << 32); - -	clock_reg -= (((uint64_t) 0x01B21DD2) << 32) + 0x13814000; -	tv.tv_sec = clock_reg / 10000000; -	tv.tv_usec = (clock_reg % 10000000) / 10; - -	if (ret_tv) -		*ret_tv = tv; - -	return tv.tv_sec; -} - -int gf_uuid_type(const uuid_t uu) -{ -	struct uuid		uuid; - -	uuid_unpack(uu, &uuid); -	return ((uuid.time_hi_and_version >> 12) & 0xF); -} - -int gf_uuid_variant(const uuid_t uu) -{ -	struct uuid		uuid; -	int			var; - -	uuid_unpack(uu, &uuid); -	var = uuid.clock_seq; - -	if ((var & 0x8000) == 0) -		return UUID_VARIANT_NCS; -	if ((var & 0x4000) == 0) -		return UUID_VARIANT_DCE; -	if ((var & 0x2000) == 0) -		return UUID_VARIANT_MICROSOFT; -	return UUID_VARIANT_OTHER; -} - -#ifdef DEBUG -static const char *variant_string(int variant) -{ -	switch (variant) { -	case UUID_VARIANT_NCS: -		return "NCS"; -	case UUID_VARIANT_DCE: -		return "DCE"; -	case UUID_VARIANT_MICROSOFT: -		return "Microsoft"; -	default: -		return "Other"; -	} -} - - -int -main(int argc, char **argv) -{ -	uuid_t		buf; -	time_t		time_reg; -	struct timeval	tv; -	int		type, variant; - -	if (argc != 2) { -		fprintf(stderr, "Usage: %s uuid\n", argv[0]); -		exit(1); -	} -	if (gf_uuid_parse(argv[1], buf)) { -		fprintf(stderr, "Invalid UUID: %s\n", argv[1]); -		exit(1); -	} -	variant = gf_uuid_variant(buf); -	type = gf_uuid_type(buf); -	time_reg = gf_uuid_time(buf, &tv); - -	printf("UUID variant is %d (%s)\n", variant, variant_string(variant)); -	if (variant != UUID_VARIANT_DCE) { -		printf("Warning: This program only knows how to interpret " -		       "DCE UUIDs.\n\tThe rest of the output is likely " -		       "to be incorrect!!\n"); -	} -	printf("UUID type is %d", type); -	switch (type) { -	case 1: -		printf(" (time based)\n"); -		break; -	case 2: -		printf(" (DCE)\n"); -		break; -	case 3: -		printf(" (name-based)\n"); -		break; -	case 4: -		printf(" (random)\n"); -		break; -	default: -		printf("\n"); -	} -	if (type != 1) { -		printf("Warning: not a time-based UUID, so UUID time " -		       "decoding will likely not work!\n"); -	} -	printf("UUID time is: (%" GF_PRI_SECOND ", %" GF_PRI_USEC "): %s\n", tv.tv_sec, tv.tv_usec, ctime(&time_reg)); - -	return 0; -} -#endif diff --git a/contrib/uuid/uuid_types.h.in b/contrib/uuid/uuid_types.h.in deleted file mode 100644 index f21ff4ee183..00000000000 --- a/contrib/uuid/uuid_types.h.in +++ /dev/null @@ -1,50 +0,0 @@ -/*  - * If linux/types.h is already been included, assume it has defined - * everything we need.  (cross fingers)  Other header files may have  - * also defined the types that we need. - */ -#if (!defined(_STDINT_H) && !defined(_UUID_STDINT_H)) -#define _UUID_STDINT_H - -typedef unsigned char uint8_t; -typedef signed char int8_t; - -#if (@SIZEOF_INT@ == 8) -typedef int		int64_t; -typedef unsigned int	uint64_t; -#elif (@SIZEOF_LONG@ == 8) -typedef long		int64_t; -typedef unsigned long	uint64_t; -#elif (@SIZEOF_LONG_LONG@ == 8) -#if defined(__GNUC__) -typedef __signed__ long long 	int64_t; -#else -typedef signed long long 	int64_t; -#endif -typedef unsigned long long	uint64_t; -#endif - -#if (@SIZEOF_INT@ == 2) -typedef	int		int16_t; -typedef	unsigned int	uint16_t; -#elif (@SIZEOF_SHORT@ == 2) -typedef	short		int16_t; -typedef	unsigned short	uint16_t; -#else -  ?==error: undefined 16 bit type -#endif - -#if (@SIZEOF_INT@ == 4) -typedef	int		int32_t; -typedef	unsigned int	uint32_t; -#elif (@SIZEOF_LONG@ == 4) -typedef	long		int32_t; -typedef	unsigned long	uint32_t; -#elif (@SIZEOF_SHORT@ == 4) -typedef	short		int32_t; -typedef	unsigned short	uint32_t; -#else - ?== error: undefined 32 bit type -#endif - -#endif diff --git a/contrib/uuid/uuidd.h b/contrib/uuid/uuidd.h deleted file mode 100644 index c71f4b78835..00000000000 --- a/contrib/uuid/uuidd.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Definitions used by the uuidd daemon - * - * Copyright (C) 2007 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% - */ - -#ifndef _UUID_UUIDD_H -#define _UUID_UUIDD_H - -#define UUIDD_DIR		"/var/lib/libuuid" -#define UUIDD_SOCKET_PATH	UUIDD_DIR "/request" -#define UUIDD_PIDFILE_PATH	UUIDD_DIR "/uuidd.pid" -#define UUIDD_PATH		"/usr/sbin/uuidd" - -#define UUIDD_OP_GETPID			0 -#define UUIDD_OP_GET_MAXOP		1 -#define UUIDD_OP_TIME_UUID		2 -#define UUIDD_OP_RANDOM_UUID		3 -#define UUIDD_OP_BULK_TIME_UUID		4 -#define UUIDD_OP_BULK_RANDOM_UUID	5 -#define UUIDD_MAX_OP			UUIDD_OP_BULK_RANDOM_UUID - -extern void uuid__generate_time(uuid_t out, int *num); -extern void uuid__generate_random(uuid_t out, int *num); - -#endif /* _UUID_UUID_H */ diff --git a/glusterfs.spec.in b/glusterfs.spec.in index 25f7633df06..609331a3d3d 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -760,9 +760,6 @@ make check  %install  rm -rf %{buildroot}  make install DESTDIR=%{buildroot} -# Install include directory -install -p -m 0644 contrib/uuid/*.h \ -    %{buildroot}%{_includedir}/glusterfs/  %if ( 0%{_for_fedora_koji_builds} )  install -D -p -m 0644 %{SOURCE1} \      %{buildroot}%{_sysconfdir}/sysconfig/glusterd diff --git a/libglusterfs/src/Makefile.am b/libglusterfs/src/Makefile.am index bfe0900e547..c7cd3d5e6fc 100644 --- a/libglusterfs/src/Makefile.am +++ b/libglusterfs/src/Makefile.am @@ -71,17 +71,6 @@ noinst_HEADERS = unittest/unittest.h \  	$(CONTRIBDIR)/xxhash/xxhash.h \  	tier-ctr-interface.h -if !HAVE_LIBUUID -# FIXME: unbundle libuuid, see compat-uuid.h. -libglusterfs_la_SOURCES += $(CONTRIBDIR)/uuid/clear.c \ -	$(CONTRIBDIR)/uuid/copy.c $(CONTRIBDIR)/uuid/gen_uuid.c \ -	$(CONTRIBDIR)/uuid/pack.c $(CONTRIBDIR)/uuid/parse.c \ -	$(CONTRIBDIR)/uuid/unparse.c $(CONTRIBDIR)/uuid/uuid_time.c \ -	$(CONTRIBDIR)/uuid/compare.c $(CONTRIBDIR)/uuid/isnull.c \ -	$(CONTRIBDIR)/uuid/unpack.c -endif - -  eventtypes.h: $(top_srcdir)/events/eventskeygen.py  	$(PYTHON) $(top_srcdir)/events/eventskeygen.py C_HEADER diff --git a/libglusterfs/src/compat-uuid.h b/libglusterfs/src/compat-uuid.h index 8dac6990388..2e66117ce1f 100644 --- a/libglusterfs/src/compat-uuid.h +++ b/libglusterfs/src/compat-uuid.h @@ -57,6 +57,10 @@ gf_uuid_unparse (const uuid_t uuid, char *out)          uuid_unparse (uuid, out);  } +#elif defined(__FreeBSD__) + +#error Please install e2fsprogs-libuuid for a compatible libuuid implementation. +  /* TODO: add more uuid APIs, use constructs like this:  #elif defined(__NetBSD__) * NetBSD libc * @@ -70,9 +74,5 @@ gf_uuid_clear (uuid_t uuid)  */ -#else /* use bundled Linux like libuuid from contrib/uuid/ */ - -#include "uuid.h" -  #endif /* HAVE_UUID */  #endif /* _GF_UUID_H */  | 
