diff --git a/.mailmap b/.mailmap index 2d98623b..d22a6e1e 100644 --- a/.mailmap +++ b/.mailmap @@ -1,5 +1,3 @@ -# update AUTHORS with: -# git log --all --reverse --format='%aN <%aE>' | perl -ne 'BEGIN{print "# Authors ordered by first contribution.\n"} print unless $h{$_}; $h{$_} = 1' > AUTHORS diff --git a/config-mingw.mk b/config-mingw.mk index 400a6c46..84df27a1 100644 --- a/config-mingw.mk +++ b/config-mingw.mk @@ -35,7 +35,7 @@ RUNNER_LDFLAGS=$(LDFLAGS) RUNNER_LIBS=-lws2_32 -lpsapi -liphlpapi RUNNER_SRC=test/runner-win.c -libuv.a: $(WIN_OBJS) src/fs-poll.o src/inet.o src/uv-common.o +libuv.a: $(WIN_OBJS) src/fs-poll.o src/inet.o src/uv-common.o src/version.o $(AR) rcs $@ $^ src/%.o: src/%.c include/uv.h include/uv-private/uv-win.h diff --git a/config-unix.mk b/config-unix.mk index 8954a679..fe5de9ef 100644 --- a/config-unix.mk +++ b/config-unix.mk @@ -55,6 +55,7 @@ OBJS += src/unix/udp.o OBJS += src/fs-poll.o OBJS += src/uv-common.o OBJS += src/inet.o +OBJS += src/version.o ifeq (sunos,$(PLATFORM)) CPPFLAGS += -D__EXTENSIONS__ -D_XOPEN_SOURCE=500 diff --git a/include/uv.h b/include/uv.h index ea11a13b..12173fba 100644 --- a/include/uv.h +++ b/include/uv.h @@ -228,6 +228,20 @@ typedef enum { } uv_run_mode; +/* + * Returns the libuv version packed into a single integer. 8 bits are used for + * each component, with the patch number stored in the 8 least significant + * bits. E.g. for libuv 1.2.3 this would return 0x010203. + */ +UV_EXTERN const unsigned int uv_version(void); + +/* + * Returns the libuv version number as a string. For non-release versions + * "-pre" is appended, so the version number could be "1.2.3-pre". + */ +UV_EXTERN const char* uv_version_string(void); + + /* * This function must be called before any other functions in libuv. * diff --git a/src/version.c b/src/version.c new file mode 100644 index 00000000..49bf8eaf --- /dev/null +++ b/src/version.c @@ -0,0 +1,60 @@ +/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + /* + * Versions with an even minor version (e.g. 0.6.1 or 1.0.4) are API and ABI + * stable. When the minor version is odd, the API can change between patch + * releases. + */ + +#define UV_VERSION_MAJOR 0 +#define UV_VERSION_MINOR 10 +#define UV_VERSION_PATCH 2 +#define UV_VERSION_IS_RELEASE 0 + + +#define UV_VERSION ((UV_VERSION_MAJOR << 16) | \ + (UV_VERSION_MINOR << 8) | \ + (UV_VERSION_PATCH)) + +#define UV_STRINGIFY(v) UV_STRINGIFY_HELPER(v) +#define UV_STRINGIFY_HELPER(v) #v + +#define UV_VERSION_STRING_BASE UV_STRINGIFY(UV_VERSION_MAJOR) "." \ + UV_STRINGIFY(UV_VERSION_MINOR) "." \ + UV_STRINGIFY(UV_VERSION_PATCH) + +#if UV_VERSION_IS_RELEASE +# define UV_VERSION_STRING UV_VERSION_STRING_BASE +#else +# define UV_VERSION_STRING UV_VERSION_STRING_BASE "-pre" +#endif + + +const unsigned int uv_version(void) { + return UV_VERSION; +} + + +const char* uv_version_string(void) { + return UV_VERSION_STRING; +} diff --git a/uv.gyp b/uv.gyp index 0810bcc4..5217ed1c 100644 --- a/uv.gyp +++ b/uv.gyp @@ -56,6 +56,7 @@ 'src/inet.c', 'src/uv-common.c', 'src/uv-common.h', + 'src/version.c' ], 'conditions': [ [ 'OS=="win"', {