Commit d4d3fe0e authored by Nito Martinez's avatar Nito Martinez Committed by Mike Gabriel

Allow version 4-digit version comparison/handshake (400_nxcomp-version.full+lite.patch).

parent fea8fb5a
Description: Allow version 4-digit version comparison/handshake
Author: Nito Martinez <Nito@Qindel.ES>
--- a/nxcomp/Control.cpp
+++ b/nxcomp/Control.cpp
@@ -15,6 +15,7 @@
/* */
/**************************************************************************/
+#include "NX.h"
#include "NXpack.h"
#include "Control.h"
@@ -594,44 +595,17 @@
RemoteVersionMajor = -1;
RemoteVersionMinor = -1;
RemoteVersionPatch = -1;
+ RemoteVersionMaintenancePatch = -1;
CompatVersionMajor = -1;
CompatVersionMinor = -1;
CompatVersionPatch = -1;
+ CompatVersionMaintenancePatch = -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();
+ LocalVersionMaintenancePatch = NXMaintenancePatchVersion();
#ifdef TEST
*logofs << "Control: Major version is " << LocalVersionMajor
--- a/nxcomp/Control.h
+++ b/nxcomp/Control.h
@@ -299,17 +299,26 @@
// Version number of local and remote proxy.
//
+ /*
+ * LocalVersionMaintenancePatch, RemoteVersionMaintenancePatch
+ * CompatVersionMaintenancePatch
+ *
+ * currently not used, for future compatibility checks
+ */
int LocalVersionMajor;
int LocalVersionMinor;
int LocalVersionPatch;
+ int LocalVersionMaintenancePatch;
int RemoteVersionMajor;
int RemoteVersionMinor;
int RemoteVersionPatch;
+ int RemoteVersionMaintenancePatch;
int CompatVersionMajor;
int CompatVersionMinor;
int CompatVersionPatch;
+ int CompatVersionMaintenancePatch;
//
// Which unpack methods are implemented in proxy?
--- a/nxcomp/Loop.cpp
+++ b/nxcomp/Loop.cpp
@@ -14250,7 +14250,8 @@
cerr << "NXPROXY - " << "Version "
<< control -> LocalVersionMajor << "."
<< control -> LocalVersionMinor << "."
- << control -> LocalVersionPatch;
+ << control -> LocalVersionPatch << "."
+ << control -> LocalVersionMaintenancePatch;
cerr << endl;
}
--- a/nxcomp/Makefile.in
+++ b/nxcomp/Makefile.in
@@ -105,7 +105,8 @@
CSRC = MD5.c \
Pack.c \
- Vars.c
+ Vars.c \
+ Version.c
CXXSRC = Loop.cpp \
Children.cpp \
--- a/nxcomp/NX.h
+++ b/nxcomp/NX.h
@@ -442,6 +442,12 @@
extern void NXTransCleanup(void) __attribute__((noreturn));
+extern const char* NXVersion();
+extern int NXMajorVersion();
+extern int NXMinorVersion();
+extern int NXPatchVersion();
+extern int NXMaintenancePatchVersion();
+
#ifdef __cplusplus
}
#endif
--- /dev/null
+++ b/nxcomp/Version.c
@@ -0,0 +1,106 @@
+/**************************************************************************/
+/* */
+/* Copyright (C) 2014 Qindel http://qindel.com and QVD 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;
+static int _NXVersionMaintenancePatch = -1;
+
+
+const char* NXVersion() {
+ const char *version = VERSION;
+ return version;
+}
+
+void _parseNXVersion() {
+ char version[32];
+ int i;
+ strcpy(version, VERSION);
+
+ char *value;
+ /* Reset values to 0 if undefined */
+ _NXVersionMajor = _NXVersionMinor = _NXVersionPatch = _NXVersionMaintenancePatch = 0;
+
+
+#define NXVERSIONSEPARATOR "."
+ value = strtok(version, NXVERSIONSEPARATOR);
+
+ for (i = 0; value != NULL && i < 4; i++)
+ {
+ switch (i)
+ {
+ case 0:
+ _NXVersionMajor = atoi(value);
+ break;
+
+ case 1:
+ _NXVersionMinor = atoi(value);
+ break;
+
+ case 2:
+ _NXVersionPatch = atoi(value);
+ break;
+
+ case 3:
+ _NXVersionMaintenancePatch = atoi(value);
+ break;
+ }
+
+ value = strtok(NULL, NXVERSIONSEPARATOR);
+ }
+}
+
+int NXMajorVersion() {
+ if (_NXVersionMajor == -1)
+ _parseNXVersion();
+ return _NXVersionMajor;
+}
+int NXMinorVersion() {
+ if (_NXVersionMinor == -1)
+ _parseNXVersion();
+ return _NXVersionMinor;
+}
+int NXPatchVersion() {
+ if (_NXVersionPatch == -1)
+ _parseNXVersion();
+ return _NXVersionPatch;
+}
+int NXMaintenancePatchVersion() {
+ if (_NXVersionMaintenancePatch == -1)
+ _parseNXVersion();
+ return _NXVersionMaintenancePatch;
+}
400_nxcomp-version.full+lite.patch
#401_nxcomp_bigrequests-and-genericevent-extensions.full+lite.patch
600_nx-X11+nxcompext+nxcompshad_unique-libnames.full.patch
601_nx-X11_build-option-changes-to-not-use-bundled-libraries.full.patch
......
......@@ -15,6 +15,7 @@
/* */
/**************************************************************************/
#include "NX.h"
#include "NXpack.h"
#include "Control.h"
......@@ -594,44 +595,17 @@ Control::Control()
RemoteVersionMajor = -1;
RemoteVersionMinor = -1;
RemoteVersionPatch = -1;
RemoteVersionMaintenancePatch = -1;
CompatVersionMajor = -1;
CompatVersionMinor = -1;
CompatVersionPatch = -1;
CompatVersionMaintenancePatch = -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();
LocalVersionMaintenancePatch = NXMaintenancePatchVersion();
#ifdef TEST
*logofs << "Control: Major version is " << LocalVersionMajor
......
......@@ -299,17 +299,26 @@ class Control
// Version number of local and remote proxy.
//
/*
* LocalVersionMaintenancePatch, RemoteVersionMaintenancePatch
* CompatVersionMaintenancePatch
*
* currently not used, for future compatibility checks
*/
int LocalVersionMajor;
int LocalVersionMinor;
int LocalVersionPatch;
int LocalVersionMaintenancePatch;
int RemoteVersionMajor;
int RemoteVersionMinor;
int RemoteVersionPatch;
int RemoteVersionMaintenancePatch;
int CompatVersionMajor;
int CompatVersionMinor;
int CompatVersionPatch;
int CompatVersionMaintenancePatch;
//
// Which unpack methods are implemented in proxy?
......
......@@ -14250,7 +14250,8 @@ void PrintVersionInfo()
cerr << "NXPROXY - " << "Version "
<< control -> LocalVersionMajor << "."
<< control -> LocalVersionMinor << "."
<< control -> LocalVersionPatch;
<< control -> LocalVersionPatch << "."
<< control -> LocalVersionMaintenancePatch;
cerr << endl;
}
......
......@@ -105,7 +105,8 @@ MSRC =
CSRC = MD5.c \
Pack.c \
Vars.c
Vars.c \
Version.c
CXXSRC = Loop.cpp \
Children.cpp \
......
......@@ -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();
extern int NXMaintenancePatchVersion();
#ifdef __cplusplus
}
#endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment