--- /dev/null
+diff -up openssl-0.9.8j/apps/version.c.version-add-engines openssl-0.9.8j/apps/version.c
+--- openssl-0.9.8j/apps/version.c.version-add-engines 2008-10-20 14:53:33.000000000 +0200
++++ openssl-0.9.8j/apps/version.c 2009-01-13 23:22:03.000000000 +0100
+@@ -131,6 +131,7 @@
+ #ifndef OPENSSL_NO_BF
+ # include <openssl/blowfish.h>
+ #endif
++#include <openssl/engine.h>
+
+ #undef PROG
+ #define PROG version_main
+@@ -140,7 +141,7 @@ int MAIN(int, char **);
+ int MAIN(int argc, char **argv)
+ {
+ int i,ret=0;
+- int cflags=0,version=0,date=0,options=0,platform=0,dir=0;
++ int cflags=0,version=0,date=0,options=0,platform=0,dir=0,engines=0;
+
+ apps_startup();
+
+@@ -164,7 +165,7 @@ int MAIN(int argc, char **argv)
+ else if (strcmp(argv[i],"-d") == 0)
+ dir=1;
+ else if (strcmp(argv[i],"-a") == 0)
+- date=version=cflags=options=platform=dir=1;
++ date=version=cflags=options=platform=dir=engines=1;
+ else
+ {
+ BIO_printf(bio_err,"usage:version -[avbofpd]\n");
+@@ -211,6 +212,18 @@ int MAIN(int argc, char **argv)
+ }
+ if (cflags) printf("%s\n",SSLeay_version(SSLEAY_CFLAGS));
+ if (dir) printf("%s\n",SSLeay_version(SSLEAY_DIR));
++ if (engines)
++ {
++ ENGINE *e;
++ printf("engines: ");
++ e = ENGINE_get_first();
++ while (e)
++ {
++ printf("%s ", ENGINE_get_id(e));
++ e = ENGINE_get_next(e);
++ }
++ printf("\n");
++ }
+ end:
+ apps_shutdown();
+ OPENSSL_EXIT(ret);