$OpenBSD: patch-kioslave_audiocd_audiocd_cpp,v 1.1 2002/04/10 00:09:09 espie Exp $
--- kioslave/audiocd/audiocd.cpp.orig	Wed Apr 10 01:52:01 2002
+++ kioslave/audiocd/audiocd.cpp	Wed Apr 10 01:59:55 2002
@@ -352,6 +352,51 @@ static QString determineFiletype(QString
     return filename.right(len - pos - 1);
 }
 
+#ifdef __OpenBSD__
+#include <qdir.h>
+#include <qstring.h>
+#include <qstringlist.h>
+
+static QString findMostRecentLib(QString dir, QString name)
+{
+       // Grab all shared libraries in the directory
+       QString filter = "lib"+name+".so.*";
+       QDir d(dir, filter);
+       if (!d.exists())
+               return NULL;
+       QStringList l = d.entryList();
+
+       // Find the best one
+       int bestmaj = -1;
+       int bestmin = -1;
+       QString best = NULL;
+       // where do we start
+       uint s = filter.length()-1;
+       for (QStringList::Iterator it = l.begin(); it != l.end(); ++it) {
+               QString numberpart = (*it).mid(s);
+               uint endmaj = numberpart.find('.');
+               if (endmaj == -1)
+                       continue;
+               bool ok;
+               int maj = numberpart.left(endmaj).toInt(&ok);
+               if (!ok)
+                       continue;
+               int min = numberpart.mid(endmaj+1).toInt(&ok);
+               if (!ok)
+                       continue;
+               if (maj > bestmaj || (maj == bestmaj && min > bestmin)) {
+                       bestmaj = maj;
+                       bestmin = min;
+                       best = (*it);
+               }
+       }
+       if (best.isNull())
+               return NULL;
+       else
+               return dir+"/"+best;
+}
+#endif
+
 #ifdef HAVE_LAME
 bool AudioCDProtocol::initLameLib(){
    if ( _lamelib_lame_init != NULL )
@@ -364,6 +409,13 @@ bool AudioCDProtocol::initLameLib(){
    KLibLoader *LameLib = KLibLoader::self();
    QStringList libpaths, libnames;
 
+#ifdef __OpenBSD__
+   {
+   QString libname = findMostRecentLib("/usr/local/lib", "mp3lame");
+   if (!libname.isNull())
+         _lamelib = LameLib->globalLibrary(libname.latin1());
+   }
+#else
    libpaths << "/usr/lib/"
             << "/usr/local/lib/"
             << "";
@@ -385,6 +437,7 @@ bool AudioCDProtocol::initLameLib(){
       }
       if (_lamelib) break;
    }
+#endif
 
   if ( _lamelib == NULL ){
       _lamelibMissing = true;
