[gtk-vnc] Introduce vnc_util_get_version() functions to get version
- From: Daniel P. Berrange <dberrange src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk-vnc] Introduce vnc_util_get_version() functions to get version
- Date: Thu, 21 Oct 2010 18:24:22 +0000 (UTC)
commit 1a0c8a6f6b4d0916cd7eab6e3fc2aa0e1cf170b1
Author: Michal Novotny <minovotn redhat com>
Date: Thu Oct 21 14:38:34 2010 +0100
Introduce vnc_util_get_version() functions to get version
this is the patch to allow user to get the GTK-VNC version using the
vnc_util_get_version() and vnc_util_get_version_string() functions.
Both the functions returns the version numbers based on the VERSION
definition as created by autotools. Also, in version 2 (previous
version) a new function called vnc_util_check_version() has been added
to check whether the version of gtk-vnc is equal or higher to version
requested. Function vnc_util_check_version() is defined as:
gboolean vnc_util_check_version(gint major, gint minor, gint micro);
The version of gtk-vnc is written in a "major.minor.micro" format
and since the version number didn't change once the package was
compiled version 3 is using VERSION_{MAJOR,MINOR,MICRO} constants
being parsed and set by configure itself rather then parsing it
at run-time.
Then there are 2 version functions. The difference between those
functions is that vnc_util_get_version() returns the gint value
based on bit flags that have to be converted to get the version
number in the string format. It's designed for further processing of
the major, minor and release versions.
If you want to get the version number only (e.g. to let the user
know the GTK-VNC version he/she is using) you can use the second
function called the vnc_util_get_version_string() which returns
the string representation, e.g. 0.4.1.
For the vnc_util_get_version() function the gint is being returned
with setting up appropriate bits. You can get the versions using
following formula:
ver = vnc_util_get_version();
major = (ver >> 24) & 0xff;
minor = (ver >> 16) & 0xff;
micro = (ver >> 8 ) & 0xff;
I think this patch could be useful for mainly for reason mentioned
above. To check whether the user has at least 0.4.1 version of
gtk-vnc using the vnc_util_check_version(0, 4, 1) is preferred.
The vnc_util_get_version() function is a low-level function that
could be useful to get the version number to be converted further.
configure.ac | 11 +++++++++++
examples/gvncviewer.c | 7 ++++++-
src/libgvnc_sym.version | 3 +++
src/vncutil.c | 20 ++++++++++++++++++++
src/vncutil.h | 3 +++
5 files changed, 43 insertions(+), 1 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index d89c09f..c82393e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -47,6 +47,17 @@ MOZILLA_PLUGIN_REQUIRED=1.8
GOBJECT_INTROSPECTION_REQUIRED=0.6.2
dnl *******************************************************************************
+dnl Get the version information at compile-time
+dnl *******************************************************************************
+VERSION_MAJOR=`echo $VERSION | awk -F. '{print $1}'`
+VERSION_MINOR=`echo $VERSION | awk -F. '{print $2}'`
+VERSION_MICRO=`echo $VERSION | awk -F. '{print $3}'`
+
+AC_DEFINE_UNQUOTED(VERSION_MAJOR, $VERSION_MAJOR, [Major version number of package])
+AC_DEFINE_UNQUOTED(VERSION_MINOR, $VERSION_MINOR, [Minor version number of package])
+AC_DEFINE_UNQUOTED(VERSION_MICRO, $VERSION_MICRO, [Micro version number of package])
+
+dnl *******************************************************************************
dnl Setup core compilers / build helpers
dnl *******************************************************************************
diff --git a/examples/gvncviewer.c b/examples/gvncviewer.c
index 1799e32..ffe7e5b 100644
--- a/examples/gvncviewer.c
+++ b/examples/gvncviewer.c
@@ -19,6 +19,7 @@
*/
#include "vncdisplay.h"
+#include "vncutil.h"
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include <stdlib.h>
@@ -495,6 +496,7 @@ static gboolean window_state_event(GtkWidget *widget,
int main(int argc, char **argv)
{
+ gchar *name;
GOptionContext *context;
GError *error = NULL;
char port[1024], hostname[1024];
@@ -519,8 +521,11 @@ int main(int argc, char **argv)
GtkWidget *showgrabkeydlg;
const char *help_msg = "Run 'gvncviewer --help' to see a full list of available command line options";
+ name = g_strdup_printf("- Simple VNC Client on Gtk-VNC %s",
+ vnc_util_get_version_string());
+
/* Setup command line options */
- context = g_option_context_new ("- Simple VNC Client");
+ context = g_option_context_new (name);
g_option_context_add_main_entries (context, options, NULL);
g_option_context_add_group (context, gtk_get_option_group (TRUE));
g_option_context_add_group (context, vnc_display_get_option_group ());
diff --git a/src/libgvnc_sym.version b/src/libgvnc_sym.version
index 8f0ea44..63ff90f 100644
--- a/src/libgvnc_sym.version
+++ b/src/libgvnc_sym.version
@@ -65,6 +65,9 @@
vnc_util_set_debug;
vnc_util_get_debug;
+ vnc_util_get_version;
+ vnc_util_get_version_string;
+ vnc_util_check_version;
vnc_pixel_format_new;
vnc_pixel_format_copy;
diff --git a/src/vncutil.c b/src/vncutil.c
index 04dc8dd..bff8f7f 100644
--- a/src/vncutil.c
+++ b/src/vncutil.c
@@ -35,6 +35,26 @@ gboolean vnc_util_get_debug(void)
return debugFlag;
}
+gint vnc_util_get_version(void)
+{
+ return (VERSION_MAJOR << 16) |
+ (VERSION_MINOR << 8) |
+ VERSION_MICRO;
+}
+
+gboolean vnc_util_check_version(gint major, gint minor, gint micro)
+{
+ return ((VERSION_MAJOR > major) || \
+ ((VERSION_MAJOR == major) && (VERSION_MINOR > minor)) || \
+ ((VERSION_MAJOR == major) && (VERSION_MINOR == minor) && \
+ (VERSION_MICRO >= micro)));
+}
+
+const gchar *vnc_util_get_version_string(void)
+{
+ return VERSION;
+}
+
/*
* Local variables:
* c-indent-level: 8
diff --git a/src/vncutil.h b/src/vncutil.h
index 9c96de8..db10d99 100644
--- a/src/vncutil.h
+++ b/src/vncutil.h
@@ -27,6 +27,9 @@ G_BEGIN_DECLS
void vnc_util_set_debug(gboolean enabled);
gboolean vnc_util_get_debug(void);
+gint vnc_util_get_version(void);
+const gchar *vnc_util_get_version_string(void);
+gboolean vnc_util_check_version(gint major, gint minor, gint micro);
#define VNC_DEBUG(fmt, ...) \
do { \
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]