]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
Replace libgcrypt version check with strverscmp.
authorSimon Josefsson <simon@josefsson.org>
Thu, 11 Jan 2007 07:57:10 +0000 (07:57 +0000)
committerSimon Josefsson <simon@josefsson.org>
Thu, 11 Jan 2007 07:57:10 +0000 (07:57 +0000)
No need to duplicate prototype found in gnutls.h for
gnutls_check_version.

libextra/gnutls_extra.c

index 6153a3dc715e5e371ebc804e86562357992609c6..80400a5b69c8351879dbd69597f21b9cece7864a 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2001, 2004, 2005 Free Software Foundation
+ * Copyright (C) 2001, 2004, 2005, 2007 Free Software Foundation
  *
  * Author: Nikos Mavroyanopoulos
  *
@@ -124,7 +124,6 @@ _gnutls_add_openpgp_functions (void)
 #endif
 }
 
-extern const char *gnutls_check_version (const char *);
 static int _gnutls_init_extra = 0;
 
 /**
@@ -186,44 +185,6 @@ gnutls_global_init_extra (void)
   return 0;
 }
 
-/* Taken from libgcrypt. Needed to configure scripts.
- */
-
-static const char *
-parse_version_number (const char *s, int *number)
-{
-  int val = 0;
-
-  if (*s == '0' && isdigit (s[1]))
-    return NULL;               /* leading zeros are not allowed */
-  for (; isdigit (*s); s++)
-    {
-      val *= 10;
-      val += *s - '0';
-    }
-  *number = val;
-  return val < 0 ? NULL : s;
-}
-
-/* The parse version functions were copied from libgcrypt.
- */
-static const char *
-parse_version_string (const char *s, int *major, int *minor, int *micro)
-{
-  s = parse_version_number (s, major);
-  if (!s || *s != '.')
-    return NULL;
-  s++;
-  s = parse_version_number (s, minor);
-  if (!s || *s != '.')
-    return NULL;
-  s++;
-  s = parse_version_number (s, micro);
-  if (!s)
-    return NULL;
-  return s;                    /* patchlevel */
-}
-
 /**
  * gnutls_extra_check_version - This function checks the library's version
  * @req_version: the version to check
@@ -237,30 +198,8 @@ parse_version_string (const char *s, int *major, int *minor, int *micro)
 const char *
 gnutls_extra_check_version (const char *req_version)
 {
-  const char *ver = VERSION;
-  int my_major, my_minor, my_micro;
-  int rq_major, rq_minor, rq_micro;
-  const char *my_plvl, *rq_plvl;
+  if (!req_version || strverscmp (req_version, VERSION) <= 0)
+    return VERSION;
 
-  if (!req_version)
-    return ver;
-
-  my_plvl = parse_version_string (ver, &my_major, &my_minor, &my_micro);
-  if (!my_plvl)
-    return NULL;               /* very strange our own version is bogus */
-  rq_plvl = parse_version_string (req_version, &rq_major, &rq_minor,
-                                 &rq_micro);
-  if (!rq_plvl)
-    return NULL;               /* req version string is invalid */
-
-  if (my_major > rq_major
-      || (my_major == rq_major && my_minor > rq_minor)
-      || (my_major == rq_major && my_minor == rq_minor
-         && my_micro > rq_micro)
-      || (my_major == rq_major && my_minor == rq_minor
-         && my_micro == rq_micro && strcmp (my_plvl, rq_plvl) >= 0))
-    {
-      return ver;
-    }
   return NULL;
 }