$NetBSD: patch-bt,v 1.4 2002/10/26 13:07:29 bouyer Exp $

--- kssl/kopenssl.cc.orig	Wed Sep  5 00:08:18 2001
+++ kssl/kopenssl.cc
@@ -92,6 +92,7 @@ static int (*K_SSL_CTX_use_certificate) 
 static int (*K_SSL_get_error) (SSL*, int) = NULL;
 static STACK_OF(X509)* (*K_SSL_get_peer_cert_chain) (SSL*) = NULL;
 static void (*K_X509_STORE_CTX_set_chain) (X509_STORE_CTX *, STACK_OF(X509)*) = NULL;
+static void (*K_X509_STORE_CTX_set_purpose) (X509_STORE_CTX *, int) = NULL;
 static void (*K_sk_free) (STACK*) = NULL;
 static int (*K_sk_num) (STACK*) = NULL;
 static char* (*K_sk_value) (STACK*, int) = NULL;
@@ -117,7 +118,7 @@ void KOpenSSLProxy::destroy() {
   _me = NULL;
 }
 
-#ifdef __OpenBSD__
+#if defined(__OpenBSD__) || defined(__NetBSD__)
 #include <qdir.h>
 #include <qstring.h>
 #include <qstringlist.h>
@@ -180,20 +181,16 @@ KConfig *cfg;
 
    delete cfg;
 
-#ifdef __OpenBSD__
-   {
-   QString libname = findMostRecentLib("/usr/lib", "crypto");
-   if (!libname.isNull())
-         _cryptoLib = ll->globalLibrary(libname.latin1());
-   }
-#else
-   libpaths << "/usr/lib/"
-            << "/usr/local/lib/"
+   libpaths << "/usr/lib/";
+#if !defined(__OpenBSD__) && !defined(__NetBSD__)
+   libpaths << "/usr/local/lib/"
             << "/usr/local/openssl/lib/"
             << "/usr/local/ssl/lib/"
-            << "/opt/openssl/lib/"
+            << "/opt/openssl/lib/";
-            << "";
+#endif
+   libpaths << "";
 
+#if !defined(__OpenBSD__) && !defined(__NetBSD__)
 // FIXME: #define here for the various OS types to optimize
    libnamess << "libssl.so.0"
              << "libssl.so"
@@ -202,10 +199,16 @@ KConfig *cfg;
    libnamesc << "libcrypto.so.0"
              << "libcrypto.so"
              << "libcrypto.sl";
+#endif
 
    for (QStringList::Iterator it = libpaths.begin();
                               it != libpaths.end();
                               ++it) {
+#if defined(__NetBSD__) || defined(__OpenBSD__)
+     QString libname = findMostRecentLib(*it, "crypto");
+     if (!libname.isNull())
+         _cryptoLib = ll->globalLibrary(libname.latin1());
+#else
       for (QStringList::Iterator shit = libnamesc.begin();
                                  shit != libnamesc.end();
                                  ++shit) {
@@ -213,9 +216,9 @@ KConfig *cfg;
          _cryptoLib = ll->globalLibrary(alib.latin1());
          if (_cryptoLib) break;
       }
+#endif
       if (_cryptoLib) break;
    }
-#endif
 
    if (_cryptoLib) {
 #ifdef HAVE_SSL 
@@ -254,6 +257,7 @@ KConfig *cfg;
                 X509**, STACK_OF(X509)**)) _cryptoLib->symbol("PKCS12_parse");
       K_EVP_PKEY_free = (void (*) (EVP_PKEY *)) _cryptoLib->symbol("EVP_PKEY_free");
       K_X509_STORE_CTX_set_chain = (void (*)(X509_STORE_CTX *, STACK_OF(X509)*)) _cryptoLib->symbol("X509_STORE_CTX_set_chain");
+      K_X509_STORE_CTX_set_purpose = (void (*)(X509_STORE_CTX *, int)) _cryptoLib->symbol("X509_STORE_CTX_set_purpose");
       K_sk_free = (void (*) (STACK *)) _cryptoLib->symbol("sk_free");
       K_sk_num = (int (*) (STACK *)) _cryptoLib->symbol("sk_num");
       K_sk_value = (char* (*) (STACK *, int)) _cryptoLib->symbol("sk_value");
@@ -263,16 +267,14 @@ KConfig *cfg;
 #endif
    }
 
-#ifdef __OpenBSD__
-   {
-   QString libname = findMostRecentLib("/usr/lib", "ssl");
-   if (!libname.isNull())
-         _sslLib = ll->globalLibrary(libname.latin1());
-   }
-#else
    for (QStringList::Iterator it = libpaths.begin();
                               it != libpaths.end();
                               ++it) {
+#if defined(__OpenBSD__) || defined(__NetBSD__)
+      QString libname = findMostRecentLib(*it, "ssl");
+      if (!libname.isNull())
+           _sslLib = ll->globalLibrary(libname.latin1());
+#else
       for (QStringList::Iterator shit = libnamess.begin();
                                  shit != libnamess.end();
                                  ++shit) {
@@ -280,9 +282,9 @@ KConfig *cfg;
          _sslLib = ll->globalLibrary(alib.latin1());
          if (_sslLib) break;
       }
+#endif
       if (_sslLib) break;
    }
-#endif
 
    if (_sslLib) {
 #ifdef HAVE_SSL 
@@ -742,6 +744,10 @@ char *KOpenSSLProxy::sk_value(STACK *s, 
 
 void KOpenSSLProxy::X509_STORE_CTX_set_chain(X509_STORE_CTX *v, STACK_OF(X509)* x) {
    if (K_X509_STORE_CTX_set_chain) (K_X509_STORE_CTX_set_chain)(v,x);
+}
+
+void KOpenSSLProxy::X509_STORE_CTX_set_purpose(X509_STORE_CTX *v, int purpose) {
+   if (K_X509_STORE_CTX_set_purpose) (K_X509_STORE_CTX_set_purpose)(v,purpose);
 }
 
 
