introduce library version plus git hash
This exposes the library version and git head hash it was built from
into LWS_LIBRARY_VERSION and LWS_BUILD_HASH.
These are combined into a version string that's both printed as a
notice log by the library and made available to the app using a new
api lws_get_library_version(). The version looks like
1.1 178d78c
Signed-off-by: Andy Green <andy.green@linaro.org>
diff --git a/lib/Makefile.am b/lib/Makefile.am
index f5cdf3c..3a51c1a 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -1,3 +1,5 @@
+@applyhash@
+
lib_LTLIBRARIES=libwebsockets.la
include_HEADERS=libwebsockets.h
dist_libwebsockets_la_SOURCES=libwebsockets.c \
@@ -42,7 +44,7 @@
dist_libwebsockets_la_SOURCES += sha-1.c
endif
-libwebsockets_la_CFLAGS=-Wall -std=gnu99 -pedantic -g
+libwebsockets_la_CFLAGS=-Wall -std=gnu99 -pedantic
libwebsockets_la_LDFLAGS=
if DISABLE_DEBUG
diff --git a/lib/libwebsockets.c b/lib/libwebsockets.c
index 75302d0..4ed528a 100644
--- a/lib/libwebsockets.c
+++ b/lib/libwebsockets.c
@@ -48,11 +48,16 @@
#endif
#endif
+#ifndef LWS_BUILD_HASH
+#define LWS_BUILD_HASH "unknown-build-hash"
+#endif
static int log_level = LLL_ERR | LLL_WARN | LLL_NOTICE;
static void lwsl_emit_stderr(int level, const char *line);
static void (*lwsl_emit)(int level, const char *line) = lwsl_emit_stderr;
+static const char *library_version = LWS_LIBRARY_VERSION " " LWS_BUILD_HASH;
+
static const char *log_level_names[] = {
"ERR",
"WARN",
@@ -66,6 +71,20 @@
"LATENCY",
};
+/**
+ * lws_get_library_version: get version and git hash library built from
+ *
+ * returns a const char * to a string like "1.1 178d78c"
+ * representing the library version followed by the git head hash it
+ * was built from
+ */
+
+const char *
+lws_get_library_version(void)
+{
+ return library_version;
+}
+
int
insert_wsi_socket_into_fds(struct libwebsocket_context *context, struct libwebsocket *wsi)
{
@@ -1492,6 +1511,7 @@
#endif
lwsl_notice("Initial logging level %d\n", log_level);
+ lwsl_notice("Library version: %s\n", library_version);
lwsl_info(" LWS_MAX_HEADER_NAME_LENGTH: %u\n", LWS_MAX_HEADER_NAME_LENGTH);
lwsl_info(" LWS_MAX_HEADER_LEN: %u\n", LWS_MAX_HEADER_LEN);
lwsl_info(" LWS_INITIAL_HDR_ALLOC: %u\n", LWS_INITIAL_HDR_ALLOC);
diff --git a/lib/libwebsockets.h b/lib/libwebsockets.h
index 4acabcd..f5544b1 100644
--- a/lib/libwebsockets.h
+++ b/lib/libwebsockets.h
@@ -1,7 +1,7 @@
/*
* libwebsockets - small server side websockets and web server implementation
*
- * Copyright (C) 2010 Andy Green <andy@warmcat.com>
+ * Copyright (C) 2010-2013 Andy Green <andy@warmcat.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -868,6 +868,9 @@
LWS_EXTERN int
lws_b64_decode_string(const char *in, char *out, int out_size);
+LWS_EXTERN const char *
+lws_get_library_version(void);
+
/*
* Note: this is not normally needed as a user api. It's provided in case it is
* useful when integrating with other app poll loop service code.