From 19ebd772290681204bee15104fd2dcb5aae49c21 Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Mon, 20 Jun 2016 13:25:23 +0200 Subject: include: add version_compare helper function Backported from X.org: commit 0df871cf34ee5f1a85586206027de9b02fb364ec Author: Robert Ancell Date: Thu May 22 10:43:52 2014 +1200 Fix overflow checking extension versions The easiest way to check for the version of an extension is to send the maximum possible version numbers in the QueryVersion request. The X server overflows on these as it assumes you will send a reasonable version number. Reviewed-by: Keith Packard Signed-off-by: Keith Packard commit ffd4874798ba54f86acac75779a15b4babeaa5f3 Author: Peter Hutterer Date: Wed May 11 12:20:50 2011 +1000 include: add version_compare helper function Compare two version numbers in the major.minor form. Switch the few users of manual version switching over to the new function. Signed-off-by: Peter Hutterer Reviewed-by: Jamey Sharp Backport to nx-libs: Mike Gabriel --- nx-X11/programs/Xserver/include/misc.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'nx-X11/programs/Xserver') diff --git a/nx-X11/programs/Xserver/include/misc.h b/nx-X11/programs/Xserver/include/misc.h index 5f30823fa..d2cadace2 100644 --- a/nx-X11/programs/Xserver/include/misc.h +++ b/nx-X11/programs/Xserver/include/misc.h @@ -81,6 +81,7 @@ extern unsigned long serverGeneration; #include #include #include +#include #ifndef _XTYPEDEF_POINTER /* Don't let Xdefs.h define 'pointer' */ @@ -237,6 +238,28 @@ pad_to_int32(const int bytes) { return (((bytes) + 3) & ~3); } +/** + * Compare the two version numbers comprising of major.minor. + * + * @return A value less than 0 if a is less than b, 0 if a is equal to b, + * or a value greater than 0 + */ +static inline int +version_compare(uint32_t a_major, uint32_t a_minor, + uint32_t b_major, uint32_t b_minor) +{ + if (a_major > b_major) + return 1; + if (a_major < b_major) + return -1; + if (a_minor > b_minor) + return 1; + if (a_minor < b_minor) + return -1; + + return 0; +} + /* some macros to help swap requests, replies, and events */ #define LengthRestB(stuff) \ -- cgit v1.2.3