Index: ossp-pkg/uuid/ChangeLog RCS File: /v/ossp/cvs/ossp-pkg/uuid/Attic/ChangeLog,v rcsdiff -q -kk '-r1.35' '-r1.36' -u '/v/ossp/cvs/ossp-pkg/uuid/Attic/ChangeLog,v' 2>/dev/null --- ChangeLog 2004/02/06 08:51:36 1.35 +++ ChangeLog 2004/02/11 14:38:40 1.36 @@ -11,7 +11,11 @@ This is a list of all changes to OSSP uuid. For a more brief summary please have a look at the NEWS file. - Changes between 0.9.4 and 0.9.5 (19-Jan-2004 to 06-Feb-2004) + Changes between 0.9.4 and 0.9.5 (19-Jan-2004 to 11-Feb-2004) + + o Added an experimental additional DCE 1.1 API for backward + compatibility with existing applications. + [Ralf S. Engelschall] o Fixed filedescriptor leak in the PRNG sub-API. [Guerry Semones ] Index: ossp-pkg/uuid/Makefile.in RCS File: /v/ossp/cvs/ossp-pkg/uuid/Attic/Makefile.in,v rcsdiff -q -kk '-r1.17' '-r1.18' -u '/v/ossp/cvs/ossp-pkg/uuid/Attic/Makefile.in,v' 2>/dev/null --- Makefile.in 2004/01/19 14:11:49 1.17 +++ Makefile.in 2004/02/11 14:38:40 1.18 @@ -53,15 +53,22 @@ LIB_NAME = libuuid.la LIB_OBJS = uuid.lo uuid_md5.lo uuid_prng.lo uuid_mac.lo uuid_ui64.lo uuid_str.lo +DCE_NAME = libuuid_dce.la +DCE_OBJS = $(LIB_OBJS) uuid_dce.lo + PRG_NAME = uuid PRG_OBJS = uuid_cli.o MAN_NAME = uuid.3 uuid.1 +TARGETS = $(LIB_NAME) @DCE_NAME@ $(PRG_NAME) + +WITH_DCE = @WITH_DCE@ + .SUFFIXES: .SUFFIXES: .c .o .lo -all: $(LIB_NAME) $(PRG_NAME) +all: $(TARGETS) .c.o: $(CC) $(CPPFLAGS) $(CFLAGS) -c $< @@ -73,6 +80,10 @@ @$(LIBTOOL) --mode=link $(CC) -o $(LIB_NAME) $(LIB_OBJS) -rpath $(libdir) \ -version-info `$(SHTOOL) version -l txt -d libtool VERSION` +$(DCE_NAME): $(DCE_OBJS) + @$(LIBTOOL) --mode=link $(CC) -o $(DCE_NAME) $(DCE_OBJS) -rpath $(libdir) \ + -version-info `$(SHTOOL) version -l txt -d libtool VERSION` + $(PRG_NAME): $(PRG_OBJS) $(LIB_NAME) @$(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $(PRG_NAME) $(PRG_OBJS) $(LIB_NAME) $(LIBS) @@ -82,6 +93,7 @@ uuid_prng.lo: uuid_prng.c uuid_prng.h uuid_str.lo: uuid_str.c config.h uuid_str.h uuid_ui64.lo: uuid_ui64.c uuid_ui64.h +uuid_dce.lo: uuid_dce.c uuid.h uuid_dce.h uuid_cli.o: uuid_cli.c uuid.h man: uuid.3 uuid-config.1 uuid.1 @@ -141,8 +153,15 @@ $(SHTOOL) install -c -m 755 uuid-config $(DESTDIR)$(bindir)/ $(SHTOOL) install -c -m 644 uuid-config.1 $(DESTDIR)$(mandir)/man1/ $(SHTOOL) install -c -m 644 uuid.h $(DESTDIR)$(includedir)/ + -@if [ ".$(WITH_DCE)" = .yes ]; then \ + echo "$(SHTOOL) install -c -m 644 uuid_dce.h $(DESTDIR)$(includedir)/"; \ + $(SHTOOL) install -c -m 644 uuid_dce.h $(DESTDIR)$(includedir)/; \ + fi $(SHTOOL) install -c -m 644 uuid.3 $(DESTDIR)$(mandir)/man3/ @$(LIBTOOL) --mode=install $(SHTOOL) install -c -m 644 libuuid.la $(DESTDIR)$(libdir)/ + -@if [ ".$(WITH_DCE)" = .yes ]; then \ + $(LIBTOOL) --mode=install $(SHTOOL) install -c -m 644 libuuid_dce.la $(DESTDIR)$(libdir)/; \ + fi @$(LIBTOOL) --mode=install $(SHTOOL) install -c -s -m 755 uuid $(DESTDIR)$(bindir)/ $(SHTOOL) install -c -m 644 uuid.1 $(DESTDIR)$(mandir)/man1/ @@ -150,8 +169,15 @@ -$(RM) $(DESTDIR)$(mandir)/man1/uuid.1 -@$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(bindir)/uuid -@$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/libuuid.la + -@if [ ".$(WITH_DCE)" = .yes ]; then \ + $(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/libuuid_dce.la; \ + fi -$(RM) $(DESTDIR)$(mandir)/man3/uuid.3 -$(RM) $(DESTDIR)$(includedir)/uuid.h + -@if [ ".$(WITH_DCE)" = .yes ]; then \ + echo "$(RM) $(DESTDIR)$(includedir)/uuid_dce.h"; \ + $(RM) $(DESTDIR)$(includedir)/uuid_dce.h; \ + fi -$(RM) $(DESTDIR)$(mandir)/man1/uuid-config.1 -$(RM) $(DESTDIR)$(bindir)/uuid-config -$(RMDIR) $(DESTDIR)$(mandir)/man1 >/dev/null 2>&1 || $(TRUE) @@ -164,6 +190,10 @@ clean: -$(RM) $(LIB_NAME) $(LIB_OBJS) + -@if [ ".$(WITH_DCE)" = .yes ]; then \ + echo "$(RM) $(DCE_NAME) $(DCE_OBJS)"; \ + $(RM) $(DCE_NAME) $(DCE_OBJS); \ + fi -$(RM) $(PRG_NAME) $(PRG_OBJS) -$(RM) -r .libs >/dev/null 2>&1 || $(TRUE) -$(RM) *.o *.lo Index: ossp-pkg/uuid/uuid.ac RCS File: /v/ossp/cvs/ossp-pkg/uuid/Attic/uuid.ac,v rcsdiff -q -kk '-r1.9' '-r1.10' -u '/v/ossp/cvs/ossp-pkg/uuid/Attic/uuid.ac,v' 2>/dev/null --- uuid.ac 2004/01/16 15:35:37 1.9 +++ uuid.ac 2004/02/11 14:38:40 1.10 @@ -77,5 +77,18 @@ if test ".$ac_cv_with_rfc2518" = ".yes"; then AC_DEFINE(WITH_RFC2518, 1, [whether to use incorrect generation of IEEE 802 multicast addresses according to RFC2518]) fi + AC_ARG_WITH(dce, + AC_HELP_STRING([--with-dce], [build DCE 1.1 backward compatibility API]), + [ac_cv_with_dce=$withval], [ac_cv_with_dce=no]) + if test ".$ac_cv_with_dce" = ".yes"; then + AC_DEFINE(WITH_DCE, 1, [whether to build DCE 1.1 backward compatibility API]) + WITH_DCE='yes' + DCE_NAME='$(DCE_NAME)' + else + WITH_DCE='no' + DCE_NAME='' + fi + AC_SUBST(WITH_DCE) + AC_SUBST(DCE_NAME) ]) Index: ossp-pkg/uuid/uuid_dce.c RCS File: /v/ossp/cvs/ossp-pkg/uuid/Attic/uuid_dce.c,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/uuid/Attic/uuid_dce.c,v' | diff -u /dev/null - -L'ossp-pkg/uuid/uuid_dce.c' 2>/dev/null --- ossp-pkg/uuid/uuid_dce.c +++ - 2024-05-17 21:09:27.845021318 +0200 @@ -0,0 +1,291 @@ +/* +** OSSP uuid - Universally Unique Identifier +** Copyright (c) 2004 Ralf S. Engelschall +** Copyright (c) 2004 The OSSP Project +** +** This file is part of OSSP uuid, a library for the generation +** of UUIDs which can found at http://www.ossp.org/pkg/lib/uuid/ +** +** Permission to use, copy, modify, and distribute this software for +** any purpose with or without fee is hereby granted, provided that +** the above copyright notice and this permission notice appear in all +** copies. +** +** THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +** IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +** CONTRIBUTORS 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 ADVISED OF THE POSSIBILITY OF +** SUCH DAMAGE. +** +** uuid_dce.c: DCE 1.1 compatibility API implementation +*/ + +/* include DCE 1.1 API */ +#define uuid_t uuid_dce_t +#include "uuid_dce.h" +#undef uuid_t +#undef uuid_create +#undef uuid_create_nil +#undef uuid_is_nil +#undef uuid_compare +#undef uuid_equal +#undef uuid_from_string +#undef uuid_to_string +#undef uuid_hash + +/* include regular API */ +#include "uuid.h" + +/* create a UUID (v1 only) */ +void uuid_dce_create(uuid_dce_t *uuid_dce, int *status) +{ + uuid_t *uuid; + size_t len; + void *vp; + + /* initialize status */ + if (status != NULL) + *status = uuid_s_error; + + /* sanity check argument(s) */ + if (uuid_dce == NULL) + return; + + /* create UUID and export as binary representation */ + if (uuid_create(&uuid) != UUID_RC_OK) + return; + if (uuid_make(uuid, UUID_MAKE_V1) != UUID_RC_OK) { + uuid_destroy(uuid); + return; + } + vp = uuid_dce; + len = UUID_LEN_BIN; + if (uuid_export(uuid, UUID_FMT_BIN, &vp, &len) != UUID_RC_OK) { + uuid_destroy(uuid); + return; + } + uuid_destroy(uuid); + + /* return successfully */ + if (status != NULL) + *status = uuid_s_ok; + return; +} + +/* create a Nil UUID */ +void uuid_dce_create_nil(uuid_dce_t *uuid_dce, int *status) +{ + /* initialize status */ + if (status != NULL) + *status = uuid_s_error; + + /* sanity check argument(s) */ + if (uuid_dce == NULL) + return; + + /* short-circuit implementation, because Nil UUID is trivial to + create, so no need to use regular OSSP uuid API */ + memset(uuid_dce, '\0', UUID_LEN_BIN); + + /* return successfully */ + if (status != NULL) + *status = uuid_s_ok; + return; +} + +/* check whether it is Nil UUID */ +int uuid_dce_is_nil(uuid_dce_t *uuid_dce, int *status) +{ + int i; + int result; + unsigned char *ucp; + + /* initialize status */ + if (status != NULL) + *status = uuid_s_error; + + /* sanity check argument(s) */ + if (uuid_dce == NULL) + return 0; + + /* short-circuit implementation, because Nil UUID is trivial to + check, so no need to use regular OSSP uuid API */ + result = 1; + ucp = (unsigned char *)uuid_dce; + for (i = 0; i < UUID_LEN_BIN; i++) { + if (ucp[i] != '\0') { + result = 0; + break; + } + } + + /* return successfully with result */ + if (status != NULL) + *status = uuid_s_ok; + return result; +} + +/* compare two UUIDs */ +int uuid_dce_compare(uuid_dce_t *uuid_dce1, uuid_dce_t *uuid_dce2, int *status) +{ + uuid_t *uuid1 = NULL; + uuid_t *uuid2 = NULL; + int result = 0; + + /* initialize status */ + if (status != NULL) + *status = uuid_s_error; + + /* sanity check argument(s) */ + if (uuid_dce1 == NULL || uuid_dce2 == NULL) + return 0; + + /* import both UUID binary representations and compare them */ + if (uuid_create(&uuid1) != UUID_RC_OK) + goto leave; + if (uuid_create(&uuid2) != UUID_RC_OK) + goto leave; + if (uuid_import(uuid1, UUID_FMT_BIN, uuid_dce1, UUID_LEN_BIN) != UUID_RC_OK) + goto leave; + if (uuid_import(uuid2, UUID_FMT_BIN, uuid_dce2, UUID_LEN_BIN) != UUID_RC_OK) + goto leave; + if (uuid_compare(uuid1, uuid2, &result) != UUID_RC_OK) + goto leave; + + /* indicate successful operation */ + if (status != NULL) + *status = uuid_s_ok; + + /* cleanup and return */ + leave: + if (uuid1 != NULL) + uuid_destroy(uuid1); + if (uuid2 != NULL) + uuid_destroy(uuid2); + return result; +} + +/* compare two UUIDs (equality only) */ +int uuid_dce_equal(uuid_dce_t *uuid_dce1, uuid_dce_t *uuid_dce2, int *status) +{ + /* initialize status */ + if (status != NULL) + *status = uuid_s_error; + + /* sanity check argument(s) */ + if (uuid_dce1 == NULL || uuid_dce2 == NULL) + return 0; + + /* pass through to generic compare function */ + return (uuid_dce_compare(uuid_dce1, uuid_dce2, status) == 0 ? 1 : 0); +} + +/* import UUID from string representation */ +void uuid_dce_from_string(const char *str, uuid_dce_t *uuid_dce, int *status) +{ + uuid_t *uuid = NULL; + size_t len; + void *vp; + + /* initialize status */ + if (status != NULL) + *status = uuid_s_error; + + /* sanity check argument(s) */ + if (str == NULL || uuid_dce == NULL) + return; + + /* import string representation and export binary representation */ + if (uuid_create(&uuid) != UUID_RC_OK) + goto leave; + if (uuid_import(uuid, UUID_FMT_STR, str, UUID_LEN_STR) != UUID_RC_OK) + goto leave; + vp = uuid_dce; + len = UUID_LEN_BIN; + if (uuid_export(uuid, UUID_FMT_BIN, &vp, &len) != UUID_RC_OK) + goto leave; + + /* indicate successful operation */ + if (status != NULL) + *status = uuid_s_ok; + + /* cleanup and return */ + leave: + if (uuid != NULL) + uuid_destroy(uuid); + return; +} + +/* export UUID to string representation */ +void uuid_dce_to_string(uuid_dce_t *uuid_dce, char **str, int *status) +{ + uuid_t *uuid = NULL; + size_t len; + void *vp; + + /* initialize status */ + if (status != NULL) + *status = uuid_s_error; + + /* sanity check argument(s) */ + if (str == NULL || uuid_dce == NULL) + return; + + /* import binary representation and export string representation */ + if (uuid_create(&uuid) != UUID_RC_OK) + goto leave; + if (uuid_import(uuid, UUID_FMT_BIN, uuid_dce, UUID_LEN_BIN) != UUID_RC_OK) + goto leave; + vp = str; + len = UUID_LEN_STR; + if (uuid_export(uuid, UUID_FMT_STR, &vp, &len) != UUID_RC_OK) + goto leave; + + /* indicate successful operation */ + if (status != NULL) + *status = uuid_s_ok; + + /* cleanup and return */ + leave: + if (uuid != NULL) + uuid_destroy(uuid); + return; +} + +/* export UUID into hash value */ +unsigned int uuid_dce_hash(uuid_dce_t *uuid_dce, int *status) +{ + int i; + unsigned char *ucp; + unsigned int hash; + + /* initialize status */ + if (status != NULL) + *status = uuid_s_error; + + /* sanity check argument(s) */ + if (uuid_dce == NULL) + return 0; + + /* generate a hash value + (DCE 1.1 actually requires 16-bit only) */ + hash = 0; + ucp = (unsigned char *)uuid_dce; + for (i = UUID_LEN_BIN-1; i >= 0; i--) { + hash <<= 8; + hash |= ucp[i]; + } + + /* return successfully */ + if (status != NULL) + *status = uuid_s_ok; + return hash; +} + Index: ossp-pkg/uuid/uuid_dce.h RCS File: /v/ossp/cvs/ossp-pkg/uuid/Attic/uuid_dce.h,v co -q -kk -p'1.1' '/v/ossp/cvs/ossp-pkg/uuid/Attic/uuid_dce.h,v' | diff -u /dev/null - -L'ossp-pkg/uuid/uuid_dce.h' 2>/dev/null --- ossp-pkg/uuid/uuid_dce.h +++ - 2024-05-17 21:09:27.847765785 +0200 @@ -0,0 +1,88 @@ +/* +** OSSP uuid - Universally Unique Identifier +** Copyright (c) 2004 Ralf S. Engelschall +** Copyright (c) 2004 The OSSP Project +** +** This file is part of OSSP uuid, a library for the generation +** of UUIDs which can found at http://www.ossp.org/pkg/lib/uuid/ +** +** Permission to use, copy, modify, and distribute this software for +** any purpose with or without fee is hereby granted, provided that +** the above copyright notice and this permission notice appear in all +** copies. +** +** THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED +** WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +** IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR +** CONTRIBUTORS 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 ADVISED OF THE POSSIBILITY OF +** SUCH DAMAGE. +** +** uuid_dce.h: DCE 1.1 compatibility API definition +*/ + +#ifndef __UUID_DCE_H___ +#define __UUID_DCE_H___ + +/* sanity check usage */ +#ifdef __UUID_H__ +#error the regular OSSP uuid API and the DCE 1.1 backward compatibility API are mutually exclusive -- you cannot use them at the same time. +#endif + +/* resolve namespace conflicts (at linking level) with regular OSSP uuid API */ +#define uuid_create uuid_dce_create +#define uuid_create_nil uuid_dce_create_nil +#define uuid_is_nil uuid_dce_is_nil +#define uuid_compare uuid_dce_compare +#define uuid_equal uuid_dce_equal +#define uuid_from_string uuid_dce_from_string +#define uuid_to_string uuid_dce_to_string +#define uuid_hash uuid_dce_hash + +/* DCE 1.1 uuid_t type */ +typedef struct { +#if 0 + /* stricter but unportable version */ + uuid_uint32_t time_low; + uuid_uint16_t time_mid; + uuid_uint16_t time_hi_and_version; + uuid_uint8_t clock_seq_hi_and_reserved; + uuid_uint8_t clock_seq_low; + uuid_uint8_t node[6]; +#else + /* sufficient and portable version */ + unsigned char data[16]; +#endif +} uuid_t; +typedef uuid_t *uuid_p_t; + +/* DCE 1.1 uuid_vector_t type */ +typedef struct { + unsigned int count; + uuid_t *uuid[1]; +} uuid_vector_t; + +/* DCE 1.1 UUID API status codes */ +enum { + uuid_s_ok = 0, /* standardized */ + uuid_s_error = 1 /* implementation specific */ +}; + +/* DCE 1.1 UUID API functions */ +extern void uuid_create (uuid_t *, int *); +extern void uuid_create_nil (uuid_t *, int *); +extern int uuid_is_nil (uuid_t *, int *); +extern int uuid_compare (uuid_t *, uuid_t *, int *); +extern int uuid_equal (uuid_t *, uuid_t *, int *); +extern void uuid_from_string (const char *, uuid_t *, int *); +extern void uuid_to_string (uuid_t *, char **, int *); +extern unsigned int uuid_hash (uuid_t *, int *); + +#endif /* __UUID_DCE_H___ */ +