--- trunk/Src/wptGPG.cpp 2006/01/09 10:03:13 136 +++ trunk/Src/wptGPG.cpp 2006/01/09 14:01:51 137 @@ -325,7 +325,7 @@ static int -parse_version_nr (const char * buf, int *major, int *minor, int *patch) +parse_version_nr (const char *buf, int *major, int *minor, int *patch) { char tmp[8]; int i; @@ -353,14 +353,22 @@ version given in @r_major.@r_minor.@r_patch. On success these variables contain the GPG version which is installed. */ int -check_gnupg_engine (int *r_major, int *r_minor, int *r_patch) +check_gnupg_engine (const char *need_gpg_ver, + int *r_major, int *r_minor, int *r_patch) { gpgme_ctx_t ctx; gpgme_engine_info_t inf; char *eng = NULL; int major=0, minor=0, patch=0; + int need_major = 0, need_minor = 0, need_patch = 0; int rc = 1; - + + /* Convert the needed GPG version to the integer format. */ + rc = parse_version_nr (need_gpg_ver, + &need_major, &need_minor, &need_patch); + if (rc) + return rc; + gpgme_new (&ctx); inf = gpgme_ctx_get_engine_info (ctx); if (!inf) { @@ -380,14 +388,15 @@ return rc; } - if (major > *r_major) + if (major > need_major) rc = 0; - else if (major == *r_major && minor > *r_minor) + else if (major == need_major && minor > need_minor) rc = 0; - else if (major == *r_major && minor == *r_minor && - patch >= *r_patch) + else if (major == need_major && minor == need_minor && + patch >= need_patch) rc = 0; + /* Return the current GPG version. */ *r_major = major; *r_minor = minor; *r_patch = patch;