Index: scribus/scribus.cpp
===================================================================
RCS file: /cvs/Scribus/scribus/scribus.cpp,v
retrieving revision 1.228.2.331
diff -u -p -r1.228.2.331 scribus.cpp
--- scribus/scribus.cpp	25 May 2005 22:00:13 -0000	1.228.2.331
+++ scribus/scribus.cpp	26 May 2005 21:50:55 -0000
@@ -9314,7 +9387,7 @@ void ScribusApp::initCMS()
 void ScribusApp::GetCMSProfilesDir(QString pfad)
 {
 #ifdef HAVE_CMS
-	QDir d(pfad, "*.*", QDir::Name, QDir::Files | QDir::NoSymLinks);
+	QDir d(pfad, "*", QDir::Name, QDir::Files | QDir::Readable | QDir::Dirs | QDir::NoSymLinks);
 	if ((d.exists()) && (d.count() != 0))
 	{
 		QString nam = "";
@@ -9323,10 +9396,29 @@ void ScribusApp::GetCMSProfilesDir(QStri
 
 		for (uint dc = 0; dc < d.count(); ++dc)
 		{
-			QFileInfo fi(pfad + d[dc]);
+			QFileInfo fi(pfad + "/" + d[dc]);
+			if (fi.isDir() && d[dc][0] != '.')
+			{
+				qDebug(QString("GetCMSProfiles: recursing into %2: %1").arg(fi.filePath()).arg(nam));
+				GetCMSProfilesDir(fi.filePath()+"/");
+				continue;
+			}
+#ifdef QT_MAC
+			QFile f(fi.filePath());
+			QByteArray bb(40);
+			if (!f.open(IO_ReadOnly)) {
+				qDebug(QString("couldn't open %1 as ICC").arg(fi.filePath()));
+				continue;
+			}
+			f.readBlock(bb.data(), 40);
+			f.close();
+			if (bb[36] == 'a' && bb[37] == 'c' && bb[38] == 's' && bb[39] == 'p')
+#else
 			QString ext = fi.extension(false).lower();
 			if ((ext == "icm") || (ext == "icc"))
+#endif
 			{
+				qDebug(QString("GetCMSProfiles: reading profile %1").arg(fi.filePath()));
 				hIn = cmsOpenProfileFromFile(pfad + d[dc], "r");
 				if (hIn == NULL)
 					continue;
@@ -9360,6 +9452,7 @@ void ScribusApp::GetCMSProfilesDir(QStri
 		}
 	}
 #endif
+		qDebug("GetCMSProfile: done");
 }
 
 void ScribusApp::RecalcColors(QProgressBar *dia)
