From: Simon Josefsson Date: Thu, 11 Jan 2007 07:57:10 +0000 (+0000) Subject: Replace libgcrypt version check with strverscmp. X-Git-Tag: gnutls_1_7_2~23 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e3652edc1e88e2a985874ed428ec4db629fcfb67;p=thirdparty%2Fgnutls.git Replace libgcrypt version check with strverscmp. No need to duplicate prototype found in gnutls.h for gnutls_check_version. --- diff --git a/libextra/gnutls_extra.c b/libextra/gnutls_extra.c index 6153a3dc71..80400a5b69 100644 --- a/libextra/gnutls_extra.c +++ b/libextra/gnutls_extra.c @@ -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; }