diff options
author | Andre Heinecke <aheinecke@intevation.de> | 2018-11-15 10:31:22 +0100 |
---|---|---|
committer | Andre Heinecke <aheinecke@intevation.de> | 2018-11-15 10:31:22 +0100 |
commit | 40d962b43a183070ba8602cac1e83f2292ebf2c3 (patch) | |
tree | 5db1ef6f70b2856350d3c98bb8c9785c758304ea /tests/gpg | |
parent | d3dae4a445d950c94c952ddf54e534ef71675bd1 (diff) | |
download | gpgme-40d962b43a183070ba8602cac1e83f2292ebf2c3.tar.gz |
tests,json: Move version check into t-json
* tests/gpg/t-support.h (check_gpg_version, compare_versions),
(parse_version_string, parse_version_number): Remove version
check code.
* tests/json/t-json.c (check_gpg_version, compare_versions),
(parse_version_string, parse_version_number): Add.
--
t-support header was not a good place for this. It should
go into a library e.g. gpgrt in the future. For now we
can keep it close to where it is needed.
Diffstat (limited to 'tests/gpg')
-rw-r--r-- | tests/gpg/t-support.h | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/tests/gpg/t-support.h b/tests/gpg/t-support.h index a1536c18..b6ad515a 100644 --- a/tests/gpg/t-support.h +++ b/tests/gpg/t-support.h @@ -216,106 +216,3 @@ print_import_result (gpgme_import_result_t r) r->not_imported, r->skipped_v3_keys); } - - -/* Read the next number in the version string STR and return it in - *NUMBER. Return a pointer to the tail of STR after parsing, or - *NULL if the version string was invalid. */ -static const char * -parse_version_number (const char *str, int *number) -{ -#define MAXVAL ((INT_MAX - 10) / 10) - int val = 0; - - /* Leading zeros are not allowed. */ - if (*str == '0' && isdigit(str[1])) - return NULL; - - while (isdigit (*str) && val <= MAXVAL) - { - val *= 10; - val += *(str++) - '0'; - } - *number = val; - return val > MAXVAL ? NULL : str; -} - - -/* Parse the version string STR in the format MAJOR.MINOR.MICRO (for - example, 9.3.2) and return the components in MAJOR, MINOR and MICRO - as integers. The function returns the tail of the string that - follows the version number. This might be the empty string if there - is nothing following the version number, or a patchlevel. The - function returns NULL if the version string is not valid. */ -static const char * -parse_version_string (const char *str, int *major, int *minor, int *micro) -{ - str = parse_version_number (str, major); - if (!str || *str != '.') - return NULL; - str++; - - str = parse_version_number (str, minor); - if (!str || *str != '.') - return NULL; - str++; - - str = parse_version_number (str, micro); - if (!str) - return NULL; - - /* A patchlevel might follow. */ - return str; -} - - -/* Return true if MY_VERSION is at least REQ_VERSION, and false - otherwise. */ -static int -compare_versions (const char *my_version, - const char *rq_version) -{ - int my_major, my_minor, my_micro; - int rq_major, rq_minor, rq_micro; - const char *my_plvl, *rq_plvl; - - if (!rq_version) - return 1; - if (!my_version) - return 0; - - my_plvl = parse_version_string (my_version, &my_major, &my_minor, &my_micro); - if (!my_plvl) - return 0; - - rq_plvl = parse_version_string (rq_version, &rq_major, &rq_minor, &rq_micro); - if (!rq_plvl) - return 0; - - 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 1; - - return 0; -} - -/* Return true if we have the required gpg version. */ -static int -check_gpg_version (const char *req_version) -{ - gpgme_engine_info_t engine_info; - init_gpgme (GPGME_PROTOCOL_OpenPGP); - - fail_if_err (gpgme_get_engine_info (&engine_info)); - for (; engine_info; engine_info = engine_info->next) - if (engine_info->protocol == GPGME_PROTOCOL_OpenPGP) - break; - - test (engine_info); - - return compare_versions (engine_info->version, req_version); -} |