Subject: Bug#610 closed by Mike Gabriel <[email-masked]> (X2Go issue (in src:nx-libs) has been marked as closed)

From: [email-masked] (X2Go Bug Tracking System)
Date: Thu, 13 Nov 2014 21:00:14 +0000

This is an automatic notification regarding your Bug report
which was filed against the nx-libs package:

#610: Add versioning information to nxcomp

It has been closed by Mike Gabriel <[email-masked]>.

Their explanation is attached below along with your original report.
If this explanation is unsatisfactory and you have not received a
better one in a separate message then please contact Mike Gabriel <[email-masked]> by
replying to this email.

-- 
X2Go Bug Tracking System
Contact [email-masked] with problems

Subject: X2Go issue (in src:nx-libs) has been marked as closed
From: Mike Gabriel <[email-masked]>
To: [email-masked]
Cc: [email-masked], [email-masked]
Date: Thu, 13 Nov 2014 21:56:46 +0100 (CET)

close #610
thanks

Hello,

we are very hopeful that X2Go issue #610 reported by you
has been resolved in the new release (2:3.5.0.28) of the
X2Go source project »src:nx-libs«.

You can view the complete changelog entry of src:nx-libs (2:3.5.0.28)
below, and you can use the following link to view all the code changes
between this and the last release of src:nx-libs.

    http://code.x2go.org/gitweb?p=nx-libs.git;a=commitdiff;h=39202bb0cfad1a5d78135a205033398003769997;hp=aeb5e8ad5491b9f950cb038ca6eb6b1e15fef05a

If you feel that the issue has not been resolved satisfyingly, feel
free to reopen this bug report or submit a follow-up report with
further observations described based on the new released version
of src:nx-libs.

Thanks a lot for contributing to X2Go!!!

light+love
X2Go Git Admin (on behalf of the sender of this mail)

---
X2Go Component: src:nx-libs
Version: 2:3.5.0.28-0x2go1
Status: RELEASE
Date: Thu, 13 Nov 2014 21:39:24 +0100
Fixes: 269 578 585 610 621
Changes: 
 nx-libs (2:3.5.0.28-0x2go1) RELEASED; urgency=medium
 .
   [ Mike Gabriel ]
   * Provide COPYING file in tarball. Update debian/copyright.
   * Add 025_nxcomp-fix-ftbfs-against-jpeg9a.full+lite.patch. Fix FTBFS when
     built against libjpeg9a. Thanks to Gabriel Marcano for sending this in.
     (Fixes: #578).
   * Update 027_nxcomp_abstract-X11-socket.full+lite: Add patch header
     (Description: and Author: field).
   * Add 607_nxcomp_macosx-X11-launcher-in-private-tmp.full+lite.patch. Fix check
     for launchd socket path in $DISPLAY on recent Mac OS X systems.
   * Rename 605_nxcomp_Types.h-dont-use-STL-internals-on-libc++.full.patch to
     605_nxcomp_Types.h-dont-use-STL-internals-on-libc++.full+lite.patch. It is
     an nxcomp patch that needs to be applied in the nx-libs-lite _and_ the
     nx-libs-full tarball release.
   * debian/libnx-x11.postinst:
     + Don't use dpkg-architecture (bin:package dpkg-dev) in postinst script.
       Instead prep a libnx-x11.postinst script at build time. (Fixes:
       #621).
   * debian/rules:
     + No such option for dh_auto_build: --with quilt."
   * nx-libs.spec:
     + Adapt installation of debian/VERSION as VERSION.x2goagent and
       nxcomp/VERSION to latest changes introduced by
       400_nxcomp-version.full+lite.patch.
     + Additionally adapt to building on openSUSE/SLES.
     + SUSE hack for linking to files in libX11-6 and libXext6.
     + Make sure all package directories are owned by one of the
       built bin:packages.
     + Fix Xinerama symlink installation into RPM bin:package
       libNX_Xinerama. (Fixes: #269).
 .
   [ Nito Martinez ]
   * Add 400_nxcomp-version.full+lite.patch. Allow 4-digit version comparison
     during NX session handshake. (Fixes: #610).
 .
   [ Ulrich Sibiller ]
   * Add 207_nxagent_fix-xfixes-selection.full.patch. Fix selection handling
     when XFIXES is enabled. (Fixes: #585).

Subject: Add versioning information to nxcomp
From: Nito Martinez <[email-masked]>
To: [email-masked]
Date: Mon, 15 Sep 2014 00:28:51 +0200

Package: nx-libs
Version: 3.5.0-27

It would be desirable to add some versions to be able to get the version 
of the
NXComp library.
These should be defined in NX.h, to be used from other clients, and

Attached is a patch that defines the following functions:

extern const char* NXVersion();
extern int NXMajorVersion();
extern int NXMinorVersion();
extern int NXPatchVersion();

In the patch assigned the VERSION has been set to 3.5.28, just to 
highlight that
it would be good to change the VERSION of nxcomp whenever a patch is applied
to the code.

Regards,

Nito
diff --git a/nxcomp/CHANGELOG b/nxcomp/CHANGELOG
index b7ef0d9..756c9ba 100644
--- a/nxcomp/CHANGELOG
+++ b/nxcomp/CHANGELOG
@@ -1,5 +1,9 @@
 ChangeLog:
 
+nxcomp-3.5.28
+
+- Add versioning. Update of NX.h and Version.c
+
 nxcomp-3.5.0-2
 
 - Fixed TR11H02398. Solved a race condition when creating channels.
diff --git a/nxcomp/Control.cpp b/nxcomp/Control.cpp
index ce99567..b7c1219 100644
--- a/nxcomp/Control.cpp
+++ b/nxcomp/Control.cpp
@@ -15,6 +15,7 @@
 /*                                                                        */
 /**************************************************************************/
 
+#include "NX.h"
 #include "NXpack.h"
 
 #include "Control.h"
@@ -599,39 +600,9 @@ Control::Control()
   CompatVersionMinor = -1;
   CompatVersionPatch = -1;
 
-  char version[32];
-
-  strcpy(version, VERSION);
-
-  char *value;
-
-  value = strtok(version, ".");
-
-  for (int i = 0; value != NULL && i < 3; i++)
-  {
-    switch (i)
-    {
-      case 0:
-
-        LocalVersionMajor = atoi(value);
-
-        break;
-
-      case 1:
-
-        LocalVersionMinor = atoi(value);
-
-        break;
-
-      case 2:
-
-        LocalVersionPatch = atoi(value);
-
-        break;
-    }
-
-    value = strtok(NULL, ".");
-  }
+  LocalVersionMajor = NXMajorVersion();
+  LocalVersionMinor = NXMinorVersion();
+  LocalVersionPatch = NXPatchVersion();
 
   #ifdef TEST
   *logofs << "Control: Major version is " << LocalVersionMajor
diff --git a/nxcomp/Makefile.in b/nxcomp/Makefile.in
index 434118b..6aa18f3 100644
--- a/nxcomp/Makefile.in
+++ b/nxcomp/Makefile.in
@@ -100,7 +100,8 @@ MSRC   =
 
 CSRC   = MD5.c					\
 	 Pack.c					\
-         Vars.c
+	 Vars.c					\
+	 Version.c
 
 CXXSRC = Loop.cpp 				\
 	 Children.cpp				\
diff --git a/nxcomp/NX.h b/nxcomp/NX.h
index d98af79..fba4718 100644
--- a/nxcomp/NX.h
+++ b/nxcomp/NX.h
@@ -442,6 +442,12 @@ extern int NXTransParseEnvironment(const char *env, int force);
 
 extern void NXTransCleanup(void) __attribute__((noreturn));
 
+extern const char* NXVersion();
+extern int NXMajorVersion();
+extern int NXMinorVersion();
+extern int NXPatchVersion();
+
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/nxcomp/VERSION b/nxcomp/VERSION
index 1545d96..3f3ae45 100644
--- a/nxcomp/VERSION
+++ b/nxcomp/VERSION
@@ -1 +1 @@
-3.5.0
+3.5.28
diff --git a/nxcomp/Version.c b/nxcomp/Version.c
new file mode 100644
index 0000000..9df6cbd
--- /dev/null
+++ b/nxcomp/Version.c
@@ -0,0 +1,98 @@
+/**************************************************************************/
+/*                                                                        */
+/* Copyright (C) 2014 Qindel http://qindel.com - http://theqvd.com        */
+/*                                                                        */
+/* This program is free software; you can redistribute it and/or modify   */
+/* it under the terms of the GNU General Public License as published by   */
+/* the Free Software Foundation; either version 3 of the License, or (at  */
+/* your option) any later version.                                        */
+/*                                                                        */
+/* This program is distributed in the hope that it will be useful, but    */
+/* WITHOUT ANY WARRANTY; without even the implied warranty of             */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                   */
+/* See the GNU General Public License for more details.                   */
+/*                                                                        */
+/* You should have received a copy of the GNU General Public License      */
+/* along with this program; if not, see <http://www.gnu.org/licenses>.    */
+/*                                                                        */
+/* Additional permission under GNU GPL version 3 section 7                */
+/*                                                                        */
+/* If you modify this Program, or any covered work, by linking or         */
+/* combining it with [name of library] (or a modified version of that     */
+/* library), containing parts covered by the terms of [name of library's  */
+/* license], the licensors of this Program grant you additional           */
+/* permission to convey the resulting work. {Corresponding Source for a   */
+/* non-source form of such a combination shall include the source code    */
+/* for the parts of [name of library] used as well as that of the covered */
+/* work.}                                                                 */
+/*                                                                        */
+/*                                                                        */
+/**************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "NX.h"
+
+
+static int _NXVersionMajor = -1;
+static int _NXVersionMinor = -1;
+static int _NXVersionPatch = -1;
+
+
+const char* NXVersion() {
+  const char *version = VERSION;
+  return version;
+}
+
+void _parseNXVersion() {
+  char version[32];
+  int i;
+  strcpy(version, VERSION);
+
+  char *value;
+
+  value = strtok(version, ".");
+
+  for (i = 0; value != NULL && i < 3; i++)
+  {
+    switch (i)
+    {
+      case 0:
+
+        _NXVersionMajor = atoi(value);
+
+        break;
+
+      case 1:
+
+        _NXVersionMinor = atoi(value);
+
+        break;
+
+      case 2:
+
+        _NXVersionPatch = atoi(value);
+
+        break;
+    }
+
+    value = strtok(NULL, ".");
+  }
+}
+
+int NXMajorVersion() {
+  if (_NXVersionMajor == -1)
+    _parseNXVersion();
+  return _NXVersionMajor;
+}
+int NXMinorVersion() {
+  if (_NXVersionMinor == -1)
+    _parseNXVersion();
+  return _NXVersionMinor;
+}
+int NXPatchVersion() {
+  if (_NXVersionPatch == -1)
+    _parseNXVersion();
+  return _NXVersionPatch;
+}