diff options
author | Michael Nottebrock <lofi@FreeBSD.org> | 2007-07-04 10:25:00 +0000 |
---|---|---|
committer | Michael Nottebrock <lofi@FreeBSD.org> | 2007-07-04 10:25:00 +0000 |
commit | 961141fb14b688f13c92a4be6bbc4ba0ab9cf51b (patch) | |
tree | 8d33a723594dd3d8d48dfd3dcd1ded76eb0a52c0 /x11 | |
parent | 266731846b6f73f86b69daad7127f89ecc40fac2 (diff) | |
download | ports-961141fb14b688f13c92a4be6bbc4ba0ab9cf51b.tar.gz ports-961141fb14b688f13c92a4be6bbc4ba0ab9cf51b.zip |
Notes
Diffstat (limited to 'x11')
73 files changed, 3747 insertions, 1611 deletions
diff --git a/x11/kde3/Makefile b/x11/kde3/Makefile index 1a414af493ea..31f547d1ba0b 100644 --- a/x11/kde3/Makefile +++ b/x11/kde3/Makefile @@ -8,7 +8,6 @@ PORTNAME?= kde PORTVERSION= ${KDE_VERSION} -PORTREVISION= 1 CATEGORIES= x11 kde MASTER_SITES= # empty DISTFILES= # none diff --git a/x11/kde4-baseapps/Makefile b/x11/kde4-baseapps/Makefile index 245e12912f34..4747e8238169 100644 --- a/x11/kde4-baseapps/Makefile +++ b/x11/kde4-baseapps/Makefile @@ -8,7 +8,7 @@ PORTNAME= kdebase PORTVERSION= ${KDE_VERSION} -PORTREVISION= 3 +PORTREVISION= 0 CATEGORIES= x11 kde MASTER_SITES= ${MASTER_SITE_KDE} MASTER_SITE_SUBDIR= stable/${PORTVERSION:S/.0//}/src @@ -18,8 +18,7 @@ MAINTAINER= kde@FreeBSD.org COMMENT= Basic applications for the KDE system RUN_DEPENDS= ${KDE_PREFIX}/env/xdg-env.sh:${PORTSDIR}/misc/kde-xdg-env -BUILD_DEPENDS= mkfontdir:${X_CLIENTS_PORT} \ - xmkmf:${X_IMAKE_PORT} +BUILD_DEPENDS= xmkmf:${X_IMAKE_PORT} LIB_DEPENDS= sasl2:${PORTSDIR}/security/cyrus-sasl2 \ smbclient:${PORTSDIR}/net/samba-libsmbclient \ usb-0.1:${PORTSDIR}/devel/libusb @@ -58,7 +57,11 @@ OPTIONS= ARTSWRAPPER "Suid wrapper for aRts, req'd for realtime prio" on \ .include "${.CURDIR}/../../x11/kde3/Makefile.kde" .include <bsd.port.pre.mk> -.if ${X_WINDOW_SYSTEM:L} == xorg +.if ${X_WINDOW_SYSTEM:L} != xorg +BUILD_DEPENDS+= mkfontdir:${X_CLIENTS_PORT} +.else +BUILD_DEPENDS+= bdftopcf:${PORTSDIR}/x11-fonts/bdftopcf \ + mkfontdir:${PORTSDIR}/x11-fonts/mkfontdir RUN_DEPENDS+= kompmgr:${PORTSDIR}/x11-wm/kompmgr .endif @@ -72,8 +75,7 @@ RUN_DEPENDS+= htdig:${PORTSDIR}/textproc/htdig .if !defined(WITHOUT_HAL) && ${OSVERSION} > 500035 EXTRA_PATCHES= ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.cpp \ - ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h \ - ${FILESDIR}/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp + ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h LIB_DEPENDS+= dbus-qt-1.1:${PORTSDIR}/devel/dbus-qt3 \ hal.1:${PORTSDIR}/sysutils/hal PLIST_SUB+= MEDIA="" diff --git a/x11/kde4-baseapps/distinfo b/x11/kde4-baseapps/distinfo index 9051c799c5c2..5e51bc436b6b 100644 --- a/x11/kde4-baseapps/distinfo +++ b/x11/kde4-baseapps/distinfo @@ -1,3 +1,3 @@ -MD5 (KDE/kdebase-3.5.6.tar.bz2) = a53f589f58012e655a52220a6a151019 -SHA256 (KDE/kdebase-3.5.6.tar.bz2) = 245b35f8b2e1533f9ae92b3b07bee5339a716dfb8db363d0126d2e7409b7bd7e -SIZE (KDE/kdebase-3.5.6.tar.bz2) = 24155599 +MD5 (KDE/kdebase-3.5.7.tar.bz2) = b421e01b3ee712549ee967f58ed24de0 +SHA256 (KDE/kdebase-3.5.7.tar.bz2) = 3c6d739abefc55b6cb64e1cf37b79f5993b666a5b40492471754794416b5c28d +SIZE (KDE/kdebase-3.5.7.tar.bz2) = 24395088 diff --git a/x11/kde4-baseapps/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp b/x11/kde4-baseapps/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp index 0da5609fb97a..61403676bbcb 100644 --- a/x11/kde4-baseapps/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp +++ b/x11/kde4-baseapps/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp @@ -1,5 +1,5 @@ ---- kioslave/media/mediamanager/halbackend.cpp.orig Mon Jan 15 14:31:32 2007 -+++ kioslave/media/mediamanager/halbackend.cpp Sun Apr 8 02:18:14 2007 +--- kioslave/media/mediamanager/halbackend.cpp.orig Mon May 14 09:55:40 2007 ++++ kioslave/media/mediamanager/halbackend.cpp Sat Jun 2 11:40:22 2007 @@ -17,9 +17,15 @@ */ @@ -39,7 +39,7 @@ return true; } -@@ -251,11 +265,11 @@ +@@ -245,11 +259,11 @@ } } QMap<QString,QString> options = MediaManagerUtils::splitOptions(mountoptions(udi)); @@ -53,19 +53,19 @@ } m_mediaList.addMedium(medium, allowNotification); -@@ -272,6 +286,11 @@ +@@ -264,6 +278,11 @@ + { + /* Create medium */ Medium* medium = new Medium(udi, ""); - setFloppyProperties(medium); - m_mediaList.addMedium(medium, allowNotification); +#ifdef Q_OS_FREEBSD + m_pollTimer.stop(); + m_pollMediaList.append(medium); + m_pollTimer.start(250); +#endif - return; - } - -@@ -293,12 +312,23 @@ + // if the storage has a volume, we ignore it + if ( setFloppyProperties(medium) ) + m_mediaList.addMedium(medium, allowNotification); +@@ -290,12 +309,23 @@ void HALBackend::RemoveDevice(const char *udi) { @@ -90,7 +90,7 @@ const char* mediumUdi = findMediumUdiFromUdi(udi); if (!mediumUdi) return; -@@ -334,7 +364,7 @@ +@@ -331,7 +361,7 @@ } const char* mediumUdi = findMediumUdiFromUdi(udi); @@ -99,7 +99,7 @@ if (!mediumUdi) return; -@@ -392,7 +422,7 @@ +@@ -389,7 +419,7 @@ { Medium m( *cmedium ); if ( setFstabProperties( &m ) ) { @@ -108,7 +108,7 @@ m_mediaList.changeMediumState(m, false); } return; -@@ -407,6 +437,7 @@ +@@ -404,6 +434,7 @@ setFloppyProperties(m); if (libhal_device_query_capability(m_halContext, mediumUdi, "camera", NULL)) setCameraProperties(m); @@ -116,7 +116,7 @@ m_mediaList.changeMediumState(*m, false); -@@ -479,28 +510,23 @@ +@@ -476,28 +507,23 @@ else mimeType = "media/dvd" + MOUNT_SUFFIX; @@ -156,7 +156,7 @@ } else { -@@ -584,7 +610,7 @@ +@@ -581,7 +607,7 @@ } } @@ -165,7 +165,40 @@ QString fstype = medium->fsType(); if ( fstype.isNull() ) fstype = "auto"; -@@ -794,7 +820,7 @@ +@@ -766,7 +792,32 @@ + if (medium && !isInFstab(medium).isNull()) + return QStringList(); // not handled by HAL - fstab entry + ++ const char *boolOptionNames[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; ++ const char *stringOptionNames[] = { "shortname", "journaling", "mountpoint", "automount", ++#ifdef Q_OS_FREEBSD ++ "filemask", "dirmask", "charset", "locale", "doscodepage", ++#endif ++ 0 }; ++ + KConfig config("mediamanagerrc"); ++ config.setGroup("General"); ++ QMap<QString,QString> options; ++ for (int index = 0; boolOptionNames[index]; ++index) ++ if (config.hasKey(boolOptionNames[index])) ++ options.insert(boolOptionNames[index], ++ config.readBoolEntry(boolOptionNames[index]) ? "true" : "false"); ++ for (int index = 0; stringOptionNames[index]; ++index) ++ if (config.hasKey(stringOptionNames[index])) ++ options.insert(stringOptionNames[index], ++ config.readEntry(stringOptionNames[index])); ++ if (!libhal_device_exists(m_halContext, name.latin1(), NULL)) ++ { ++ QStringList result; ++ if (name.lower() == "general") ++ for (QMap<QString,QString>::ConstIterator it = options.begin(); it != options.end(); ++it) ++ result << it.key() + '=' + it.data(); ++ return result; ++ } + config.setGroup(name); + + char ** array = libhal_device_get_property_strlist(m_halContext, name.latin1(), "volume.mount.valid_options", NULL); +@@ -777,25 +828,68 @@ if (t.endsWith("=")) t = t.left(t.length() - 1); valids[t] = true; @@ -174,20 +207,309 @@ } libhal_free_string_array(array); QStringList result; -@@ -915,12 +941,20 @@ - result << "journaling=ordered"; + QString tmp; + ++ QMap<QString,QString> halOptions; ++ LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, name.latin1()); ++ if (!halVolume) ++ { ++ LibHalDrive *halDrive = libhal_drive_from_udi(m_halContext, name.latin1()); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_drive_policy_get_mount_options(halDrive, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ } ++ else ++ { ++ const char *driveUdi = libhal_volume_get_storage_device_udi(halVolume); ++ LibHalDrive *halDrive = !driveUdi ? 0 : libhal_drive_from_udi(m_halContext, driveUdi); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_volume_policy_get_mount_options(halDrive, halVolume, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ libhal_volume_free(halVolume); ++ } ++ if (!tmp.isEmpty()) ++ { ++ uint start = 0; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ QString opt = tmp.mid( start, end - start ); ++ start = end + 1; ++ end = opt.find('='); ++ QString key = opt.left(end); ++ if (valids.contains(key)) ++ halOptions.insert(key, end == -1 ? QString::null : opt.mid(end + 1)); ++ } ++ } ++ + QString fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.fstype"); + if (fstype.isNull()) + fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.mount_filesystem"); + + QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); + ++ bool value = false; + bool removable = false; + if ( !drive_udi.isNull() ) ++ { ++ value = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.automount_enabled_hint", NULL); + removable = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.removable", NULL) +- || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ } + + config.setGroup(drive_udi); +- bool value = config.readBoolEntry("automount", false); ++ value = config.readBoolEntry("automount", ++ !options.contains("automount") ? value : options["automount"] == "true" ); + config.setGroup(name); + + if (libhal_device_get_property_bool(m_halContext, name.latin1(), "volume.disc.is_blank", NULL) +@@ -809,44 +903,98 @@ + + if (valids.contains("ro")) + { +- value = config.readBoolEntry("ro", false); ++ value = options.contains("ro") ? options["ro"] == "true" ++ : halOptions.contains("ro"); ++ value = config.readBoolEntry("ro", value); + tmp = QString("ro=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("ro"); + } + + if (valids.contains("quiet")) + { +- value = config.readBoolEntry("quiet", false); ++ value = options.contains("quiet") ? options["quiet"] == "true" ++ : halOptions.contains("quiet"); ++ value = config.readBoolEntry("quiet", value); + tmp = QString("quiet=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("quiet"); + } + + if (valids.contains("flush")) + { +- value = config.readBoolEntry("flush", fstype.endsWith("fat")); ++ value = options.contains("flush") ? options["flush"] == "true" ++ : (halOptions.contains("flush") || fstype.endsWith("fat")); ++ value = config.readBoolEntry("flush", value); + tmp = QString("flush=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("flush"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("-u")) ++#else + if (valids.contains("uid")) ++#endif + { +- value = config.readBoolEntry("uid", true); ++ value = !options.contains("uid") ? true : options["uid"] == "true"; ++ value = config.readBoolEntry("uid", value); + tmp = QString("uid=%1").arg(value ? "true" : "false"); + result << tmp; ++#ifdef Q_OS_FREEBSD ++ halOptions.remove("-u"); ++#else ++ halOptions.remove("uid"); ++#endif + } + + if (valids.contains("utf8")) + { +- value = config.readBoolEntry("utf8", true); ++ value = !options.contains("iocharset") && !halOptions.contains("iocharset") ++ && (options.contains("utf8") ? options["utf8"] == "true" ++ : halOptions.contains("utf8")); ++ value = config.readBoolEntry("utf8", value); + tmp = QString("utf8=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("utf8"); + } + ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("nowin95") ++ && valids.contains("longnames") ++ && valids.contains("shortnames")) ++ { ++ QString svalue = "winnt"; ++ if (halOptions.contains("longnames") && !halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "winnt"; ++ else if (!halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "win95"; ++ else if (halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "mixed"; ++ else if (halOptions.contains("nowin95")) ++ svalue = "lower"; ++ svalue = config.readEntry("shortname", ++ options.contains("shortname") ? options["shortname"] : svalue); ++ if (svalue == "winnt") ++ result << "shortname=winnt"; ++ else if (svalue == "win95") ++ result << "shortname=win95"; ++ else if (svalue == "mixed") ++ result << "shortname=mixed"; ++ else ++ result << "shortname=lower"; ++ halOptions.remove("nowin95"); ++ halOptions.remove("longnames"); ++ halOptions.remove("shortnames"); ++ } ++#else + if (valids.contains("shortname")) + { +- QString svalue = config.readEntry("shortname", "lower").lower(); ++ QString svalue = options.contains("shortname") ? options["shortname"] ++ : (halOptions.contains("shortname") ? halOptions["shortname"] : "winnt"); ++ svalue = config.readEntry("shortname", svalue).lower(); + if (svalue == "winnt") + result << "shortname=winnt"; + else if (svalue == "win95") +@@ -856,28 +1004,36 @@ + else + result << "shortname=lower"; + } +- ++#endif + if (valids.contains("sync")) + { +- value = config.readBoolEntry("sync", ( valids.contains("flush") && !fstype.endsWith("fat") ) && removable); ++ value = options.contains("sync") ? options["sync"] == "true" ++ : (halOptions.contains("sync") || ((valids.contains("flush") && !fstype.endsWith("fat")) && removable)); ++ value = config.readBoolEntry("sync", value); + tmp = QString("sync=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("sync"); + } + + if (valids.contains("noatime")) + { + value = config.readBoolEntry("atime", !fstype.endsWith("fat")); ++ value = options.contains("atime") ? options["atime"] == "true" ++ : (halOptions.contains("noatime") ? false : !fstype.endsWith("fat")); ++ value = config.readBoolEntry("atime", value); + tmp = QString("atime=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("noatime"); + } + + QString mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.mount_point"); + if (mount_point.isEmpty()) + mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.desired_mount_point"); + +- mount_point = config.readEntry("mountpoint", mount_point); ++ mount_point = config.readEntry("mountpoint", ++ options.contains("mountpoint") ? options["mountpoint"] : mount_point); + + if (!mount_point.startsWith("/")) + mount_point = "/media/" + mount_point; +@@ -887,7 +1043,9 @@ + + if (valids.contains("data")) + { +- QString svalue = config.readEntry("journaling").lower(); ++ QString svalue = options.contains("journaling") ? options["journaling"] ++ : (halOptions.contains("data") ? halOptions["data"] : "ordered"); ++ svalue = config.readEntry("journaling", svalue).lower(); + if (svalue == "ordered") + result << "journaling=ordered"; + else if (svalue == "writeback") +@@ -896,6 +1054,82 @@ + result << "journaling=data"; + else + result << "journaling=ordered"; ++ halOptions.remove("data"); ++ } ++ ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("-m")) ++ { ++ QString svalue = options.contains("filemask") ? options["filemask"] ++ : (halOptions.contains("-m") ? halOptions["-m"] : QString::null); ++ svalue = config.readEntry("filemask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("filemask=%1").arg(svalue); ++ halOptions.remove("-m"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-M")) ++ { ++ QString svalue = options.contains("dirmask") ? options["dirmask"] ++ : (halOptions.contains("-M") ? halOptions["-M"] : QString::null); ++ svalue = config.readEntry("dirmask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("dirmask=%1").arg(svalue); ++ halOptions.remove("-M"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ + if (valids.contains("-C")) + { -+ result << QString("charset=%1").arg(nl_langinfo(CODESET)); ++ QString svalue = options.contains("charset") ? options["charset"] ++ : (halOptions.contains("-C") ? halOptions["-C"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("charset", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("charset=%1").arg(svalue); ++ halOptions.remove("-C"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-L")) ++ { ++ QString locale = getenv("LANG"); ++ if (locale.isEmpty()) locale = getenv("LC_ALL"); ++ QString svalue = options.contains("locale") ? options["locale"] ++ : (halOptions.contains("-L") ? halOptions["-L"] : locale ); ++ svalue = config.readEntry("locale", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("locale=%1").arg(svalue); ++ halOptions.remove("-L"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-D")) ++ { ++ QString svalue = options.contains("doscodepage") ? options["doscodepage"] ++ : (halOptions.contains("-D") ? halOptions["-D"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("doscodepage", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("doscodepage=%1").arg(svalue); ++ halOptions.remove("-D"); + kdDebug(1219) << "mount properties " << result << " " << endl; + } +#endif + ++ if (!halOptions.isEmpty()) ++ { ++ QString svalue; ++ for (QMap<QString,QString>::ConstIterator it = halOptions.begin(); it != halOptions.end(); ++it) ++ { ++ if (it != halOptions.begin()) ++ svalue += ','; ++ svalue += it.key(); ++ if (!it.data().isEmpty()) ++ svalue += '=' + it.data(); ++ } ++ if (!svalue.isEmpty()) ++ result << QString("options=%1").arg(svalue); ++ kdDebug(1219) << "mount properties " << result << " " << endl; + } + return result; - } +@@ -903,32 +1137,82 @@ bool HALBackend::setMountoptions(const QString &name, const QStringList &options ) { @@ -195,8 +517,94 @@ + kdDebug(1219) << "setMountoptions " << name << " " << options << endl; KConfig config("mediamanagerrc"); - config.setGroup(name); -@@ -960,7 +994,7 @@ +- config.setGroup(name); ++ config.setGroup(name.lower() == "general" ? "General" : name); + + QMap<QString,QString> valids = MediaManagerUtils::splitOptions(options); + + const char *names[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; + for (int index = 0; names[index]; ++index) + if (valids.contains(names[index])) +- config.writeEntry(names[index], valids[names[index]] == "true"); ++ if (valids[names[index]].isEmpty()) ++ config.deleteEntry(names[index]); ++ else ++ config.writeEntry(names[index], valids[names[index]] == "true"); + + if (valids.contains("shortname")) +- config.writeEntry("shortname", valids["shortname"]); ++ if (valids["shortname"].isEmpty()) ++ config.deleteEntry("shortname"); ++ else ++ config.writeEntry("shortname", valids["shortname"]); + + if (valids.contains("journaling")) +- config.writeEntry("journaling", valids["journaling"]); ++ if (valids["journaling"].isEmpty()) ++ config.deleteEntry("journaling"); ++ else ++ config.writeEntry("journaling", valids["journaling"]); + +- if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) +- config.writeEntry("mountpoint", valids["mountpoint"]); ++ if (valids.contains("mountpoint")) ++ if (valids["mountpoint"].isEmpty()) ++ config.deleteEntry("mountpoint"); ++ else if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) ++ config.writeEntry("mountpoint", valids["mountpoint"]); ++ ++ if (valids.contains("automount")) ++ if (valids["automount"].isEmpty()) ++ config.deleteEntry("automount"); ++ else ++ { ++ QString drive_udi = libhal_device_exists(m_halContext, name.latin1(), NULL) ++ ? libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device") ++ : (name.lower() == "general" ? "General" : name); ++ config.setGroup(drive_udi); ++ config.writeEntry("automount", valids["automount"]); ++ } + +- if (valids.contains("automount")) { +- QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); +- config.setGroup(drive_udi); +- config.writeEntry("automount", valids["automount"]); +- } ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ if (valids["filemask"].isEmpty()) ++ config.deleteEntry("filemask"); ++ else ++ config.writeEntry("filemask", valids["filemask"]); ++ ++ if (valids.contains("dirmask")) ++ if (valids["dirmask"].isEmpty()) ++ config.deleteEntry("dirmask"); ++ else ++ config.writeEntry("dirmask", valids["dirmask"]); ++ ++ if (valids.contains("charset")) ++ if (valids["charset"].isEmpty()) ++ config.deleteEntry("charset"); ++ else ++ config.writeEntry("charset", valids["charset"]); ++ ++ if (valids.contains("locale")) ++ if (valids["locale"].isEmpty()) ++ config.deleteEntry("locale"); ++ else ++ config.writeEntry("locale", valids["locale"]); ++ ++ if (valids.contains("doscodepage")) ++ if (valids["doscodepage"].isEmpty()) ++ config.deleteEntry("doscodepage"); ++ else ++ config.writeEntry("doscodepage", valids["doscodepage"]); ++#endif + + return true; + } +@@ -943,7 +1227,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Mount"))) { @@ -205,7 +613,7 @@ return i18n("Internal Error"); } -@@ -968,7 +1002,7 @@ +@@ -951,7 +1235,7 @@ DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &poptions, noptions, DBUS_TYPE_INVALID)) { @@ -214,7 +622,7 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -996,7 +1030,7 @@ +@@ -979,7 +1263,7 @@ return qerror; } @@ -223,7 +631,7 @@ dbus_message_unref (dmesg); dbus_message_unref (reply); -@@ -1008,8 +1042,13 @@ +@@ -991,8 +1275,13 @@ QString HALBackend::listUsingProcesses(const Medium* medium) { QString proclist, fullmsg; @@ -238,7 +646,7 @@ uint counter = 0; if (fuser) { -@@ -1044,7 +1083,7 @@ +@@ -1027,7 +1316,7 @@ void HALBackend::slotResult(KIO::Job *job) { @@ -247,7 +655,7 @@ struct mount_job_data *data = mount_jobs[job]; QString& qerror = data->errorMessage; -@@ -1071,7 +1110,6 @@ +@@ -1054,7 +1343,6 @@ qerror = job->errorText(); } @@ -255,7 +663,7 @@ mount_jobs.remove(job); /* Job completed. Notify the caller */ -@@ -1080,6 +1118,25 @@ +@@ -1063,6 +1351,25 @@ kapp->eventLoop()->exitLoop(); } @@ -281,7 +689,7 @@ QString HALBackend::isInFstab(const Medium *medium) { KMountPoint::List fstab = KMountPoint::possibleMountPoints(KMountPoint::NeedMountOptions|KMountPoint::NeedRealDeviceName); -@@ -1092,11 +1149,13 @@ +@@ -1075,11 +1382,13 @@ QString reald = (*it)->realDeviceName(); if ( reald.endsWith( "/" ) ) reald = reald.left( reald.length() - 1 ); @@ -296,7 +704,7 @@ return (*it)->mountPoint(); } } -@@ -1116,7 +1175,7 @@ +@@ -1099,7 +1408,7 @@ data.completed = false; data.medium = medium; @@ -305,7 +713,7 @@ KIO::Job *job = KIO::mount( false, 0, medium->deviceNode(), mountPoint ); connect(job, SIGNAL( result (KIO::Job *)), SLOT( slotResult( KIO::Job *))); -@@ -1134,7 +1193,7 @@ +@@ -1117,7 +1426,7 @@ QStringList soptions; @@ -314,7 +722,16 @@ QMap<QString,QString> valids = MediaManagerUtils::splitOptions(mountoptions(medium->id())); if (valids["flush"] == "true") -@@ -1147,10 +1206,10 @@ +@@ -1125,15 +1434,19 @@ + + if (valids["uid"] == "true") + { ++#ifdef Q_OS_FREEBSD ++ soptions << QString("-u=%1").arg(getuid()); ++#else + soptions << QString("uid=%1").arg(getuid()); ++#endif + } if (valids["ro"] == "true") soptions << "ro"; @@ -327,21 +744,69 @@ if (valids["quiet"] == "true") soptions << "quiet"; -@@ -1180,6 +1239,13 @@ +@@ -1149,7 +1462,19 @@ + + if (valids.contains("shortname")) + { ++#ifdef Q_OS_FREEBSD ++ QString option = valids["shortname"]; ++ if (option == "win95") ++ soptions << QString("shortnames"); ++ else if (option == "mixed") ++ soptions << QString("shortnames") << QString("longnames"); ++ else if (option == "lower") ++ soptions << QString("nowin95"); ++ else ++ soptions << QString("longnames"); ++#else + soptions << QString("shortname=%1").arg(valids["shortname"]); ++#endif + } + + if (valids.contains("journaling")) +@@ -1163,6 +1488,41 @@ soptions << QString("data=ordered"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ { ++ soptions << QString("-m=%1").arg(valids["filemask"]); ++ } ++ if (valids.contains("dirmask")) ++ { ++ soptions << QString("-M=%1").arg(valids["dirmask"]); ++ } + if (valids.contains("charset")) + { + soptions << QString("-C=%1").arg(valids["charset"]); + } ++ if (valids.contains("locale")) ++ { ++ soptions << QString("-L=%1").arg(valids["locale"]); ++ } ++ if (valids.contains("doscodepage")) ++ { ++ soptions << QString("-D=%1").arg(valids["doscodepage"]); ++ } +#endif ++ if (valids.contains("options")) ++ { ++ uint start = 0; ++ QString tmp = valids["options"]; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ soptions << tmp.mid( start, end - start ); ++ start = end + 1; ++ } ++ } + const char **options = new const char*[soptions.size() + 1]; uint noptions = 0; for (QStringList::ConstIterator it = soptions.begin(); it != soptions.end(); ++it, ++noptions) -@@ -1192,9 +1258,6 @@ +@@ -1175,9 +1535,6 @@ return qerror; } @@ -351,7 +816,7 @@ return QString(); } -@@ -1255,7 +1318,7 @@ +@@ -1238,7 +1595,7 @@ const char *options[2]; const char *udi = medium->id().latin1(); @@ -360,7 +825,7 @@ dbus_error_init(&error); DBusConnection *dbus_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); -@@ -1268,7 +1331,7 @@ +@@ -1251,7 +1608,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Unmount"))) { @@ -369,7 +834,7 @@ return i18n("Internal Error"); } -@@ -1278,7 +1341,7 @@ +@@ -1261,7 +1618,7 @@ if (!dbus_message_append_args (dmesg, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &options, 0, DBUS_TYPE_INVALID)) { @@ -378,16 +843,16 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -1288,7 +1351,7 @@ +@@ -1271,7 +1628,7 @@ { QString qerror, reason; - kdDebug() << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; + kdDebug(1219) << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; qerror = "<qt>"; - qerror += i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " + qerror += "<p>" + i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " "currently mounted at <b>%4</b> could not be unmounted. ").arg( -@@ -1318,13 +1381,10 @@ +@@ -1301,13 +1658,10 @@ return qerror; } diff --git a/x11/kde4-baseapps/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp b/x11/kde4-baseapps/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp deleted file mode 100644 index 7d0fbfa81767..000000000000 --- a/x11/kde4-baseapps/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp +++ /dev/null @@ -1,49 +0,0 @@ ---- kioslave/media/mounthelper/kio_media_mounthelper.cpp.orig Mon Jan 15 12:31:31 2007 -+++ kioslave/media/mounthelper/kio_media_mounthelper.cpp Wed Feb 21 15:17:23 2007 -@@ -89,7 +89,9 @@ - m_isCdrom = medium.mimeType().find("dvd")!=-1 - || medium.mimeType().find("cd")!=-1; - -- if (args->isSet("u")) -+ bool do_eject = args->isSet("s") || args->isSet("e"); -+ -+ if (args->isSet("u") || do_eject) - { - DCOPRef mediamanager("kded", "mediamanager"); - DCOPReply reply = mediamanager.call( "unmount", medium.id()); -@@ -97,30 +99,14 @@ - reply.get(m_errorStr); - kdDebug() << "medium unmount " << m_errorStr << endl; - if (m_errorStr.isNull()) -+ { -+ if( do_eject ) -+ invokeEject(device, true); -+ else - ::exit(0); -+ } - else - error(); -- } -- else if (args->isSet("s") || args->isSet("e")) -- { -- /* -- * We want to call mediamanager unmount before invoking eject. That's -- * because unmount would provide an informative error message in case of -- * failure. However, there are cases when unmount would fail -- * (supermount, slackware, see bug#116209) but eject would succeed. -- * Thus if unmount fails, save unmount error message and invokeEject() -- * anyway. Only if both unmount and eject fail, notify the user by -- * displaying the saved error message (see ejectFinished()). -- */ -- if (medium.isMounted()) -- { -- DCOPRef mediamanager("kded", "mediamanager"); -- DCOPReply reply = mediamanager.call( "unmount", medium.id()); -- if (reply.isValid()) -- reply.get(m_errorStr); -- m_device = device; -- } -- invokeEject(device, true); - } - else - { diff --git a/x11/kde4-baseapps/files/patch-kdm-config.def b/x11/kde4-baseapps/files/patch-kdm-config.def index 5d1b849cc1d7..1bd357d0cd72 100644 --- a/x11/kde4-baseapps/files/patch-kdm-config.def +++ b/x11/kde4-baseapps/files/patch-kdm-config.def @@ -1,10 +1,12 @@ ---- kdm/config.def.orig Wed Jun 14 17:51:42 2006 -+++ kdm/config.def Wed Jun 14 17:51:57 2006 -@@ -36,7 +36,7 @@ +--- kdm/config.def.orig Mon Oct 10 17:04:31 2005 ++++ kdm/config.def Fri May 25 12:08:24 2007 +@@ -35,8 +35,8 @@ + #ifdef _AIX # define HALT_CMD "/usr/sbin/shutdown -h now" # define REBOOT_CMD "/usr/sbin/shutdown -r now" - #elif defined(BSD) +-#elif defined(BSD) -# define HALT_CMD "/sbin/shutdown -h now" ++#elif defined(__FreeBSD__) +# define HALT_CMD "/sbin/shutdown -p now" # define REBOOT_CMD "/sbin/shutdown -r now" #elif defined(__SVR4) diff --git a/x11/kde4-baseapps/files/patch-plugin-keyboard-handler.diff b/x11/kde4-baseapps/files/patch-plugin-keyboard-handler.diff deleted file mode 100644 index 8d301d6d4e69..000000000000 --- a/x11/kde4-baseapps/files/patch-plugin-keyboard-handler.diff +++ /dev/null @@ -1,77 +0,0 @@ ------------------------------------------------------------------------- -r652585 | lunakl | 2007-04-11 16:26:32 +0200 (Wed, 11 Apr 2007) | 3 lines -Changed paths: - M /branches/KDE/3.5/kdebase/nsplugins/viewer/qxteventloop.cpp - -Fix keyboard events handling. - - ------------------------------------------------------------------------- -Index: nsplugins/viewer/qxteventloop.cpp -=================================================================== ---- nsplugins/viewer/qxteventloop.cpp (revision 652584) -+++ nsplugins/viewer/qxteventloop.cpp (revision 652585) -@@ -32,12 +32,16 @@ - ** not clear to you. - ** - **********************************************************************/ -+ -+#include <config.h> -+ - #include "qxteventloop.h" - - #if QT_VERSION >= 0x030100 - - #include <qapplication.h> - #include <qwidgetintdict.h> -+#include <kglobal.h> - - // resolve the conflict between X11's FocusIn and QEvent::FocusIn - const int XFocusOut = FocusOut; -@@ -52,6 +56,8 @@ const int XKeyRelease = KeyRelease; - - Boolean qmotif_event_dispatcher( XEvent *event ); - -+static void handle_xquerykeymap( Display* dpy, XEvent* event ); -+ - class QXtEventLoopPrivate - { - public: -@@ -147,6 +153,7 @@ void QXtEventLoopPrivate::unhook() - extern bool qt_try_modal( QWidget *, XEvent * ); // defined in qapplication_x11.cpp - Boolean qmotif_event_dispatcher( XEvent *event ) - { -+ handle_xquerykeymap( qt_xdisplay(), event ); - QApplication::sendPostedEvents(); - - QWidgetIntDict *mapper = &static_d->mapper; -@@ -462,6 +469,29 @@ bool QXtEventLoop::processEvents( Proces - return ( (flags & WaitForMore) || ( pendingmask != 0 ) || nevents > 0 ); - } - -+#include <dlfcn.h> -+ -+static char xquerykeymap_data[ 32 ]; -+static int (*real_xquerykeymap)( Display*, char[32] ) = NULL; -+ -+static void handle_xquerykeymap( Display* dpy, XEvent* event ) -+{ -+ if( real_xquerykeymap == NULL ) -+ real_xquerykeymap = (int (*)( Display*, char[32] )) dlsym( RTLD_NEXT, "XQueryKeymap" ); -+ if( event->type == XFocusIn || event->type == XKeyPress || event->type == XKeyRelease ) -+ real_xquerykeymap( dpy, xquerykeymap_data ); -+ if( event->type == XFocusOut ) -+ memset( xquerykeymap_data, 0, 32 ); -+} -+ -+extern "C" KDE_EXPORT -+int XQueryKeymap( Display* , char k[32] ) -+{ -+ memcpy( k, xquerykeymap_data, 32 ); -+ return 1; -+} -+ -+ - #include "qxteventloop.moc" - - #endif diff --git a/x11/kde4-baseapps/files/pkg-message.in b/x11/kde4-baseapps/files/pkg-message.in index 1cacd3158de2..34663a8e2907 100644 --- a/x11/kde4-baseapps/files/pkg-message.in +++ b/x11/kde4-baseapps/files/pkg-message.in @@ -7,7 +7,7 @@ $ xset fp+ %%PREFIX%%/share/apps/konsole/fonts $ xset fp rehash or by adding it to your X-server configuration file (usually -/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and +/etc/X11/xorg.conf or %%X11BASE%%/lib/X11/xorg.conf) and restarting the X-server. You also have to make the new path known to fontconfig by diff --git a/x11/kde4-baseapps/pkg-plist b/x11/kde4-baseapps/pkg-plist index bd60a8fa6ce8..a33e2e7cedc9 100644 --- a/x11/kde4-baseapps/pkg-plist +++ b/x11/kde4-baseapps/pkg-plist @@ -2018,7 +2018,7 @@ share/apps/kthememanager/themes/YellowOnBlue-big/YellowOnBlue-big.xml share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.preview.png share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.xml share/apps/kwin/b2.desktop -share/apps/kwin/default_rules/fsp_workarounds_1 +share/apps/kwin/default_rules/fsp_workarounds_1.kwinrules share/apps/kwin/eventsrc share/apps/kwin/keramik.desktop share/apps/kwin/laptop.desktop @@ -3797,6 +3797,8 @@ share/locale/l10n/mc/entry.desktop share/locale/l10n/mc/flag.png share/locale/l10n/md/entry.desktop share/locale/l10n/md/flag.png +share/locale/l10n/me/entry.desktop +share/locale/l10n/me/flag.png share/locale/l10n/mg/entry.desktop share/locale/l10n/mg/flag.png share/locale/l10n/mh/entry.desktop @@ -3894,6 +3896,8 @@ share/locale/l10n/qa/entry.desktop share/locale/l10n/qa/flag.png share/locale/l10n/ro/entry.desktop share/locale/l10n/ro/flag.png +share/locale/l10n/rs/entry.desktop +share/locale/l10n/rs/flag.png share/locale/l10n/ru/entry.desktop share/locale/l10n/ru/flag.png share/locale/l10n/rw/entry.desktop @@ -3999,8 +4003,6 @@ share/locale/l10n/ws/entry.desktop share/locale/l10n/ws/flag.png share/locale/l10n/ye/entry.desktop share/locale/l10n/ye/flag.png -share/locale/l10n/yu/entry.desktop -share/locale/l10n/yu/flag.png share/locale/l10n/za/entry.desktop share/locale/l10n/za/flag.png share/locale/l10n/zm/entry.desktop @@ -4469,7 +4471,6 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/zw @dirrm share/locale/l10n/zm @dirrm share/locale/l10n/za -@dirrm share/locale/l10n/yu @dirrm share/locale/l10n/ye @dirrm share/locale/l10n/ws @dirrm share/locale/l10n/wf @@ -4519,6 +4520,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/sa @dirrm share/locale/l10n/rw @dirrm share/locale/l10n/ru +@dirrm share/locale/l10n/rs @dirrm share/locale/l10n/ro @dirrm share/locale/l10n/qa @dirrm share/locale/l10n/py @@ -4565,6 +4567,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/mk @dirrm share/locale/l10n/mh @dirrm share/locale/l10n/mg +@dirrm share/locale/l10n/me @dirrm share/locale/l10n/md @dirrm share/locale/l10n/mc @dirrm share/locale/l10n/ma diff --git a/x11/kde4-runtime/Makefile b/x11/kde4-runtime/Makefile index 245e12912f34..4747e8238169 100644 --- a/x11/kde4-runtime/Makefile +++ b/x11/kde4-runtime/Makefile @@ -8,7 +8,7 @@ PORTNAME= kdebase PORTVERSION= ${KDE_VERSION} -PORTREVISION= 3 +PORTREVISION= 0 CATEGORIES= x11 kde MASTER_SITES= ${MASTER_SITE_KDE} MASTER_SITE_SUBDIR= stable/${PORTVERSION:S/.0//}/src @@ -18,8 +18,7 @@ MAINTAINER= kde@FreeBSD.org COMMENT= Basic applications for the KDE system RUN_DEPENDS= ${KDE_PREFIX}/env/xdg-env.sh:${PORTSDIR}/misc/kde-xdg-env -BUILD_DEPENDS= mkfontdir:${X_CLIENTS_PORT} \ - xmkmf:${X_IMAKE_PORT} +BUILD_DEPENDS= xmkmf:${X_IMAKE_PORT} LIB_DEPENDS= sasl2:${PORTSDIR}/security/cyrus-sasl2 \ smbclient:${PORTSDIR}/net/samba-libsmbclient \ usb-0.1:${PORTSDIR}/devel/libusb @@ -58,7 +57,11 @@ OPTIONS= ARTSWRAPPER "Suid wrapper for aRts, req'd for realtime prio" on \ .include "${.CURDIR}/../../x11/kde3/Makefile.kde" .include <bsd.port.pre.mk> -.if ${X_WINDOW_SYSTEM:L} == xorg +.if ${X_WINDOW_SYSTEM:L} != xorg +BUILD_DEPENDS+= mkfontdir:${X_CLIENTS_PORT} +.else +BUILD_DEPENDS+= bdftopcf:${PORTSDIR}/x11-fonts/bdftopcf \ + mkfontdir:${PORTSDIR}/x11-fonts/mkfontdir RUN_DEPENDS+= kompmgr:${PORTSDIR}/x11-wm/kompmgr .endif @@ -72,8 +75,7 @@ RUN_DEPENDS+= htdig:${PORTSDIR}/textproc/htdig .if !defined(WITHOUT_HAL) && ${OSVERSION} > 500035 EXTRA_PATCHES= ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.cpp \ - ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h \ - ${FILESDIR}/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp + ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h LIB_DEPENDS+= dbus-qt-1.1:${PORTSDIR}/devel/dbus-qt3 \ hal.1:${PORTSDIR}/sysutils/hal PLIST_SUB+= MEDIA="" diff --git a/x11/kde4-runtime/distinfo b/x11/kde4-runtime/distinfo index 9051c799c5c2..5e51bc436b6b 100644 --- a/x11/kde4-runtime/distinfo +++ b/x11/kde4-runtime/distinfo @@ -1,3 +1,3 @@ -MD5 (KDE/kdebase-3.5.6.tar.bz2) = a53f589f58012e655a52220a6a151019 -SHA256 (KDE/kdebase-3.5.6.tar.bz2) = 245b35f8b2e1533f9ae92b3b07bee5339a716dfb8db363d0126d2e7409b7bd7e -SIZE (KDE/kdebase-3.5.6.tar.bz2) = 24155599 +MD5 (KDE/kdebase-3.5.7.tar.bz2) = b421e01b3ee712549ee967f58ed24de0 +SHA256 (KDE/kdebase-3.5.7.tar.bz2) = 3c6d739abefc55b6cb64e1cf37b79f5993b666a5b40492471754794416b5c28d +SIZE (KDE/kdebase-3.5.7.tar.bz2) = 24395088 diff --git a/x11/kde4-runtime/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp b/x11/kde4-runtime/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp index 0da5609fb97a..61403676bbcb 100644 --- a/x11/kde4-runtime/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp +++ b/x11/kde4-runtime/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp @@ -1,5 +1,5 @@ ---- kioslave/media/mediamanager/halbackend.cpp.orig Mon Jan 15 14:31:32 2007 -+++ kioslave/media/mediamanager/halbackend.cpp Sun Apr 8 02:18:14 2007 +--- kioslave/media/mediamanager/halbackend.cpp.orig Mon May 14 09:55:40 2007 ++++ kioslave/media/mediamanager/halbackend.cpp Sat Jun 2 11:40:22 2007 @@ -17,9 +17,15 @@ */ @@ -39,7 +39,7 @@ return true; } -@@ -251,11 +265,11 @@ +@@ -245,11 +259,11 @@ } } QMap<QString,QString> options = MediaManagerUtils::splitOptions(mountoptions(udi)); @@ -53,19 +53,19 @@ } m_mediaList.addMedium(medium, allowNotification); -@@ -272,6 +286,11 @@ +@@ -264,6 +278,11 @@ + { + /* Create medium */ Medium* medium = new Medium(udi, ""); - setFloppyProperties(medium); - m_mediaList.addMedium(medium, allowNotification); +#ifdef Q_OS_FREEBSD + m_pollTimer.stop(); + m_pollMediaList.append(medium); + m_pollTimer.start(250); +#endif - return; - } - -@@ -293,12 +312,23 @@ + // if the storage has a volume, we ignore it + if ( setFloppyProperties(medium) ) + m_mediaList.addMedium(medium, allowNotification); +@@ -290,12 +309,23 @@ void HALBackend::RemoveDevice(const char *udi) { @@ -90,7 +90,7 @@ const char* mediumUdi = findMediumUdiFromUdi(udi); if (!mediumUdi) return; -@@ -334,7 +364,7 @@ +@@ -331,7 +361,7 @@ } const char* mediumUdi = findMediumUdiFromUdi(udi); @@ -99,7 +99,7 @@ if (!mediumUdi) return; -@@ -392,7 +422,7 @@ +@@ -389,7 +419,7 @@ { Medium m( *cmedium ); if ( setFstabProperties( &m ) ) { @@ -108,7 +108,7 @@ m_mediaList.changeMediumState(m, false); } return; -@@ -407,6 +437,7 @@ +@@ -404,6 +434,7 @@ setFloppyProperties(m); if (libhal_device_query_capability(m_halContext, mediumUdi, "camera", NULL)) setCameraProperties(m); @@ -116,7 +116,7 @@ m_mediaList.changeMediumState(*m, false); -@@ -479,28 +510,23 @@ +@@ -476,28 +507,23 @@ else mimeType = "media/dvd" + MOUNT_SUFFIX; @@ -156,7 +156,7 @@ } else { -@@ -584,7 +610,7 @@ +@@ -581,7 +607,7 @@ } } @@ -165,7 +165,40 @@ QString fstype = medium->fsType(); if ( fstype.isNull() ) fstype = "auto"; -@@ -794,7 +820,7 @@ +@@ -766,7 +792,32 @@ + if (medium && !isInFstab(medium).isNull()) + return QStringList(); // not handled by HAL - fstab entry + ++ const char *boolOptionNames[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; ++ const char *stringOptionNames[] = { "shortname", "journaling", "mountpoint", "automount", ++#ifdef Q_OS_FREEBSD ++ "filemask", "dirmask", "charset", "locale", "doscodepage", ++#endif ++ 0 }; ++ + KConfig config("mediamanagerrc"); ++ config.setGroup("General"); ++ QMap<QString,QString> options; ++ for (int index = 0; boolOptionNames[index]; ++index) ++ if (config.hasKey(boolOptionNames[index])) ++ options.insert(boolOptionNames[index], ++ config.readBoolEntry(boolOptionNames[index]) ? "true" : "false"); ++ for (int index = 0; stringOptionNames[index]; ++index) ++ if (config.hasKey(stringOptionNames[index])) ++ options.insert(stringOptionNames[index], ++ config.readEntry(stringOptionNames[index])); ++ if (!libhal_device_exists(m_halContext, name.latin1(), NULL)) ++ { ++ QStringList result; ++ if (name.lower() == "general") ++ for (QMap<QString,QString>::ConstIterator it = options.begin(); it != options.end(); ++it) ++ result << it.key() + '=' + it.data(); ++ return result; ++ } + config.setGroup(name); + + char ** array = libhal_device_get_property_strlist(m_halContext, name.latin1(), "volume.mount.valid_options", NULL); +@@ -777,25 +828,68 @@ if (t.endsWith("=")) t = t.left(t.length() - 1); valids[t] = true; @@ -174,20 +207,309 @@ } libhal_free_string_array(array); QStringList result; -@@ -915,12 +941,20 @@ - result << "journaling=ordered"; + QString tmp; + ++ QMap<QString,QString> halOptions; ++ LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, name.latin1()); ++ if (!halVolume) ++ { ++ LibHalDrive *halDrive = libhal_drive_from_udi(m_halContext, name.latin1()); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_drive_policy_get_mount_options(halDrive, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ } ++ else ++ { ++ const char *driveUdi = libhal_volume_get_storage_device_udi(halVolume); ++ LibHalDrive *halDrive = !driveUdi ? 0 : libhal_drive_from_udi(m_halContext, driveUdi); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_volume_policy_get_mount_options(halDrive, halVolume, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ libhal_volume_free(halVolume); ++ } ++ if (!tmp.isEmpty()) ++ { ++ uint start = 0; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ QString opt = tmp.mid( start, end - start ); ++ start = end + 1; ++ end = opt.find('='); ++ QString key = opt.left(end); ++ if (valids.contains(key)) ++ halOptions.insert(key, end == -1 ? QString::null : opt.mid(end + 1)); ++ } ++ } ++ + QString fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.fstype"); + if (fstype.isNull()) + fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.mount_filesystem"); + + QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); + ++ bool value = false; + bool removable = false; + if ( !drive_udi.isNull() ) ++ { ++ value = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.automount_enabled_hint", NULL); + removable = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.removable", NULL) +- || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ } + + config.setGroup(drive_udi); +- bool value = config.readBoolEntry("automount", false); ++ value = config.readBoolEntry("automount", ++ !options.contains("automount") ? value : options["automount"] == "true" ); + config.setGroup(name); + + if (libhal_device_get_property_bool(m_halContext, name.latin1(), "volume.disc.is_blank", NULL) +@@ -809,44 +903,98 @@ + + if (valids.contains("ro")) + { +- value = config.readBoolEntry("ro", false); ++ value = options.contains("ro") ? options["ro"] == "true" ++ : halOptions.contains("ro"); ++ value = config.readBoolEntry("ro", value); + tmp = QString("ro=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("ro"); + } + + if (valids.contains("quiet")) + { +- value = config.readBoolEntry("quiet", false); ++ value = options.contains("quiet") ? options["quiet"] == "true" ++ : halOptions.contains("quiet"); ++ value = config.readBoolEntry("quiet", value); + tmp = QString("quiet=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("quiet"); + } + + if (valids.contains("flush")) + { +- value = config.readBoolEntry("flush", fstype.endsWith("fat")); ++ value = options.contains("flush") ? options["flush"] == "true" ++ : (halOptions.contains("flush") || fstype.endsWith("fat")); ++ value = config.readBoolEntry("flush", value); + tmp = QString("flush=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("flush"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("-u")) ++#else + if (valids.contains("uid")) ++#endif + { +- value = config.readBoolEntry("uid", true); ++ value = !options.contains("uid") ? true : options["uid"] == "true"; ++ value = config.readBoolEntry("uid", value); + tmp = QString("uid=%1").arg(value ? "true" : "false"); + result << tmp; ++#ifdef Q_OS_FREEBSD ++ halOptions.remove("-u"); ++#else ++ halOptions.remove("uid"); ++#endif + } + + if (valids.contains("utf8")) + { +- value = config.readBoolEntry("utf8", true); ++ value = !options.contains("iocharset") && !halOptions.contains("iocharset") ++ && (options.contains("utf8") ? options["utf8"] == "true" ++ : halOptions.contains("utf8")); ++ value = config.readBoolEntry("utf8", value); + tmp = QString("utf8=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("utf8"); + } + ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("nowin95") ++ && valids.contains("longnames") ++ && valids.contains("shortnames")) ++ { ++ QString svalue = "winnt"; ++ if (halOptions.contains("longnames") && !halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "winnt"; ++ else if (!halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "win95"; ++ else if (halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "mixed"; ++ else if (halOptions.contains("nowin95")) ++ svalue = "lower"; ++ svalue = config.readEntry("shortname", ++ options.contains("shortname") ? options["shortname"] : svalue); ++ if (svalue == "winnt") ++ result << "shortname=winnt"; ++ else if (svalue == "win95") ++ result << "shortname=win95"; ++ else if (svalue == "mixed") ++ result << "shortname=mixed"; ++ else ++ result << "shortname=lower"; ++ halOptions.remove("nowin95"); ++ halOptions.remove("longnames"); ++ halOptions.remove("shortnames"); ++ } ++#else + if (valids.contains("shortname")) + { +- QString svalue = config.readEntry("shortname", "lower").lower(); ++ QString svalue = options.contains("shortname") ? options["shortname"] ++ : (halOptions.contains("shortname") ? halOptions["shortname"] : "winnt"); ++ svalue = config.readEntry("shortname", svalue).lower(); + if (svalue == "winnt") + result << "shortname=winnt"; + else if (svalue == "win95") +@@ -856,28 +1004,36 @@ + else + result << "shortname=lower"; + } +- ++#endif + if (valids.contains("sync")) + { +- value = config.readBoolEntry("sync", ( valids.contains("flush") && !fstype.endsWith("fat") ) && removable); ++ value = options.contains("sync") ? options["sync"] == "true" ++ : (halOptions.contains("sync") || ((valids.contains("flush") && !fstype.endsWith("fat")) && removable)); ++ value = config.readBoolEntry("sync", value); + tmp = QString("sync=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("sync"); + } + + if (valids.contains("noatime")) + { + value = config.readBoolEntry("atime", !fstype.endsWith("fat")); ++ value = options.contains("atime") ? options["atime"] == "true" ++ : (halOptions.contains("noatime") ? false : !fstype.endsWith("fat")); ++ value = config.readBoolEntry("atime", value); + tmp = QString("atime=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("noatime"); + } + + QString mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.mount_point"); + if (mount_point.isEmpty()) + mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.desired_mount_point"); + +- mount_point = config.readEntry("mountpoint", mount_point); ++ mount_point = config.readEntry("mountpoint", ++ options.contains("mountpoint") ? options["mountpoint"] : mount_point); + + if (!mount_point.startsWith("/")) + mount_point = "/media/" + mount_point; +@@ -887,7 +1043,9 @@ + + if (valids.contains("data")) + { +- QString svalue = config.readEntry("journaling").lower(); ++ QString svalue = options.contains("journaling") ? options["journaling"] ++ : (halOptions.contains("data") ? halOptions["data"] : "ordered"); ++ svalue = config.readEntry("journaling", svalue).lower(); + if (svalue == "ordered") + result << "journaling=ordered"; + else if (svalue == "writeback") +@@ -896,6 +1054,82 @@ + result << "journaling=data"; + else + result << "journaling=ordered"; ++ halOptions.remove("data"); ++ } ++ ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("-m")) ++ { ++ QString svalue = options.contains("filemask") ? options["filemask"] ++ : (halOptions.contains("-m") ? halOptions["-m"] : QString::null); ++ svalue = config.readEntry("filemask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("filemask=%1").arg(svalue); ++ halOptions.remove("-m"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-M")) ++ { ++ QString svalue = options.contains("dirmask") ? options["dirmask"] ++ : (halOptions.contains("-M") ? halOptions["-M"] : QString::null); ++ svalue = config.readEntry("dirmask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("dirmask=%1").arg(svalue); ++ halOptions.remove("-M"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ + if (valids.contains("-C")) + { -+ result << QString("charset=%1").arg(nl_langinfo(CODESET)); ++ QString svalue = options.contains("charset") ? options["charset"] ++ : (halOptions.contains("-C") ? halOptions["-C"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("charset", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("charset=%1").arg(svalue); ++ halOptions.remove("-C"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-L")) ++ { ++ QString locale = getenv("LANG"); ++ if (locale.isEmpty()) locale = getenv("LC_ALL"); ++ QString svalue = options.contains("locale") ? options["locale"] ++ : (halOptions.contains("-L") ? halOptions["-L"] : locale ); ++ svalue = config.readEntry("locale", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("locale=%1").arg(svalue); ++ halOptions.remove("-L"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-D")) ++ { ++ QString svalue = options.contains("doscodepage") ? options["doscodepage"] ++ : (halOptions.contains("-D") ? halOptions["-D"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("doscodepage", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("doscodepage=%1").arg(svalue); ++ halOptions.remove("-D"); + kdDebug(1219) << "mount properties " << result << " " << endl; + } +#endif + ++ if (!halOptions.isEmpty()) ++ { ++ QString svalue; ++ for (QMap<QString,QString>::ConstIterator it = halOptions.begin(); it != halOptions.end(); ++it) ++ { ++ if (it != halOptions.begin()) ++ svalue += ','; ++ svalue += it.key(); ++ if (!it.data().isEmpty()) ++ svalue += '=' + it.data(); ++ } ++ if (!svalue.isEmpty()) ++ result << QString("options=%1").arg(svalue); ++ kdDebug(1219) << "mount properties " << result << " " << endl; + } + return result; - } +@@ -903,32 +1137,82 @@ bool HALBackend::setMountoptions(const QString &name, const QStringList &options ) { @@ -195,8 +517,94 @@ + kdDebug(1219) << "setMountoptions " << name << " " << options << endl; KConfig config("mediamanagerrc"); - config.setGroup(name); -@@ -960,7 +994,7 @@ +- config.setGroup(name); ++ config.setGroup(name.lower() == "general" ? "General" : name); + + QMap<QString,QString> valids = MediaManagerUtils::splitOptions(options); + + const char *names[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; + for (int index = 0; names[index]; ++index) + if (valids.contains(names[index])) +- config.writeEntry(names[index], valids[names[index]] == "true"); ++ if (valids[names[index]].isEmpty()) ++ config.deleteEntry(names[index]); ++ else ++ config.writeEntry(names[index], valids[names[index]] == "true"); + + if (valids.contains("shortname")) +- config.writeEntry("shortname", valids["shortname"]); ++ if (valids["shortname"].isEmpty()) ++ config.deleteEntry("shortname"); ++ else ++ config.writeEntry("shortname", valids["shortname"]); + + if (valids.contains("journaling")) +- config.writeEntry("journaling", valids["journaling"]); ++ if (valids["journaling"].isEmpty()) ++ config.deleteEntry("journaling"); ++ else ++ config.writeEntry("journaling", valids["journaling"]); + +- if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) +- config.writeEntry("mountpoint", valids["mountpoint"]); ++ if (valids.contains("mountpoint")) ++ if (valids["mountpoint"].isEmpty()) ++ config.deleteEntry("mountpoint"); ++ else if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) ++ config.writeEntry("mountpoint", valids["mountpoint"]); ++ ++ if (valids.contains("automount")) ++ if (valids["automount"].isEmpty()) ++ config.deleteEntry("automount"); ++ else ++ { ++ QString drive_udi = libhal_device_exists(m_halContext, name.latin1(), NULL) ++ ? libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device") ++ : (name.lower() == "general" ? "General" : name); ++ config.setGroup(drive_udi); ++ config.writeEntry("automount", valids["automount"]); ++ } + +- if (valids.contains("automount")) { +- QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); +- config.setGroup(drive_udi); +- config.writeEntry("automount", valids["automount"]); +- } ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ if (valids["filemask"].isEmpty()) ++ config.deleteEntry("filemask"); ++ else ++ config.writeEntry("filemask", valids["filemask"]); ++ ++ if (valids.contains("dirmask")) ++ if (valids["dirmask"].isEmpty()) ++ config.deleteEntry("dirmask"); ++ else ++ config.writeEntry("dirmask", valids["dirmask"]); ++ ++ if (valids.contains("charset")) ++ if (valids["charset"].isEmpty()) ++ config.deleteEntry("charset"); ++ else ++ config.writeEntry("charset", valids["charset"]); ++ ++ if (valids.contains("locale")) ++ if (valids["locale"].isEmpty()) ++ config.deleteEntry("locale"); ++ else ++ config.writeEntry("locale", valids["locale"]); ++ ++ if (valids.contains("doscodepage")) ++ if (valids["doscodepage"].isEmpty()) ++ config.deleteEntry("doscodepage"); ++ else ++ config.writeEntry("doscodepage", valids["doscodepage"]); ++#endif + + return true; + } +@@ -943,7 +1227,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Mount"))) { @@ -205,7 +613,7 @@ return i18n("Internal Error"); } -@@ -968,7 +1002,7 @@ +@@ -951,7 +1235,7 @@ DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &poptions, noptions, DBUS_TYPE_INVALID)) { @@ -214,7 +622,7 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -996,7 +1030,7 @@ +@@ -979,7 +1263,7 @@ return qerror; } @@ -223,7 +631,7 @@ dbus_message_unref (dmesg); dbus_message_unref (reply); -@@ -1008,8 +1042,13 @@ +@@ -991,8 +1275,13 @@ QString HALBackend::listUsingProcesses(const Medium* medium) { QString proclist, fullmsg; @@ -238,7 +646,7 @@ uint counter = 0; if (fuser) { -@@ -1044,7 +1083,7 @@ +@@ -1027,7 +1316,7 @@ void HALBackend::slotResult(KIO::Job *job) { @@ -247,7 +655,7 @@ struct mount_job_data *data = mount_jobs[job]; QString& qerror = data->errorMessage; -@@ -1071,7 +1110,6 @@ +@@ -1054,7 +1343,6 @@ qerror = job->errorText(); } @@ -255,7 +663,7 @@ mount_jobs.remove(job); /* Job completed. Notify the caller */ -@@ -1080,6 +1118,25 @@ +@@ -1063,6 +1351,25 @@ kapp->eventLoop()->exitLoop(); } @@ -281,7 +689,7 @@ QString HALBackend::isInFstab(const Medium *medium) { KMountPoint::List fstab = KMountPoint::possibleMountPoints(KMountPoint::NeedMountOptions|KMountPoint::NeedRealDeviceName); -@@ -1092,11 +1149,13 @@ +@@ -1075,11 +1382,13 @@ QString reald = (*it)->realDeviceName(); if ( reald.endsWith( "/" ) ) reald = reald.left( reald.length() - 1 ); @@ -296,7 +704,7 @@ return (*it)->mountPoint(); } } -@@ -1116,7 +1175,7 @@ +@@ -1099,7 +1408,7 @@ data.completed = false; data.medium = medium; @@ -305,7 +713,7 @@ KIO::Job *job = KIO::mount( false, 0, medium->deviceNode(), mountPoint ); connect(job, SIGNAL( result (KIO::Job *)), SLOT( slotResult( KIO::Job *))); -@@ -1134,7 +1193,7 @@ +@@ -1117,7 +1426,7 @@ QStringList soptions; @@ -314,7 +722,16 @@ QMap<QString,QString> valids = MediaManagerUtils::splitOptions(mountoptions(medium->id())); if (valids["flush"] == "true") -@@ -1147,10 +1206,10 @@ +@@ -1125,15 +1434,19 @@ + + if (valids["uid"] == "true") + { ++#ifdef Q_OS_FREEBSD ++ soptions << QString("-u=%1").arg(getuid()); ++#else + soptions << QString("uid=%1").arg(getuid()); ++#endif + } if (valids["ro"] == "true") soptions << "ro"; @@ -327,21 +744,69 @@ if (valids["quiet"] == "true") soptions << "quiet"; -@@ -1180,6 +1239,13 @@ +@@ -1149,7 +1462,19 @@ + + if (valids.contains("shortname")) + { ++#ifdef Q_OS_FREEBSD ++ QString option = valids["shortname"]; ++ if (option == "win95") ++ soptions << QString("shortnames"); ++ else if (option == "mixed") ++ soptions << QString("shortnames") << QString("longnames"); ++ else if (option == "lower") ++ soptions << QString("nowin95"); ++ else ++ soptions << QString("longnames"); ++#else + soptions << QString("shortname=%1").arg(valids["shortname"]); ++#endif + } + + if (valids.contains("journaling")) +@@ -1163,6 +1488,41 @@ soptions << QString("data=ordered"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ { ++ soptions << QString("-m=%1").arg(valids["filemask"]); ++ } ++ if (valids.contains("dirmask")) ++ { ++ soptions << QString("-M=%1").arg(valids["dirmask"]); ++ } + if (valids.contains("charset")) + { + soptions << QString("-C=%1").arg(valids["charset"]); + } ++ if (valids.contains("locale")) ++ { ++ soptions << QString("-L=%1").arg(valids["locale"]); ++ } ++ if (valids.contains("doscodepage")) ++ { ++ soptions << QString("-D=%1").arg(valids["doscodepage"]); ++ } +#endif ++ if (valids.contains("options")) ++ { ++ uint start = 0; ++ QString tmp = valids["options"]; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ soptions << tmp.mid( start, end - start ); ++ start = end + 1; ++ } ++ } + const char **options = new const char*[soptions.size() + 1]; uint noptions = 0; for (QStringList::ConstIterator it = soptions.begin(); it != soptions.end(); ++it, ++noptions) -@@ -1192,9 +1258,6 @@ +@@ -1175,9 +1535,6 @@ return qerror; } @@ -351,7 +816,7 @@ return QString(); } -@@ -1255,7 +1318,7 @@ +@@ -1238,7 +1595,7 @@ const char *options[2]; const char *udi = medium->id().latin1(); @@ -360,7 +825,7 @@ dbus_error_init(&error); DBusConnection *dbus_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); -@@ -1268,7 +1331,7 @@ +@@ -1251,7 +1608,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Unmount"))) { @@ -369,7 +834,7 @@ return i18n("Internal Error"); } -@@ -1278,7 +1341,7 @@ +@@ -1261,7 +1618,7 @@ if (!dbus_message_append_args (dmesg, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &options, 0, DBUS_TYPE_INVALID)) { @@ -378,16 +843,16 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -1288,7 +1351,7 @@ +@@ -1271,7 +1628,7 @@ { QString qerror, reason; - kdDebug() << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; + kdDebug(1219) << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; qerror = "<qt>"; - qerror += i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " + qerror += "<p>" + i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " "currently mounted at <b>%4</b> could not be unmounted. ").arg( -@@ -1318,13 +1381,10 @@ +@@ -1301,13 +1658,10 @@ return qerror; } diff --git a/x11/kde4-runtime/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp b/x11/kde4-runtime/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp deleted file mode 100644 index 7d0fbfa81767..000000000000 --- a/x11/kde4-runtime/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp +++ /dev/null @@ -1,49 +0,0 @@ ---- kioslave/media/mounthelper/kio_media_mounthelper.cpp.orig Mon Jan 15 12:31:31 2007 -+++ kioslave/media/mounthelper/kio_media_mounthelper.cpp Wed Feb 21 15:17:23 2007 -@@ -89,7 +89,9 @@ - m_isCdrom = medium.mimeType().find("dvd")!=-1 - || medium.mimeType().find("cd")!=-1; - -- if (args->isSet("u")) -+ bool do_eject = args->isSet("s") || args->isSet("e"); -+ -+ if (args->isSet("u") || do_eject) - { - DCOPRef mediamanager("kded", "mediamanager"); - DCOPReply reply = mediamanager.call( "unmount", medium.id()); -@@ -97,30 +99,14 @@ - reply.get(m_errorStr); - kdDebug() << "medium unmount " << m_errorStr << endl; - if (m_errorStr.isNull()) -+ { -+ if( do_eject ) -+ invokeEject(device, true); -+ else - ::exit(0); -+ } - else - error(); -- } -- else if (args->isSet("s") || args->isSet("e")) -- { -- /* -- * We want to call mediamanager unmount before invoking eject. That's -- * because unmount would provide an informative error message in case of -- * failure. However, there are cases when unmount would fail -- * (supermount, slackware, see bug#116209) but eject would succeed. -- * Thus if unmount fails, save unmount error message and invokeEject() -- * anyway. Only if both unmount and eject fail, notify the user by -- * displaying the saved error message (see ejectFinished()). -- */ -- if (medium.isMounted()) -- { -- DCOPRef mediamanager("kded", "mediamanager"); -- DCOPReply reply = mediamanager.call( "unmount", medium.id()); -- if (reply.isValid()) -- reply.get(m_errorStr); -- m_device = device; -- } -- invokeEject(device, true); - } - else - { diff --git a/x11/kde4-runtime/files/patch-kdm-config.def b/x11/kde4-runtime/files/patch-kdm-config.def index 5d1b849cc1d7..1bd357d0cd72 100644 --- a/x11/kde4-runtime/files/patch-kdm-config.def +++ b/x11/kde4-runtime/files/patch-kdm-config.def @@ -1,10 +1,12 @@ ---- kdm/config.def.orig Wed Jun 14 17:51:42 2006 -+++ kdm/config.def Wed Jun 14 17:51:57 2006 -@@ -36,7 +36,7 @@ +--- kdm/config.def.orig Mon Oct 10 17:04:31 2005 ++++ kdm/config.def Fri May 25 12:08:24 2007 +@@ -35,8 +35,8 @@ + #ifdef _AIX # define HALT_CMD "/usr/sbin/shutdown -h now" # define REBOOT_CMD "/usr/sbin/shutdown -r now" - #elif defined(BSD) +-#elif defined(BSD) -# define HALT_CMD "/sbin/shutdown -h now" ++#elif defined(__FreeBSD__) +# define HALT_CMD "/sbin/shutdown -p now" # define REBOOT_CMD "/sbin/shutdown -r now" #elif defined(__SVR4) diff --git a/x11/kde4-runtime/files/patch-plugin-keyboard-handler.diff b/x11/kde4-runtime/files/patch-plugin-keyboard-handler.diff deleted file mode 100644 index 8d301d6d4e69..000000000000 --- a/x11/kde4-runtime/files/patch-plugin-keyboard-handler.diff +++ /dev/null @@ -1,77 +0,0 @@ ------------------------------------------------------------------------- -r652585 | lunakl | 2007-04-11 16:26:32 +0200 (Wed, 11 Apr 2007) | 3 lines -Changed paths: - M /branches/KDE/3.5/kdebase/nsplugins/viewer/qxteventloop.cpp - -Fix keyboard events handling. - - ------------------------------------------------------------------------- -Index: nsplugins/viewer/qxteventloop.cpp -=================================================================== ---- nsplugins/viewer/qxteventloop.cpp (revision 652584) -+++ nsplugins/viewer/qxteventloop.cpp (revision 652585) -@@ -32,12 +32,16 @@ - ** not clear to you. - ** - **********************************************************************/ -+ -+#include <config.h> -+ - #include "qxteventloop.h" - - #if QT_VERSION >= 0x030100 - - #include <qapplication.h> - #include <qwidgetintdict.h> -+#include <kglobal.h> - - // resolve the conflict between X11's FocusIn and QEvent::FocusIn - const int XFocusOut = FocusOut; -@@ -52,6 +56,8 @@ const int XKeyRelease = KeyRelease; - - Boolean qmotif_event_dispatcher( XEvent *event ); - -+static void handle_xquerykeymap( Display* dpy, XEvent* event ); -+ - class QXtEventLoopPrivate - { - public: -@@ -147,6 +153,7 @@ void QXtEventLoopPrivate::unhook() - extern bool qt_try_modal( QWidget *, XEvent * ); // defined in qapplication_x11.cpp - Boolean qmotif_event_dispatcher( XEvent *event ) - { -+ handle_xquerykeymap( qt_xdisplay(), event ); - QApplication::sendPostedEvents(); - - QWidgetIntDict *mapper = &static_d->mapper; -@@ -462,6 +469,29 @@ bool QXtEventLoop::processEvents( Proces - return ( (flags & WaitForMore) || ( pendingmask != 0 ) || nevents > 0 ); - } - -+#include <dlfcn.h> -+ -+static char xquerykeymap_data[ 32 ]; -+static int (*real_xquerykeymap)( Display*, char[32] ) = NULL; -+ -+static void handle_xquerykeymap( Display* dpy, XEvent* event ) -+{ -+ if( real_xquerykeymap == NULL ) -+ real_xquerykeymap = (int (*)( Display*, char[32] )) dlsym( RTLD_NEXT, "XQueryKeymap" ); -+ if( event->type == XFocusIn || event->type == XKeyPress || event->type == XKeyRelease ) -+ real_xquerykeymap( dpy, xquerykeymap_data ); -+ if( event->type == XFocusOut ) -+ memset( xquerykeymap_data, 0, 32 ); -+} -+ -+extern "C" KDE_EXPORT -+int XQueryKeymap( Display* , char k[32] ) -+{ -+ memcpy( k, xquerykeymap_data, 32 ); -+ return 1; -+} -+ -+ - #include "qxteventloop.moc" - - #endif diff --git a/x11/kde4-runtime/files/pkg-message.in b/x11/kde4-runtime/files/pkg-message.in index 1cacd3158de2..34663a8e2907 100644 --- a/x11/kde4-runtime/files/pkg-message.in +++ b/x11/kde4-runtime/files/pkg-message.in @@ -7,7 +7,7 @@ $ xset fp+ %%PREFIX%%/share/apps/konsole/fonts $ xset fp rehash or by adding it to your X-server configuration file (usually -/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and +/etc/X11/xorg.conf or %%X11BASE%%/lib/X11/xorg.conf) and restarting the X-server. You also have to make the new path known to fontconfig by diff --git a/x11/kde4-runtime/pkg-plist b/x11/kde4-runtime/pkg-plist index bd60a8fa6ce8..a33e2e7cedc9 100644 --- a/x11/kde4-runtime/pkg-plist +++ b/x11/kde4-runtime/pkg-plist @@ -2018,7 +2018,7 @@ share/apps/kthememanager/themes/YellowOnBlue-big/YellowOnBlue-big.xml share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.preview.png share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.xml share/apps/kwin/b2.desktop -share/apps/kwin/default_rules/fsp_workarounds_1 +share/apps/kwin/default_rules/fsp_workarounds_1.kwinrules share/apps/kwin/eventsrc share/apps/kwin/keramik.desktop share/apps/kwin/laptop.desktop @@ -3797,6 +3797,8 @@ share/locale/l10n/mc/entry.desktop share/locale/l10n/mc/flag.png share/locale/l10n/md/entry.desktop share/locale/l10n/md/flag.png +share/locale/l10n/me/entry.desktop +share/locale/l10n/me/flag.png share/locale/l10n/mg/entry.desktop share/locale/l10n/mg/flag.png share/locale/l10n/mh/entry.desktop @@ -3894,6 +3896,8 @@ share/locale/l10n/qa/entry.desktop share/locale/l10n/qa/flag.png share/locale/l10n/ro/entry.desktop share/locale/l10n/ro/flag.png +share/locale/l10n/rs/entry.desktop +share/locale/l10n/rs/flag.png share/locale/l10n/ru/entry.desktop share/locale/l10n/ru/flag.png share/locale/l10n/rw/entry.desktop @@ -3999,8 +4003,6 @@ share/locale/l10n/ws/entry.desktop share/locale/l10n/ws/flag.png share/locale/l10n/ye/entry.desktop share/locale/l10n/ye/flag.png -share/locale/l10n/yu/entry.desktop -share/locale/l10n/yu/flag.png share/locale/l10n/za/entry.desktop share/locale/l10n/za/flag.png share/locale/l10n/zm/entry.desktop @@ -4469,7 +4471,6 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/zw @dirrm share/locale/l10n/zm @dirrm share/locale/l10n/za -@dirrm share/locale/l10n/yu @dirrm share/locale/l10n/ye @dirrm share/locale/l10n/ws @dirrm share/locale/l10n/wf @@ -4519,6 +4520,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/sa @dirrm share/locale/l10n/rw @dirrm share/locale/l10n/ru +@dirrm share/locale/l10n/rs @dirrm share/locale/l10n/ro @dirrm share/locale/l10n/qa @dirrm share/locale/l10n/py @@ -4565,6 +4567,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/mk @dirrm share/locale/l10n/mh @dirrm share/locale/l10n/mg +@dirrm share/locale/l10n/me @dirrm share/locale/l10n/md @dirrm share/locale/l10n/mc @dirrm share/locale/l10n/ma diff --git a/x11/kde4-workspace/Makefile b/x11/kde4-workspace/Makefile index 245e12912f34..4747e8238169 100644 --- a/x11/kde4-workspace/Makefile +++ b/x11/kde4-workspace/Makefile @@ -8,7 +8,7 @@ PORTNAME= kdebase PORTVERSION= ${KDE_VERSION} -PORTREVISION= 3 +PORTREVISION= 0 CATEGORIES= x11 kde MASTER_SITES= ${MASTER_SITE_KDE} MASTER_SITE_SUBDIR= stable/${PORTVERSION:S/.0//}/src @@ -18,8 +18,7 @@ MAINTAINER= kde@FreeBSD.org COMMENT= Basic applications for the KDE system RUN_DEPENDS= ${KDE_PREFIX}/env/xdg-env.sh:${PORTSDIR}/misc/kde-xdg-env -BUILD_DEPENDS= mkfontdir:${X_CLIENTS_PORT} \ - xmkmf:${X_IMAKE_PORT} +BUILD_DEPENDS= xmkmf:${X_IMAKE_PORT} LIB_DEPENDS= sasl2:${PORTSDIR}/security/cyrus-sasl2 \ smbclient:${PORTSDIR}/net/samba-libsmbclient \ usb-0.1:${PORTSDIR}/devel/libusb @@ -58,7 +57,11 @@ OPTIONS= ARTSWRAPPER "Suid wrapper for aRts, req'd for realtime prio" on \ .include "${.CURDIR}/../../x11/kde3/Makefile.kde" .include <bsd.port.pre.mk> -.if ${X_WINDOW_SYSTEM:L} == xorg +.if ${X_WINDOW_SYSTEM:L} != xorg +BUILD_DEPENDS+= mkfontdir:${X_CLIENTS_PORT} +.else +BUILD_DEPENDS+= bdftopcf:${PORTSDIR}/x11-fonts/bdftopcf \ + mkfontdir:${PORTSDIR}/x11-fonts/mkfontdir RUN_DEPENDS+= kompmgr:${PORTSDIR}/x11-wm/kompmgr .endif @@ -72,8 +75,7 @@ RUN_DEPENDS+= htdig:${PORTSDIR}/textproc/htdig .if !defined(WITHOUT_HAL) && ${OSVERSION} > 500035 EXTRA_PATCHES= ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.cpp \ - ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h \ - ${FILESDIR}/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp + ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h LIB_DEPENDS+= dbus-qt-1.1:${PORTSDIR}/devel/dbus-qt3 \ hal.1:${PORTSDIR}/sysutils/hal PLIST_SUB+= MEDIA="" diff --git a/x11/kde4-workspace/distinfo b/x11/kde4-workspace/distinfo index 9051c799c5c2..5e51bc436b6b 100644 --- a/x11/kde4-workspace/distinfo +++ b/x11/kde4-workspace/distinfo @@ -1,3 +1,3 @@ -MD5 (KDE/kdebase-3.5.6.tar.bz2) = a53f589f58012e655a52220a6a151019 -SHA256 (KDE/kdebase-3.5.6.tar.bz2) = 245b35f8b2e1533f9ae92b3b07bee5339a716dfb8db363d0126d2e7409b7bd7e -SIZE (KDE/kdebase-3.5.6.tar.bz2) = 24155599 +MD5 (KDE/kdebase-3.5.7.tar.bz2) = b421e01b3ee712549ee967f58ed24de0 +SHA256 (KDE/kdebase-3.5.7.tar.bz2) = 3c6d739abefc55b6cb64e1cf37b79f5993b666a5b40492471754794416b5c28d +SIZE (KDE/kdebase-3.5.7.tar.bz2) = 24395088 diff --git a/x11/kde4-workspace/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp b/x11/kde4-workspace/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp index 0da5609fb97a..61403676bbcb 100644 --- a/x11/kde4-workspace/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp +++ b/x11/kde4-workspace/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp @@ -1,5 +1,5 @@ ---- kioslave/media/mediamanager/halbackend.cpp.orig Mon Jan 15 14:31:32 2007 -+++ kioslave/media/mediamanager/halbackend.cpp Sun Apr 8 02:18:14 2007 +--- kioslave/media/mediamanager/halbackend.cpp.orig Mon May 14 09:55:40 2007 ++++ kioslave/media/mediamanager/halbackend.cpp Sat Jun 2 11:40:22 2007 @@ -17,9 +17,15 @@ */ @@ -39,7 +39,7 @@ return true; } -@@ -251,11 +265,11 @@ +@@ -245,11 +259,11 @@ } } QMap<QString,QString> options = MediaManagerUtils::splitOptions(mountoptions(udi)); @@ -53,19 +53,19 @@ } m_mediaList.addMedium(medium, allowNotification); -@@ -272,6 +286,11 @@ +@@ -264,6 +278,11 @@ + { + /* Create medium */ Medium* medium = new Medium(udi, ""); - setFloppyProperties(medium); - m_mediaList.addMedium(medium, allowNotification); +#ifdef Q_OS_FREEBSD + m_pollTimer.stop(); + m_pollMediaList.append(medium); + m_pollTimer.start(250); +#endif - return; - } - -@@ -293,12 +312,23 @@ + // if the storage has a volume, we ignore it + if ( setFloppyProperties(medium) ) + m_mediaList.addMedium(medium, allowNotification); +@@ -290,12 +309,23 @@ void HALBackend::RemoveDevice(const char *udi) { @@ -90,7 +90,7 @@ const char* mediumUdi = findMediumUdiFromUdi(udi); if (!mediumUdi) return; -@@ -334,7 +364,7 @@ +@@ -331,7 +361,7 @@ } const char* mediumUdi = findMediumUdiFromUdi(udi); @@ -99,7 +99,7 @@ if (!mediumUdi) return; -@@ -392,7 +422,7 @@ +@@ -389,7 +419,7 @@ { Medium m( *cmedium ); if ( setFstabProperties( &m ) ) { @@ -108,7 +108,7 @@ m_mediaList.changeMediumState(m, false); } return; -@@ -407,6 +437,7 @@ +@@ -404,6 +434,7 @@ setFloppyProperties(m); if (libhal_device_query_capability(m_halContext, mediumUdi, "camera", NULL)) setCameraProperties(m); @@ -116,7 +116,7 @@ m_mediaList.changeMediumState(*m, false); -@@ -479,28 +510,23 @@ +@@ -476,28 +507,23 @@ else mimeType = "media/dvd" + MOUNT_SUFFIX; @@ -156,7 +156,7 @@ } else { -@@ -584,7 +610,7 @@ +@@ -581,7 +607,7 @@ } } @@ -165,7 +165,40 @@ QString fstype = medium->fsType(); if ( fstype.isNull() ) fstype = "auto"; -@@ -794,7 +820,7 @@ +@@ -766,7 +792,32 @@ + if (medium && !isInFstab(medium).isNull()) + return QStringList(); // not handled by HAL - fstab entry + ++ const char *boolOptionNames[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; ++ const char *stringOptionNames[] = { "shortname", "journaling", "mountpoint", "automount", ++#ifdef Q_OS_FREEBSD ++ "filemask", "dirmask", "charset", "locale", "doscodepage", ++#endif ++ 0 }; ++ + KConfig config("mediamanagerrc"); ++ config.setGroup("General"); ++ QMap<QString,QString> options; ++ for (int index = 0; boolOptionNames[index]; ++index) ++ if (config.hasKey(boolOptionNames[index])) ++ options.insert(boolOptionNames[index], ++ config.readBoolEntry(boolOptionNames[index]) ? "true" : "false"); ++ for (int index = 0; stringOptionNames[index]; ++index) ++ if (config.hasKey(stringOptionNames[index])) ++ options.insert(stringOptionNames[index], ++ config.readEntry(stringOptionNames[index])); ++ if (!libhal_device_exists(m_halContext, name.latin1(), NULL)) ++ { ++ QStringList result; ++ if (name.lower() == "general") ++ for (QMap<QString,QString>::ConstIterator it = options.begin(); it != options.end(); ++it) ++ result << it.key() + '=' + it.data(); ++ return result; ++ } + config.setGroup(name); + + char ** array = libhal_device_get_property_strlist(m_halContext, name.latin1(), "volume.mount.valid_options", NULL); +@@ -777,25 +828,68 @@ if (t.endsWith("=")) t = t.left(t.length() - 1); valids[t] = true; @@ -174,20 +207,309 @@ } libhal_free_string_array(array); QStringList result; -@@ -915,12 +941,20 @@ - result << "journaling=ordered"; + QString tmp; + ++ QMap<QString,QString> halOptions; ++ LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, name.latin1()); ++ if (!halVolume) ++ { ++ LibHalDrive *halDrive = libhal_drive_from_udi(m_halContext, name.latin1()); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_drive_policy_get_mount_options(halDrive, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ } ++ else ++ { ++ const char *driveUdi = libhal_volume_get_storage_device_udi(halVolume); ++ LibHalDrive *halDrive = !driveUdi ? 0 : libhal_drive_from_udi(m_halContext, driveUdi); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_volume_policy_get_mount_options(halDrive, halVolume, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ libhal_volume_free(halVolume); ++ } ++ if (!tmp.isEmpty()) ++ { ++ uint start = 0; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ QString opt = tmp.mid( start, end - start ); ++ start = end + 1; ++ end = opt.find('='); ++ QString key = opt.left(end); ++ if (valids.contains(key)) ++ halOptions.insert(key, end == -1 ? QString::null : opt.mid(end + 1)); ++ } ++ } ++ + QString fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.fstype"); + if (fstype.isNull()) + fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.mount_filesystem"); + + QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); + ++ bool value = false; + bool removable = false; + if ( !drive_udi.isNull() ) ++ { ++ value = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.automount_enabled_hint", NULL); + removable = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.removable", NULL) +- || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ } + + config.setGroup(drive_udi); +- bool value = config.readBoolEntry("automount", false); ++ value = config.readBoolEntry("automount", ++ !options.contains("automount") ? value : options["automount"] == "true" ); + config.setGroup(name); + + if (libhal_device_get_property_bool(m_halContext, name.latin1(), "volume.disc.is_blank", NULL) +@@ -809,44 +903,98 @@ + + if (valids.contains("ro")) + { +- value = config.readBoolEntry("ro", false); ++ value = options.contains("ro") ? options["ro"] == "true" ++ : halOptions.contains("ro"); ++ value = config.readBoolEntry("ro", value); + tmp = QString("ro=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("ro"); + } + + if (valids.contains("quiet")) + { +- value = config.readBoolEntry("quiet", false); ++ value = options.contains("quiet") ? options["quiet"] == "true" ++ : halOptions.contains("quiet"); ++ value = config.readBoolEntry("quiet", value); + tmp = QString("quiet=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("quiet"); + } + + if (valids.contains("flush")) + { +- value = config.readBoolEntry("flush", fstype.endsWith("fat")); ++ value = options.contains("flush") ? options["flush"] == "true" ++ : (halOptions.contains("flush") || fstype.endsWith("fat")); ++ value = config.readBoolEntry("flush", value); + tmp = QString("flush=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("flush"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("-u")) ++#else + if (valids.contains("uid")) ++#endif + { +- value = config.readBoolEntry("uid", true); ++ value = !options.contains("uid") ? true : options["uid"] == "true"; ++ value = config.readBoolEntry("uid", value); + tmp = QString("uid=%1").arg(value ? "true" : "false"); + result << tmp; ++#ifdef Q_OS_FREEBSD ++ halOptions.remove("-u"); ++#else ++ halOptions.remove("uid"); ++#endif + } + + if (valids.contains("utf8")) + { +- value = config.readBoolEntry("utf8", true); ++ value = !options.contains("iocharset") && !halOptions.contains("iocharset") ++ && (options.contains("utf8") ? options["utf8"] == "true" ++ : halOptions.contains("utf8")); ++ value = config.readBoolEntry("utf8", value); + tmp = QString("utf8=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("utf8"); + } + ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("nowin95") ++ && valids.contains("longnames") ++ && valids.contains("shortnames")) ++ { ++ QString svalue = "winnt"; ++ if (halOptions.contains("longnames") && !halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "winnt"; ++ else if (!halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "win95"; ++ else if (halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "mixed"; ++ else if (halOptions.contains("nowin95")) ++ svalue = "lower"; ++ svalue = config.readEntry("shortname", ++ options.contains("shortname") ? options["shortname"] : svalue); ++ if (svalue == "winnt") ++ result << "shortname=winnt"; ++ else if (svalue == "win95") ++ result << "shortname=win95"; ++ else if (svalue == "mixed") ++ result << "shortname=mixed"; ++ else ++ result << "shortname=lower"; ++ halOptions.remove("nowin95"); ++ halOptions.remove("longnames"); ++ halOptions.remove("shortnames"); ++ } ++#else + if (valids.contains("shortname")) + { +- QString svalue = config.readEntry("shortname", "lower").lower(); ++ QString svalue = options.contains("shortname") ? options["shortname"] ++ : (halOptions.contains("shortname") ? halOptions["shortname"] : "winnt"); ++ svalue = config.readEntry("shortname", svalue).lower(); + if (svalue == "winnt") + result << "shortname=winnt"; + else if (svalue == "win95") +@@ -856,28 +1004,36 @@ + else + result << "shortname=lower"; + } +- ++#endif + if (valids.contains("sync")) + { +- value = config.readBoolEntry("sync", ( valids.contains("flush") && !fstype.endsWith("fat") ) && removable); ++ value = options.contains("sync") ? options["sync"] == "true" ++ : (halOptions.contains("sync") || ((valids.contains("flush") && !fstype.endsWith("fat")) && removable)); ++ value = config.readBoolEntry("sync", value); + tmp = QString("sync=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("sync"); + } + + if (valids.contains("noatime")) + { + value = config.readBoolEntry("atime", !fstype.endsWith("fat")); ++ value = options.contains("atime") ? options["atime"] == "true" ++ : (halOptions.contains("noatime") ? false : !fstype.endsWith("fat")); ++ value = config.readBoolEntry("atime", value); + tmp = QString("atime=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("noatime"); + } + + QString mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.mount_point"); + if (mount_point.isEmpty()) + mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.desired_mount_point"); + +- mount_point = config.readEntry("mountpoint", mount_point); ++ mount_point = config.readEntry("mountpoint", ++ options.contains("mountpoint") ? options["mountpoint"] : mount_point); + + if (!mount_point.startsWith("/")) + mount_point = "/media/" + mount_point; +@@ -887,7 +1043,9 @@ + + if (valids.contains("data")) + { +- QString svalue = config.readEntry("journaling").lower(); ++ QString svalue = options.contains("journaling") ? options["journaling"] ++ : (halOptions.contains("data") ? halOptions["data"] : "ordered"); ++ svalue = config.readEntry("journaling", svalue).lower(); + if (svalue == "ordered") + result << "journaling=ordered"; + else if (svalue == "writeback") +@@ -896,6 +1054,82 @@ + result << "journaling=data"; + else + result << "journaling=ordered"; ++ halOptions.remove("data"); ++ } ++ ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("-m")) ++ { ++ QString svalue = options.contains("filemask") ? options["filemask"] ++ : (halOptions.contains("-m") ? halOptions["-m"] : QString::null); ++ svalue = config.readEntry("filemask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("filemask=%1").arg(svalue); ++ halOptions.remove("-m"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-M")) ++ { ++ QString svalue = options.contains("dirmask") ? options["dirmask"] ++ : (halOptions.contains("-M") ? halOptions["-M"] : QString::null); ++ svalue = config.readEntry("dirmask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("dirmask=%1").arg(svalue); ++ halOptions.remove("-M"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ + if (valids.contains("-C")) + { -+ result << QString("charset=%1").arg(nl_langinfo(CODESET)); ++ QString svalue = options.contains("charset") ? options["charset"] ++ : (halOptions.contains("-C") ? halOptions["-C"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("charset", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("charset=%1").arg(svalue); ++ halOptions.remove("-C"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-L")) ++ { ++ QString locale = getenv("LANG"); ++ if (locale.isEmpty()) locale = getenv("LC_ALL"); ++ QString svalue = options.contains("locale") ? options["locale"] ++ : (halOptions.contains("-L") ? halOptions["-L"] : locale ); ++ svalue = config.readEntry("locale", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("locale=%1").arg(svalue); ++ halOptions.remove("-L"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-D")) ++ { ++ QString svalue = options.contains("doscodepage") ? options["doscodepage"] ++ : (halOptions.contains("-D") ? halOptions["-D"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("doscodepage", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("doscodepage=%1").arg(svalue); ++ halOptions.remove("-D"); + kdDebug(1219) << "mount properties " << result << " " << endl; + } +#endif + ++ if (!halOptions.isEmpty()) ++ { ++ QString svalue; ++ for (QMap<QString,QString>::ConstIterator it = halOptions.begin(); it != halOptions.end(); ++it) ++ { ++ if (it != halOptions.begin()) ++ svalue += ','; ++ svalue += it.key(); ++ if (!it.data().isEmpty()) ++ svalue += '=' + it.data(); ++ } ++ if (!svalue.isEmpty()) ++ result << QString("options=%1").arg(svalue); ++ kdDebug(1219) << "mount properties " << result << " " << endl; + } + return result; - } +@@ -903,32 +1137,82 @@ bool HALBackend::setMountoptions(const QString &name, const QStringList &options ) { @@ -195,8 +517,94 @@ + kdDebug(1219) << "setMountoptions " << name << " " << options << endl; KConfig config("mediamanagerrc"); - config.setGroup(name); -@@ -960,7 +994,7 @@ +- config.setGroup(name); ++ config.setGroup(name.lower() == "general" ? "General" : name); + + QMap<QString,QString> valids = MediaManagerUtils::splitOptions(options); + + const char *names[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; + for (int index = 0; names[index]; ++index) + if (valids.contains(names[index])) +- config.writeEntry(names[index], valids[names[index]] == "true"); ++ if (valids[names[index]].isEmpty()) ++ config.deleteEntry(names[index]); ++ else ++ config.writeEntry(names[index], valids[names[index]] == "true"); + + if (valids.contains("shortname")) +- config.writeEntry("shortname", valids["shortname"]); ++ if (valids["shortname"].isEmpty()) ++ config.deleteEntry("shortname"); ++ else ++ config.writeEntry("shortname", valids["shortname"]); + + if (valids.contains("journaling")) +- config.writeEntry("journaling", valids["journaling"]); ++ if (valids["journaling"].isEmpty()) ++ config.deleteEntry("journaling"); ++ else ++ config.writeEntry("journaling", valids["journaling"]); + +- if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) +- config.writeEntry("mountpoint", valids["mountpoint"]); ++ if (valids.contains("mountpoint")) ++ if (valids["mountpoint"].isEmpty()) ++ config.deleteEntry("mountpoint"); ++ else if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) ++ config.writeEntry("mountpoint", valids["mountpoint"]); ++ ++ if (valids.contains("automount")) ++ if (valids["automount"].isEmpty()) ++ config.deleteEntry("automount"); ++ else ++ { ++ QString drive_udi = libhal_device_exists(m_halContext, name.latin1(), NULL) ++ ? libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device") ++ : (name.lower() == "general" ? "General" : name); ++ config.setGroup(drive_udi); ++ config.writeEntry("automount", valids["automount"]); ++ } + +- if (valids.contains("automount")) { +- QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); +- config.setGroup(drive_udi); +- config.writeEntry("automount", valids["automount"]); +- } ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ if (valids["filemask"].isEmpty()) ++ config.deleteEntry("filemask"); ++ else ++ config.writeEntry("filemask", valids["filemask"]); ++ ++ if (valids.contains("dirmask")) ++ if (valids["dirmask"].isEmpty()) ++ config.deleteEntry("dirmask"); ++ else ++ config.writeEntry("dirmask", valids["dirmask"]); ++ ++ if (valids.contains("charset")) ++ if (valids["charset"].isEmpty()) ++ config.deleteEntry("charset"); ++ else ++ config.writeEntry("charset", valids["charset"]); ++ ++ if (valids.contains("locale")) ++ if (valids["locale"].isEmpty()) ++ config.deleteEntry("locale"); ++ else ++ config.writeEntry("locale", valids["locale"]); ++ ++ if (valids.contains("doscodepage")) ++ if (valids["doscodepage"].isEmpty()) ++ config.deleteEntry("doscodepage"); ++ else ++ config.writeEntry("doscodepage", valids["doscodepage"]); ++#endif + + return true; + } +@@ -943,7 +1227,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Mount"))) { @@ -205,7 +613,7 @@ return i18n("Internal Error"); } -@@ -968,7 +1002,7 @@ +@@ -951,7 +1235,7 @@ DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &poptions, noptions, DBUS_TYPE_INVALID)) { @@ -214,7 +622,7 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -996,7 +1030,7 @@ +@@ -979,7 +1263,7 @@ return qerror; } @@ -223,7 +631,7 @@ dbus_message_unref (dmesg); dbus_message_unref (reply); -@@ -1008,8 +1042,13 @@ +@@ -991,8 +1275,13 @@ QString HALBackend::listUsingProcesses(const Medium* medium) { QString proclist, fullmsg; @@ -238,7 +646,7 @@ uint counter = 0; if (fuser) { -@@ -1044,7 +1083,7 @@ +@@ -1027,7 +1316,7 @@ void HALBackend::slotResult(KIO::Job *job) { @@ -247,7 +655,7 @@ struct mount_job_data *data = mount_jobs[job]; QString& qerror = data->errorMessage; -@@ -1071,7 +1110,6 @@ +@@ -1054,7 +1343,6 @@ qerror = job->errorText(); } @@ -255,7 +663,7 @@ mount_jobs.remove(job); /* Job completed. Notify the caller */ -@@ -1080,6 +1118,25 @@ +@@ -1063,6 +1351,25 @@ kapp->eventLoop()->exitLoop(); } @@ -281,7 +689,7 @@ QString HALBackend::isInFstab(const Medium *medium) { KMountPoint::List fstab = KMountPoint::possibleMountPoints(KMountPoint::NeedMountOptions|KMountPoint::NeedRealDeviceName); -@@ -1092,11 +1149,13 @@ +@@ -1075,11 +1382,13 @@ QString reald = (*it)->realDeviceName(); if ( reald.endsWith( "/" ) ) reald = reald.left( reald.length() - 1 ); @@ -296,7 +704,7 @@ return (*it)->mountPoint(); } } -@@ -1116,7 +1175,7 @@ +@@ -1099,7 +1408,7 @@ data.completed = false; data.medium = medium; @@ -305,7 +713,7 @@ KIO::Job *job = KIO::mount( false, 0, medium->deviceNode(), mountPoint ); connect(job, SIGNAL( result (KIO::Job *)), SLOT( slotResult( KIO::Job *))); -@@ -1134,7 +1193,7 @@ +@@ -1117,7 +1426,7 @@ QStringList soptions; @@ -314,7 +722,16 @@ QMap<QString,QString> valids = MediaManagerUtils::splitOptions(mountoptions(medium->id())); if (valids["flush"] == "true") -@@ -1147,10 +1206,10 @@ +@@ -1125,15 +1434,19 @@ + + if (valids["uid"] == "true") + { ++#ifdef Q_OS_FREEBSD ++ soptions << QString("-u=%1").arg(getuid()); ++#else + soptions << QString("uid=%1").arg(getuid()); ++#endif + } if (valids["ro"] == "true") soptions << "ro"; @@ -327,21 +744,69 @@ if (valids["quiet"] == "true") soptions << "quiet"; -@@ -1180,6 +1239,13 @@ +@@ -1149,7 +1462,19 @@ + + if (valids.contains("shortname")) + { ++#ifdef Q_OS_FREEBSD ++ QString option = valids["shortname"]; ++ if (option == "win95") ++ soptions << QString("shortnames"); ++ else if (option == "mixed") ++ soptions << QString("shortnames") << QString("longnames"); ++ else if (option == "lower") ++ soptions << QString("nowin95"); ++ else ++ soptions << QString("longnames"); ++#else + soptions << QString("shortname=%1").arg(valids["shortname"]); ++#endif + } + + if (valids.contains("journaling")) +@@ -1163,6 +1488,41 @@ soptions << QString("data=ordered"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ { ++ soptions << QString("-m=%1").arg(valids["filemask"]); ++ } ++ if (valids.contains("dirmask")) ++ { ++ soptions << QString("-M=%1").arg(valids["dirmask"]); ++ } + if (valids.contains("charset")) + { + soptions << QString("-C=%1").arg(valids["charset"]); + } ++ if (valids.contains("locale")) ++ { ++ soptions << QString("-L=%1").arg(valids["locale"]); ++ } ++ if (valids.contains("doscodepage")) ++ { ++ soptions << QString("-D=%1").arg(valids["doscodepage"]); ++ } +#endif ++ if (valids.contains("options")) ++ { ++ uint start = 0; ++ QString tmp = valids["options"]; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ soptions << tmp.mid( start, end - start ); ++ start = end + 1; ++ } ++ } + const char **options = new const char*[soptions.size() + 1]; uint noptions = 0; for (QStringList::ConstIterator it = soptions.begin(); it != soptions.end(); ++it, ++noptions) -@@ -1192,9 +1258,6 @@ +@@ -1175,9 +1535,6 @@ return qerror; } @@ -351,7 +816,7 @@ return QString(); } -@@ -1255,7 +1318,7 @@ +@@ -1238,7 +1595,7 @@ const char *options[2]; const char *udi = medium->id().latin1(); @@ -360,7 +825,7 @@ dbus_error_init(&error); DBusConnection *dbus_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); -@@ -1268,7 +1331,7 @@ +@@ -1251,7 +1608,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Unmount"))) { @@ -369,7 +834,7 @@ return i18n("Internal Error"); } -@@ -1278,7 +1341,7 @@ +@@ -1261,7 +1618,7 @@ if (!dbus_message_append_args (dmesg, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &options, 0, DBUS_TYPE_INVALID)) { @@ -378,16 +843,16 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -1288,7 +1351,7 @@ +@@ -1271,7 +1628,7 @@ { QString qerror, reason; - kdDebug() << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; + kdDebug(1219) << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; qerror = "<qt>"; - qerror += i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " + qerror += "<p>" + i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " "currently mounted at <b>%4</b> could not be unmounted. ").arg( -@@ -1318,13 +1381,10 @@ +@@ -1301,13 +1658,10 @@ return qerror; } diff --git a/x11/kde4-workspace/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp b/x11/kde4-workspace/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp deleted file mode 100644 index 7d0fbfa81767..000000000000 --- a/x11/kde4-workspace/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp +++ /dev/null @@ -1,49 +0,0 @@ ---- kioslave/media/mounthelper/kio_media_mounthelper.cpp.orig Mon Jan 15 12:31:31 2007 -+++ kioslave/media/mounthelper/kio_media_mounthelper.cpp Wed Feb 21 15:17:23 2007 -@@ -89,7 +89,9 @@ - m_isCdrom = medium.mimeType().find("dvd")!=-1 - || medium.mimeType().find("cd")!=-1; - -- if (args->isSet("u")) -+ bool do_eject = args->isSet("s") || args->isSet("e"); -+ -+ if (args->isSet("u") || do_eject) - { - DCOPRef mediamanager("kded", "mediamanager"); - DCOPReply reply = mediamanager.call( "unmount", medium.id()); -@@ -97,30 +99,14 @@ - reply.get(m_errorStr); - kdDebug() << "medium unmount " << m_errorStr << endl; - if (m_errorStr.isNull()) -+ { -+ if( do_eject ) -+ invokeEject(device, true); -+ else - ::exit(0); -+ } - else - error(); -- } -- else if (args->isSet("s") || args->isSet("e")) -- { -- /* -- * We want to call mediamanager unmount before invoking eject. That's -- * because unmount would provide an informative error message in case of -- * failure. However, there are cases when unmount would fail -- * (supermount, slackware, see bug#116209) but eject would succeed. -- * Thus if unmount fails, save unmount error message and invokeEject() -- * anyway. Only if both unmount and eject fail, notify the user by -- * displaying the saved error message (see ejectFinished()). -- */ -- if (medium.isMounted()) -- { -- DCOPRef mediamanager("kded", "mediamanager"); -- DCOPReply reply = mediamanager.call( "unmount", medium.id()); -- if (reply.isValid()) -- reply.get(m_errorStr); -- m_device = device; -- } -- invokeEject(device, true); - } - else - { diff --git a/x11/kde4-workspace/files/patch-kdm-config.def b/x11/kde4-workspace/files/patch-kdm-config.def index 5d1b849cc1d7..1bd357d0cd72 100644 --- a/x11/kde4-workspace/files/patch-kdm-config.def +++ b/x11/kde4-workspace/files/patch-kdm-config.def @@ -1,10 +1,12 @@ ---- kdm/config.def.orig Wed Jun 14 17:51:42 2006 -+++ kdm/config.def Wed Jun 14 17:51:57 2006 -@@ -36,7 +36,7 @@ +--- kdm/config.def.orig Mon Oct 10 17:04:31 2005 ++++ kdm/config.def Fri May 25 12:08:24 2007 +@@ -35,8 +35,8 @@ + #ifdef _AIX # define HALT_CMD "/usr/sbin/shutdown -h now" # define REBOOT_CMD "/usr/sbin/shutdown -r now" - #elif defined(BSD) +-#elif defined(BSD) -# define HALT_CMD "/sbin/shutdown -h now" ++#elif defined(__FreeBSD__) +# define HALT_CMD "/sbin/shutdown -p now" # define REBOOT_CMD "/sbin/shutdown -r now" #elif defined(__SVR4) diff --git a/x11/kde4-workspace/files/patch-plugin-keyboard-handler.diff b/x11/kde4-workspace/files/patch-plugin-keyboard-handler.diff deleted file mode 100644 index 8d301d6d4e69..000000000000 --- a/x11/kde4-workspace/files/patch-plugin-keyboard-handler.diff +++ /dev/null @@ -1,77 +0,0 @@ ------------------------------------------------------------------------- -r652585 | lunakl | 2007-04-11 16:26:32 +0200 (Wed, 11 Apr 2007) | 3 lines -Changed paths: - M /branches/KDE/3.5/kdebase/nsplugins/viewer/qxteventloop.cpp - -Fix keyboard events handling. - - ------------------------------------------------------------------------- -Index: nsplugins/viewer/qxteventloop.cpp -=================================================================== ---- nsplugins/viewer/qxteventloop.cpp (revision 652584) -+++ nsplugins/viewer/qxteventloop.cpp (revision 652585) -@@ -32,12 +32,16 @@ - ** not clear to you. - ** - **********************************************************************/ -+ -+#include <config.h> -+ - #include "qxteventloop.h" - - #if QT_VERSION >= 0x030100 - - #include <qapplication.h> - #include <qwidgetintdict.h> -+#include <kglobal.h> - - // resolve the conflict between X11's FocusIn and QEvent::FocusIn - const int XFocusOut = FocusOut; -@@ -52,6 +56,8 @@ const int XKeyRelease = KeyRelease; - - Boolean qmotif_event_dispatcher( XEvent *event ); - -+static void handle_xquerykeymap( Display* dpy, XEvent* event ); -+ - class QXtEventLoopPrivate - { - public: -@@ -147,6 +153,7 @@ void QXtEventLoopPrivate::unhook() - extern bool qt_try_modal( QWidget *, XEvent * ); // defined in qapplication_x11.cpp - Boolean qmotif_event_dispatcher( XEvent *event ) - { -+ handle_xquerykeymap( qt_xdisplay(), event ); - QApplication::sendPostedEvents(); - - QWidgetIntDict *mapper = &static_d->mapper; -@@ -462,6 +469,29 @@ bool QXtEventLoop::processEvents( Proces - return ( (flags & WaitForMore) || ( pendingmask != 0 ) || nevents > 0 ); - } - -+#include <dlfcn.h> -+ -+static char xquerykeymap_data[ 32 ]; -+static int (*real_xquerykeymap)( Display*, char[32] ) = NULL; -+ -+static void handle_xquerykeymap( Display* dpy, XEvent* event ) -+{ -+ if( real_xquerykeymap == NULL ) -+ real_xquerykeymap = (int (*)( Display*, char[32] )) dlsym( RTLD_NEXT, "XQueryKeymap" ); -+ if( event->type == XFocusIn || event->type == XKeyPress || event->type == XKeyRelease ) -+ real_xquerykeymap( dpy, xquerykeymap_data ); -+ if( event->type == XFocusOut ) -+ memset( xquerykeymap_data, 0, 32 ); -+} -+ -+extern "C" KDE_EXPORT -+int XQueryKeymap( Display* , char k[32] ) -+{ -+ memcpy( k, xquerykeymap_data, 32 ); -+ return 1; -+} -+ -+ - #include "qxteventloop.moc" - - #endif diff --git a/x11/kde4-workspace/files/pkg-message.in b/x11/kde4-workspace/files/pkg-message.in index 1cacd3158de2..34663a8e2907 100644 --- a/x11/kde4-workspace/files/pkg-message.in +++ b/x11/kde4-workspace/files/pkg-message.in @@ -7,7 +7,7 @@ $ xset fp+ %%PREFIX%%/share/apps/konsole/fonts $ xset fp rehash or by adding it to your X-server configuration file (usually -/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and +/etc/X11/xorg.conf or %%X11BASE%%/lib/X11/xorg.conf) and restarting the X-server. You also have to make the new path known to fontconfig by diff --git a/x11/kde4-workspace/pkg-plist b/x11/kde4-workspace/pkg-plist index bd60a8fa6ce8..a33e2e7cedc9 100644 --- a/x11/kde4-workspace/pkg-plist +++ b/x11/kde4-workspace/pkg-plist @@ -2018,7 +2018,7 @@ share/apps/kthememanager/themes/YellowOnBlue-big/YellowOnBlue-big.xml share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.preview.png share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.xml share/apps/kwin/b2.desktop -share/apps/kwin/default_rules/fsp_workarounds_1 +share/apps/kwin/default_rules/fsp_workarounds_1.kwinrules share/apps/kwin/eventsrc share/apps/kwin/keramik.desktop share/apps/kwin/laptop.desktop @@ -3797,6 +3797,8 @@ share/locale/l10n/mc/entry.desktop share/locale/l10n/mc/flag.png share/locale/l10n/md/entry.desktop share/locale/l10n/md/flag.png +share/locale/l10n/me/entry.desktop +share/locale/l10n/me/flag.png share/locale/l10n/mg/entry.desktop share/locale/l10n/mg/flag.png share/locale/l10n/mh/entry.desktop @@ -3894,6 +3896,8 @@ share/locale/l10n/qa/entry.desktop share/locale/l10n/qa/flag.png share/locale/l10n/ro/entry.desktop share/locale/l10n/ro/flag.png +share/locale/l10n/rs/entry.desktop +share/locale/l10n/rs/flag.png share/locale/l10n/ru/entry.desktop share/locale/l10n/ru/flag.png share/locale/l10n/rw/entry.desktop @@ -3999,8 +4003,6 @@ share/locale/l10n/ws/entry.desktop share/locale/l10n/ws/flag.png share/locale/l10n/ye/entry.desktop share/locale/l10n/ye/flag.png -share/locale/l10n/yu/entry.desktop -share/locale/l10n/yu/flag.png share/locale/l10n/za/entry.desktop share/locale/l10n/za/flag.png share/locale/l10n/zm/entry.desktop @@ -4469,7 +4471,6 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/zw @dirrm share/locale/l10n/zm @dirrm share/locale/l10n/za -@dirrm share/locale/l10n/yu @dirrm share/locale/l10n/ye @dirrm share/locale/l10n/ws @dirrm share/locale/l10n/wf @@ -4519,6 +4520,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/sa @dirrm share/locale/l10n/rw @dirrm share/locale/l10n/ru +@dirrm share/locale/l10n/rs @dirrm share/locale/l10n/ro @dirrm share/locale/l10n/qa @dirrm share/locale/l10n/py @@ -4565,6 +4567,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/mk @dirrm share/locale/l10n/mh @dirrm share/locale/l10n/mg +@dirrm share/locale/l10n/me @dirrm share/locale/l10n/md @dirrm share/locale/l10n/mc @dirrm share/locale/l10n/ma diff --git a/x11/kde4/Makefile b/x11/kde4/Makefile index 1a414af493ea..31f547d1ba0b 100644 --- a/x11/kde4/Makefile +++ b/x11/kde4/Makefile @@ -8,7 +8,6 @@ PORTNAME?= kde PORTVERSION= ${KDE_VERSION} -PORTREVISION= 1 CATEGORIES= x11 kde MASTER_SITES= # empty DISTFILES= # none diff --git a/x11/kdebase3/Makefile b/x11/kdebase3/Makefile index 245e12912f34..4747e8238169 100644 --- a/x11/kdebase3/Makefile +++ b/x11/kdebase3/Makefile @@ -8,7 +8,7 @@ PORTNAME= kdebase PORTVERSION= ${KDE_VERSION} -PORTREVISION= 3 +PORTREVISION= 0 CATEGORIES= x11 kde MASTER_SITES= ${MASTER_SITE_KDE} MASTER_SITE_SUBDIR= stable/${PORTVERSION:S/.0//}/src @@ -18,8 +18,7 @@ MAINTAINER= kde@FreeBSD.org COMMENT= Basic applications for the KDE system RUN_DEPENDS= ${KDE_PREFIX}/env/xdg-env.sh:${PORTSDIR}/misc/kde-xdg-env -BUILD_DEPENDS= mkfontdir:${X_CLIENTS_PORT} \ - xmkmf:${X_IMAKE_PORT} +BUILD_DEPENDS= xmkmf:${X_IMAKE_PORT} LIB_DEPENDS= sasl2:${PORTSDIR}/security/cyrus-sasl2 \ smbclient:${PORTSDIR}/net/samba-libsmbclient \ usb-0.1:${PORTSDIR}/devel/libusb @@ -58,7 +57,11 @@ OPTIONS= ARTSWRAPPER "Suid wrapper for aRts, req'd for realtime prio" on \ .include "${.CURDIR}/../../x11/kde3/Makefile.kde" .include <bsd.port.pre.mk> -.if ${X_WINDOW_SYSTEM:L} == xorg +.if ${X_WINDOW_SYSTEM:L} != xorg +BUILD_DEPENDS+= mkfontdir:${X_CLIENTS_PORT} +.else +BUILD_DEPENDS+= bdftopcf:${PORTSDIR}/x11-fonts/bdftopcf \ + mkfontdir:${PORTSDIR}/x11-fonts/mkfontdir RUN_DEPENDS+= kompmgr:${PORTSDIR}/x11-wm/kompmgr .endif @@ -72,8 +75,7 @@ RUN_DEPENDS+= htdig:${PORTSDIR}/textproc/htdig .if !defined(WITHOUT_HAL) && ${OSVERSION} > 500035 EXTRA_PATCHES= ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.cpp \ - ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h \ - ${FILESDIR}/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp + ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h LIB_DEPENDS+= dbus-qt-1.1:${PORTSDIR}/devel/dbus-qt3 \ hal.1:${PORTSDIR}/sysutils/hal PLIST_SUB+= MEDIA="" diff --git a/x11/kdebase3/distinfo b/x11/kdebase3/distinfo index 9051c799c5c2..5e51bc436b6b 100644 --- a/x11/kdebase3/distinfo +++ b/x11/kdebase3/distinfo @@ -1,3 +1,3 @@ -MD5 (KDE/kdebase-3.5.6.tar.bz2) = a53f589f58012e655a52220a6a151019 -SHA256 (KDE/kdebase-3.5.6.tar.bz2) = 245b35f8b2e1533f9ae92b3b07bee5339a716dfb8db363d0126d2e7409b7bd7e -SIZE (KDE/kdebase-3.5.6.tar.bz2) = 24155599 +MD5 (KDE/kdebase-3.5.7.tar.bz2) = b421e01b3ee712549ee967f58ed24de0 +SHA256 (KDE/kdebase-3.5.7.tar.bz2) = 3c6d739abefc55b6cb64e1cf37b79f5993b666a5b40492471754794416b5c28d +SIZE (KDE/kdebase-3.5.7.tar.bz2) = 24395088 diff --git a/x11/kdebase3/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp b/x11/kdebase3/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp index 0da5609fb97a..61403676bbcb 100644 --- a/x11/kdebase3/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp +++ b/x11/kdebase3/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp @@ -1,5 +1,5 @@ ---- kioslave/media/mediamanager/halbackend.cpp.orig Mon Jan 15 14:31:32 2007 -+++ kioslave/media/mediamanager/halbackend.cpp Sun Apr 8 02:18:14 2007 +--- kioslave/media/mediamanager/halbackend.cpp.orig Mon May 14 09:55:40 2007 ++++ kioslave/media/mediamanager/halbackend.cpp Sat Jun 2 11:40:22 2007 @@ -17,9 +17,15 @@ */ @@ -39,7 +39,7 @@ return true; } -@@ -251,11 +265,11 @@ +@@ -245,11 +259,11 @@ } } QMap<QString,QString> options = MediaManagerUtils::splitOptions(mountoptions(udi)); @@ -53,19 +53,19 @@ } m_mediaList.addMedium(medium, allowNotification); -@@ -272,6 +286,11 @@ +@@ -264,6 +278,11 @@ + { + /* Create medium */ Medium* medium = new Medium(udi, ""); - setFloppyProperties(medium); - m_mediaList.addMedium(medium, allowNotification); +#ifdef Q_OS_FREEBSD + m_pollTimer.stop(); + m_pollMediaList.append(medium); + m_pollTimer.start(250); +#endif - return; - } - -@@ -293,12 +312,23 @@ + // if the storage has a volume, we ignore it + if ( setFloppyProperties(medium) ) + m_mediaList.addMedium(medium, allowNotification); +@@ -290,12 +309,23 @@ void HALBackend::RemoveDevice(const char *udi) { @@ -90,7 +90,7 @@ const char* mediumUdi = findMediumUdiFromUdi(udi); if (!mediumUdi) return; -@@ -334,7 +364,7 @@ +@@ -331,7 +361,7 @@ } const char* mediumUdi = findMediumUdiFromUdi(udi); @@ -99,7 +99,7 @@ if (!mediumUdi) return; -@@ -392,7 +422,7 @@ +@@ -389,7 +419,7 @@ { Medium m( *cmedium ); if ( setFstabProperties( &m ) ) { @@ -108,7 +108,7 @@ m_mediaList.changeMediumState(m, false); } return; -@@ -407,6 +437,7 @@ +@@ -404,6 +434,7 @@ setFloppyProperties(m); if (libhal_device_query_capability(m_halContext, mediumUdi, "camera", NULL)) setCameraProperties(m); @@ -116,7 +116,7 @@ m_mediaList.changeMediumState(*m, false); -@@ -479,28 +510,23 @@ +@@ -476,28 +507,23 @@ else mimeType = "media/dvd" + MOUNT_SUFFIX; @@ -156,7 +156,7 @@ } else { -@@ -584,7 +610,7 @@ +@@ -581,7 +607,7 @@ } } @@ -165,7 +165,40 @@ QString fstype = medium->fsType(); if ( fstype.isNull() ) fstype = "auto"; -@@ -794,7 +820,7 @@ +@@ -766,7 +792,32 @@ + if (medium && !isInFstab(medium).isNull()) + return QStringList(); // not handled by HAL - fstab entry + ++ const char *boolOptionNames[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; ++ const char *stringOptionNames[] = { "shortname", "journaling", "mountpoint", "automount", ++#ifdef Q_OS_FREEBSD ++ "filemask", "dirmask", "charset", "locale", "doscodepage", ++#endif ++ 0 }; ++ + KConfig config("mediamanagerrc"); ++ config.setGroup("General"); ++ QMap<QString,QString> options; ++ for (int index = 0; boolOptionNames[index]; ++index) ++ if (config.hasKey(boolOptionNames[index])) ++ options.insert(boolOptionNames[index], ++ config.readBoolEntry(boolOptionNames[index]) ? "true" : "false"); ++ for (int index = 0; stringOptionNames[index]; ++index) ++ if (config.hasKey(stringOptionNames[index])) ++ options.insert(stringOptionNames[index], ++ config.readEntry(stringOptionNames[index])); ++ if (!libhal_device_exists(m_halContext, name.latin1(), NULL)) ++ { ++ QStringList result; ++ if (name.lower() == "general") ++ for (QMap<QString,QString>::ConstIterator it = options.begin(); it != options.end(); ++it) ++ result << it.key() + '=' + it.data(); ++ return result; ++ } + config.setGroup(name); + + char ** array = libhal_device_get_property_strlist(m_halContext, name.latin1(), "volume.mount.valid_options", NULL); +@@ -777,25 +828,68 @@ if (t.endsWith("=")) t = t.left(t.length() - 1); valids[t] = true; @@ -174,20 +207,309 @@ } libhal_free_string_array(array); QStringList result; -@@ -915,12 +941,20 @@ - result << "journaling=ordered"; + QString tmp; + ++ QMap<QString,QString> halOptions; ++ LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, name.latin1()); ++ if (!halVolume) ++ { ++ LibHalDrive *halDrive = libhal_drive_from_udi(m_halContext, name.latin1()); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_drive_policy_get_mount_options(halDrive, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ } ++ else ++ { ++ const char *driveUdi = libhal_volume_get_storage_device_udi(halVolume); ++ LibHalDrive *halDrive = !driveUdi ? 0 : libhal_drive_from_udi(m_halContext, driveUdi); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_volume_policy_get_mount_options(halDrive, halVolume, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ libhal_volume_free(halVolume); ++ } ++ if (!tmp.isEmpty()) ++ { ++ uint start = 0; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ QString opt = tmp.mid( start, end - start ); ++ start = end + 1; ++ end = opt.find('='); ++ QString key = opt.left(end); ++ if (valids.contains(key)) ++ halOptions.insert(key, end == -1 ? QString::null : opt.mid(end + 1)); ++ } ++ } ++ + QString fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.fstype"); + if (fstype.isNull()) + fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.mount_filesystem"); + + QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); + ++ bool value = false; + bool removable = false; + if ( !drive_udi.isNull() ) ++ { ++ value = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.automount_enabled_hint", NULL); + removable = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.removable", NULL) +- || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ } + + config.setGroup(drive_udi); +- bool value = config.readBoolEntry("automount", false); ++ value = config.readBoolEntry("automount", ++ !options.contains("automount") ? value : options["automount"] == "true" ); + config.setGroup(name); + + if (libhal_device_get_property_bool(m_halContext, name.latin1(), "volume.disc.is_blank", NULL) +@@ -809,44 +903,98 @@ + + if (valids.contains("ro")) + { +- value = config.readBoolEntry("ro", false); ++ value = options.contains("ro") ? options["ro"] == "true" ++ : halOptions.contains("ro"); ++ value = config.readBoolEntry("ro", value); + tmp = QString("ro=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("ro"); + } + + if (valids.contains("quiet")) + { +- value = config.readBoolEntry("quiet", false); ++ value = options.contains("quiet") ? options["quiet"] == "true" ++ : halOptions.contains("quiet"); ++ value = config.readBoolEntry("quiet", value); + tmp = QString("quiet=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("quiet"); + } + + if (valids.contains("flush")) + { +- value = config.readBoolEntry("flush", fstype.endsWith("fat")); ++ value = options.contains("flush") ? options["flush"] == "true" ++ : (halOptions.contains("flush") || fstype.endsWith("fat")); ++ value = config.readBoolEntry("flush", value); + tmp = QString("flush=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("flush"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("-u")) ++#else + if (valids.contains("uid")) ++#endif + { +- value = config.readBoolEntry("uid", true); ++ value = !options.contains("uid") ? true : options["uid"] == "true"; ++ value = config.readBoolEntry("uid", value); + tmp = QString("uid=%1").arg(value ? "true" : "false"); + result << tmp; ++#ifdef Q_OS_FREEBSD ++ halOptions.remove("-u"); ++#else ++ halOptions.remove("uid"); ++#endif + } + + if (valids.contains("utf8")) + { +- value = config.readBoolEntry("utf8", true); ++ value = !options.contains("iocharset") && !halOptions.contains("iocharset") ++ && (options.contains("utf8") ? options["utf8"] == "true" ++ : halOptions.contains("utf8")); ++ value = config.readBoolEntry("utf8", value); + tmp = QString("utf8=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("utf8"); + } + ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("nowin95") ++ && valids.contains("longnames") ++ && valids.contains("shortnames")) ++ { ++ QString svalue = "winnt"; ++ if (halOptions.contains("longnames") && !halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "winnt"; ++ else if (!halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "win95"; ++ else if (halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "mixed"; ++ else if (halOptions.contains("nowin95")) ++ svalue = "lower"; ++ svalue = config.readEntry("shortname", ++ options.contains("shortname") ? options["shortname"] : svalue); ++ if (svalue == "winnt") ++ result << "shortname=winnt"; ++ else if (svalue == "win95") ++ result << "shortname=win95"; ++ else if (svalue == "mixed") ++ result << "shortname=mixed"; ++ else ++ result << "shortname=lower"; ++ halOptions.remove("nowin95"); ++ halOptions.remove("longnames"); ++ halOptions.remove("shortnames"); ++ } ++#else + if (valids.contains("shortname")) + { +- QString svalue = config.readEntry("shortname", "lower").lower(); ++ QString svalue = options.contains("shortname") ? options["shortname"] ++ : (halOptions.contains("shortname") ? halOptions["shortname"] : "winnt"); ++ svalue = config.readEntry("shortname", svalue).lower(); + if (svalue == "winnt") + result << "shortname=winnt"; + else if (svalue == "win95") +@@ -856,28 +1004,36 @@ + else + result << "shortname=lower"; + } +- ++#endif + if (valids.contains("sync")) + { +- value = config.readBoolEntry("sync", ( valids.contains("flush") && !fstype.endsWith("fat") ) && removable); ++ value = options.contains("sync") ? options["sync"] == "true" ++ : (halOptions.contains("sync") || ((valids.contains("flush") && !fstype.endsWith("fat")) && removable)); ++ value = config.readBoolEntry("sync", value); + tmp = QString("sync=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("sync"); + } + + if (valids.contains("noatime")) + { + value = config.readBoolEntry("atime", !fstype.endsWith("fat")); ++ value = options.contains("atime") ? options["atime"] == "true" ++ : (halOptions.contains("noatime") ? false : !fstype.endsWith("fat")); ++ value = config.readBoolEntry("atime", value); + tmp = QString("atime=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("noatime"); + } + + QString mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.mount_point"); + if (mount_point.isEmpty()) + mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.desired_mount_point"); + +- mount_point = config.readEntry("mountpoint", mount_point); ++ mount_point = config.readEntry("mountpoint", ++ options.contains("mountpoint") ? options["mountpoint"] : mount_point); + + if (!mount_point.startsWith("/")) + mount_point = "/media/" + mount_point; +@@ -887,7 +1043,9 @@ + + if (valids.contains("data")) + { +- QString svalue = config.readEntry("journaling").lower(); ++ QString svalue = options.contains("journaling") ? options["journaling"] ++ : (halOptions.contains("data") ? halOptions["data"] : "ordered"); ++ svalue = config.readEntry("journaling", svalue).lower(); + if (svalue == "ordered") + result << "journaling=ordered"; + else if (svalue == "writeback") +@@ -896,6 +1054,82 @@ + result << "journaling=data"; + else + result << "journaling=ordered"; ++ halOptions.remove("data"); ++ } ++ ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("-m")) ++ { ++ QString svalue = options.contains("filemask") ? options["filemask"] ++ : (halOptions.contains("-m") ? halOptions["-m"] : QString::null); ++ svalue = config.readEntry("filemask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("filemask=%1").arg(svalue); ++ halOptions.remove("-m"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-M")) ++ { ++ QString svalue = options.contains("dirmask") ? options["dirmask"] ++ : (halOptions.contains("-M") ? halOptions["-M"] : QString::null); ++ svalue = config.readEntry("dirmask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("dirmask=%1").arg(svalue); ++ halOptions.remove("-M"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ + if (valids.contains("-C")) + { -+ result << QString("charset=%1").arg(nl_langinfo(CODESET)); ++ QString svalue = options.contains("charset") ? options["charset"] ++ : (halOptions.contains("-C") ? halOptions["-C"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("charset", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("charset=%1").arg(svalue); ++ halOptions.remove("-C"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-L")) ++ { ++ QString locale = getenv("LANG"); ++ if (locale.isEmpty()) locale = getenv("LC_ALL"); ++ QString svalue = options.contains("locale") ? options["locale"] ++ : (halOptions.contains("-L") ? halOptions["-L"] : locale ); ++ svalue = config.readEntry("locale", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("locale=%1").arg(svalue); ++ halOptions.remove("-L"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-D")) ++ { ++ QString svalue = options.contains("doscodepage") ? options["doscodepage"] ++ : (halOptions.contains("-D") ? halOptions["-D"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("doscodepage", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("doscodepage=%1").arg(svalue); ++ halOptions.remove("-D"); + kdDebug(1219) << "mount properties " << result << " " << endl; + } +#endif + ++ if (!halOptions.isEmpty()) ++ { ++ QString svalue; ++ for (QMap<QString,QString>::ConstIterator it = halOptions.begin(); it != halOptions.end(); ++it) ++ { ++ if (it != halOptions.begin()) ++ svalue += ','; ++ svalue += it.key(); ++ if (!it.data().isEmpty()) ++ svalue += '=' + it.data(); ++ } ++ if (!svalue.isEmpty()) ++ result << QString("options=%1").arg(svalue); ++ kdDebug(1219) << "mount properties " << result << " " << endl; + } + return result; - } +@@ -903,32 +1137,82 @@ bool HALBackend::setMountoptions(const QString &name, const QStringList &options ) { @@ -195,8 +517,94 @@ + kdDebug(1219) << "setMountoptions " << name << " " << options << endl; KConfig config("mediamanagerrc"); - config.setGroup(name); -@@ -960,7 +994,7 @@ +- config.setGroup(name); ++ config.setGroup(name.lower() == "general" ? "General" : name); + + QMap<QString,QString> valids = MediaManagerUtils::splitOptions(options); + + const char *names[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; + for (int index = 0; names[index]; ++index) + if (valids.contains(names[index])) +- config.writeEntry(names[index], valids[names[index]] == "true"); ++ if (valids[names[index]].isEmpty()) ++ config.deleteEntry(names[index]); ++ else ++ config.writeEntry(names[index], valids[names[index]] == "true"); + + if (valids.contains("shortname")) +- config.writeEntry("shortname", valids["shortname"]); ++ if (valids["shortname"].isEmpty()) ++ config.deleteEntry("shortname"); ++ else ++ config.writeEntry("shortname", valids["shortname"]); + + if (valids.contains("journaling")) +- config.writeEntry("journaling", valids["journaling"]); ++ if (valids["journaling"].isEmpty()) ++ config.deleteEntry("journaling"); ++ else ++ config.writeEntry("journaling", valids["journaling"]); + +- if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) +- config.writeEntry("mountpoint", valids["mountpoint"]); ++ if (valids.contains("mountpoint")) ++ if (valids["mountpoint"].isEmpty()) ++ config.deleteEntry("mountpoint"); ++ else if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) ++ config.writeEntry("mountpoint", valids["mountpoint"]); ++ ++ if (valids.contains("automount")) ++ if (valids["automount"].isEmpty()) ++ config.deleteEntry("automount"); ++ else ++ { ++ QString drive_udi = libhal_device_exists(m_halContext, name.latin1(), NULL) ++ ? libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device") ++ : (name.lower() == "general" ? "General" : name); ++ config.setGroup(drive_udi); ++ config.writeEntry("automount", valids["automount"]); ++ } + +- if (valids.contains("automount")) { +- QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); +- config.setGroup(drive_udi); +- config.writeEntry("automount", valids["automount"]); +- } ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ if (valids["filemask"].isEmpty()) ++ config.deleteEntry("filemask"); ++ else ++ config.writeEntry("filemask", valids["filemask"]); ++ ++ if (valids.contains("dirmask")) ++ if (valids["dirmask"].isEmpty()) ++ config.deleteEntry("dirmask"); ++ else ++ config.writeEntry("dirmask", valids["dirmask"]); ++ ++ if (valids.contains("charset")) ++ if (valids["charset"].isEmpty()) ++ config.deleteEntry("charset"); ++ else ++ config.writeEntry("charset", valids["charset"]); ++ ++ if (valids.contains("locale")) ++ if (valids["locale"].isEmpty()) ++ config.deleteEntry("locale"); ++ else ++ config.writeEntry("locale", valids["locale"]); ++ ++ if (valids.contains("doscodepage")) ++ if (valids["doscodepage"].isEmpty()) ++ config.deleteEntry("doscodepage"); ++ else ++ config.writeEntry("doscodepage", valids["doscodepage"]); ++#endif + + return true; + } +@@ -943,7 +1227,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Mount"))) { @@ -205,7 +613,7 @@ return i18n("Internal Error"); } -@@ -968,7 +1002,7 @@ +@@ -951,7 +1235,7 @@ DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &poptions, noptions, DBUS_TYPE_INVALID)) { @@ -214,7 +622,7 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -996,7 +1030,7 @@ +@@ -979,7 +1263,7 @@ return qerror; } @@ -223,7 +631,7 @@ dbus_message_unref (dmesg); dbus_message_unref (reply); -@@ -1008,8 +1042,13 @@ +@@ -991,8 +1275,13 @@ QString HALBackend::listUsingProcesses(const Medium* medium) { QString proclist, fullmsg; @@ -238,7 +646,7 @@ uint counter = 0; if (fuser) { -@@ -1044,7 +1083,7 @@ +@@ -1027,7 +1316,7 @@ void HALBackend::slotResult(KIO::Job *job) { @@ -247,7 +655,7 @@ struct mount_job_data *data = mount_jobs[job]; QString& qerror = data->errorMessage; -@@ -1071,7 +1110,6 @@ +@@ -1054,7 +1343,6 @@ qerror = job->errorText(); } @@ -255,7 +663,7 @@ mount_jobs.remove(job); /* Job completed. Notify the caller */ -@@ -1080,6 +1118,25 @@ +@@ -1063,6 +1351,25 @@ kapp->eventLoop()->exitLoop(); } @@ -281,7 +689,7 @@ QString HALBackend::isInFstab(const Medium *medium) { KMountPoint::List fstab = KMountPoint::possibleMountPoints(KMountPoint::NeedMountOptions|KMountPoint::NeedRealDeviceName); -@@ -1092,11 +1149,13 @@ +@@ -1075,11 +1382,13 @@ QString reald = (*it)->realDeviceName(); if ( reald.endsWith( "/" ) ) reald = reald.left( reald.length() - 1 ); @@ -296,7 +704,7 @@ return (*it)->mountPoint(); } } -@@ -1116,7 +1175,7 @@ +@@ -1099,7 +1408,7 @@ data.completed = false; data.medium = medium; @@ -305,7 +713,7 @@ KIO::Job *job = KIO::mount( false, 0, medium->deviceNode(), mountPoint ); connect(job, SIGNAL( result (KIO::Job *)), SLOT( slotResult( KIO::Job *))); -@@ -1134,7 +1193,7 @@ +@@ -1117,7 +1426,7 @@ QStringList soptions; @@ -314,7 +722,16 @@ QMap<QString,QString> valids = MediaManagerUtils::splitOptions(mountoptions(medium->id())); if (valids["flush"] == "true") -@@ -1147,10 +1206,10 @@ +@@ -1125,15 +1434,19 @@ + + if (valids["uid"] == "true") + { ++#ifdef Q_OS_FREEBSD ++ soptions << QString("-u=%1").arg(getuid()); ++#else + soptions << QString("uid=%1").arg(getuid()); ++#endif + } if (valids["ro"] == "true") soptions << "ro"; @@ -327,21 +744,69 @@ if (valids["quiet"] == "true") soptions << "quiet"; -@@ -1180,6 +1239,13 @@ +@@ -1149,7 +1462,19 @@ + + if (valids.contains("shortname")) + { ++#ifdef Q_OS_FREEBSD ++ QString option = valids["shortname"]; ++ if (option == "win95") ++ soptions << QString("shortnames"); ++ else if (option == "mixed") ++ soptions << QString("shortnames") << QString("longnames"); ++ else if (option == "lower") ++ soptions << QString("nowin95"); ++ else ++ soptions << QString("longnames"); ++#else + soptions << QString("shortname=%1").arg(valids["shortname"]); ++#endif + } + + if (valids.contains("journaling")) +@@ -1163,6 +1488,41 @@ soptions << QString("data=ordered"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ { ++ soptions << QString("-m=%1").arg(valids["filemask"]); ++ } ++ if (valids.contains("dirmask")) ++ { ++ soptions << QString("-M=%1").arg(valids["dirmask"]); ++ } + if (valids.contains("charset")) + { + soptions << QString("-C=%1").arg(valids["charset"]); + } ++ if (valids.contains("locale")) ++ { ++ soptions << QString("-L=%1").arg(valids["locale"]); ++ } ++ if (valids.contains("doscodepage")) ++ { ++ soptions << QString("-D=%1").arg(valids["doscodepage"]); ++ } +#endif ++ if (valids.contains("options")) ++ { ++ uint start = 0; ++ QString tmp = valids["options"]; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ soptions << tmp.mid( start, end - start ); ++ start = end + 1; ++ } ++ } + const char **options = new const char*[soptions.size() + 1]; uint noptions = 0; for (QStringList::ConstIterator it = soptions.begin(); it != soptions.end(); ++it, ++noptions) -@@ -1192,9 +1258,6 @@ +@@ -1175,9 +1535,6 @@ return qerror; } @@ -351,7 +816,7 @@ return QString(); } -@@ -1255,7 +1318,7 @@ +@@ -1238,7 +1595,7 @@ const char *options[2]; const char *udi = medium->id().latin1(); @@ -360,7 +825,7 @@ dbus_error_init(&error); DBusConnection *dbus_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); -@@ -1268,7 +1331,7 @@ +@@ -1251,7 +1608,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Unmount"))) { @@ -369,7 +834,7 @@ return i18n("Internal Error"); } -@@ -1278,7 +1341,7 @@ +@@ -1261,7 +1618,7 @@ if (!dbus_message_append_args (dmesg, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &options, 0, DBUS_TYPE_INVALID)) { @@ -378,16 +843,16 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -1288,7 +1351,7 @@ +@@ -1271,7 +1628,7 @@ { QString qerror, reason; - kdDebug() << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; + kdDebug(1219) << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; qerror = "<qt>"; - qerror += i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " + qerror += "<p>" + i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " "currently mounted at <b>%4</b> could not be unmounted. ").arg( -@@ -1318,13 +1381,10 @@ +@@ -1301,13 +1658,10 @@ return qerror; } diff --git a/x11/kdebase3/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp b/x11/kdebase3/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp deleted file mode 100644 index 7d0fbfa81767..000000000000 --- a/x11/kdebase3/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp +++ /dev/null @@ -1,49 +0,0 @@ ---- kioslave/media/mounthelper/kio_media_mounthelper.cpp.orig Mon Jan 15 12:31:31 2007 -+++ kioslave/media/mounthelper/kio_media_mounthelper.cpp Wed Feb 21 15:17:23 2007 -@@ -89,7 +89,9 @@ - m_isCdrom = medium.mimeType().find("dvd")!=-1 - || medium.mimeType().find("cd")!=-1; - -- if (args->isSet("u")) -+ bool do_eject = args->isSet("s") || args->isSet("e"); -+ -+ if (args->isSet("u") || do_eject) - { - DCOPRef mediamanager("kded", "mediamanager"); - DCOPReply reply = mediamanager.call( "unmount", medium.id()); -@@ -97,30 +99,14 @@ - reply.get(m_errorStr); - kdDebug() << "medium unmount " << m_errorStr << endl; - if (m_errorStr.isNull()) -+ { -+ if( do_eject ) -+ invokeEject(device, true); -+ else - ::exit(0); -+ } - else - error(); -- } -- else if (args->isSet("s") || args->isSet("e")) -- { -- /* -- * We want to call mediamanager unmount before invoking eject. That's -- * because unmount would provide an informative error message in case of -- * failure. However, there are cases when unmount would fail -- * (supermount, slackware, see bug#116209) but eject would succeed. -- * Thus if unmount fails, save unmount error message and invokeEject() -- * anyway. Only if both unmount and eject fail, notify the user by -- * displaying the saved error message (see ejectFinished()). -- */ -- if (medium.isMounted()) -- { -- DCOPRef mediamanager("kded", "mediamanager"); -- DCOPReply reply = mediamanager.call( "unmount", medium.id()); -- if (reply.isValid()) -- reply.get(m_errorStr); -- m_device = device; -- } -- invokeEject(device, true); - } - else - { diff --git a/x11/kdebase3/files/patch-kdm-config.def b/x11/kdebase3/files/patch-kdm-config.def index 5d1b849cc1d7..1bd357d0cd72 100644 --- a/x11/kdebase3/files/patch-kdm-config.def +++ b/x11/kdebase3/files/patch-kdm-config.def @@ -1,10 +1,12 @@ ---- kdm/config.def.orig Wed Jun 14 17:51:42 2006 -+++ kdm/config.def Wed Jun 14 17:51:57 2006 -@@ -36,7 +36,7 @@ +--- kdm/config.def.orig Mon Oct 10 17:04:31 2005 ++++ kdm/config.def Fri May 25 12:08:24 2007 +@@ -35,8 +35,8 @@ + #ifdef _AIX # define HALT_CMD "/usr/sbin/shutdown -h now" # define REBOOT_CMD "/usr/sbin/shutdown -r now" - #elif defined(BSD) +-#elif defined(BSD) -# define HALT_CMD "/sbin/shutdown -h now" ++#elif defined(__FreeBSD__) +# define HALT_CMD "/sbin/shutdown -p now" # define REBOOT_CMD "/sbin/shutdown -r now" #elif defined(__SVR4) diff --git a/x11/kdebase3/files/patch-plugin-keyboard-handler.diff b/x11/kdebase3/files/patch-plugin-keyboard-handler.diff deleted file mode 100644 index 8d301d6d4e69..000000000000 --- a/x11/kdebase3/files/patch-plugin-keyboard-handler.diff +++ /dev/null @@ -1,77 +0,0 @@ ------------------------------------------------------------------------- -r652585 | lunakl | 2007-04-11 16:26:32 +0200 (Wed, 11 Apr 2007) | 3 lines -Changed paths: - M /branches/KDE/3.5/kdebase/nsplugins/viewer/qxteventloop.cpp - -Fix keyboard events handling. - - ------------------------------------------------------------------------- -Index: nsplugins/viewer/qxteventloop.cpp -=================================================================== ---- nsplugins/viewer/qxteventloop.cpp (revision 652584) -+++ nsplugins/viewer/qxteventloop.cpp (revision 652585) -@@ -32,12 +32,16 @@ - ** not clear to you. - ** - **********************************************************************/ -+ -+#include <config.h> -+ - #include "qxteventloop.h" - - #if QT_VERSION >= 0x030100 - - #include <qapplication.h> - #include <qwidgetintdict.h> -+#include <kglobal.h> - - // resolve the conflict between X11's FocusIn and QEvent::FocusIn - const int XFocusOut = FocusOut; -@@ -52,6 +56,8 @@ const int XKeyRelease = KeyRelease; - - Boolean qmotif_event_dispatcher( XEvent *event ); - -+static void handle_xquerykeymap( Display* dpy, XEvent* event ); -+ - class QXtEventLoopPrivate - { - public: -@@ -147,6 +153,7 @@ void QXtEventLoopPrivate::unhook() - extern bool qt_try_modal( QWidget *, XEvent * ); // defined in qapplication_x11.cpp - Boolean qmotif_event_dispatcher( XEvent *event ) - { -+ handle_xquerykeymap( qt_xdisplay(), event ); - QApplication::sendPostedEvents(); - - QWidgetIntDict *mapper = &static_d->mapper; -@@ -462,6 +469,29 @@ bool QXtEventLoop::processEvents( Proces - return ( (flags & WaitForMore) || ( pendingmask != 0 ) || nevents > 0 ); - } - -+#include <dlfcn.h> -+ -+static char xquerykeymap_data[ 32 ]; -+static int (*real_xquerykeymap)( Display*, char[32] ) = NULL; -+ -+static void handle_xquerykeymap( Display* dpy, XEvent* event ) -+{ -+ if( real_xquerykeymap == NULL ) -+ real_xquerykeymap = (int (*)( Display*, char[32] )) dlsym( RTLD_NEXT, "XQueryKeymap" ); -+ if( event->type == XFocusIn || event->type == XKeyPress || event->type == XKeyRelease ) -+ real_xquerykeymap( dpy, xquerykeymap_data ); -+ if( event->type == XFocusOut ) -+ memset( xquerykeymap_data, 0, 32 ); -+} -+ -+extern "C" KDE_EXPORT -+int XQueryKeymap( Display* , char k[32] ) -+{ -+ memcpy( k, xquerykeymap_data, 32 ); -+ return 1; -+} -+ -+ - #include "qxteventloop.moc" - - #endif diff --git a/x11/kdebase3/files/pkg-message.in b/x11/kdebase3/files/pkg-message.in index 1cacd3158de2..34663a8e2907 100644 --- a/x11/kdebase3/files/pkg-message.in +++ b/x11/kdebase3/files/pkg-message.in @@ -7,7 +7,7 @@ $ xset fp+ %%PREFIX%%/share/apps/konsole/fonts $ xset fp rehash or by adding it to your X-server configuration file (usually -/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and +/etc/X11/xorg.conf or %%X11BASE%%/lib/X11/xorg.conf) and restarting the X-server. You also have to make the new path known to fontconfig by diff --git a/x11/kdebase3/pkg-plist b/x11/kdebase3/pkg-plist index bd60a8fa6ce8..a33e2e7cedc9 100644 --- a/x11/kdebase3/pkg-plist +++ b/x11/kdebase3/pkg-plist @@ -2018,7 +2018,7 @@ share/apps/kthememanager/themes/YellowOnBlue-big/YellowOnBlue-big.xml share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.preview.png share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.xml share/apps/kwin/b2.desktop -share/apps/kwin/default_rules/fsp_workarounds_1 +share/apps/kwin/default_rules/fsp_workarounds_1.kwinrules share/apps/kwin/eventsrc share/apps/kwin/keramik.desktop share/apps/kwin/laptop.desktop @@ -3797,6 +3797,8 @@ share/locale/l10n/mc/entry.desktop share/locale/l10n/mc/flag.png share/locale/l10n/md/entry.desktop share/locale/l10n/md/flag.png +share/locale/l10n/me/entry.desktop +share/locale/l10n/me/flag.png share/locale/l10n/mg/entry.desktop share/locale/l10n/mg/flag.png share/locale/l10n/mh/entry.desktop @@ -3894,6 +3896,8 @@ share/locale/l10n/qa/entry.desktop share/locale/l10n/qa/flag.png share/locale/l10n/ro/entry.desktop share/locale/l10n/ro/flag.png +share/locale/l10n/rs/entry.desktop +share/locale/l10n/rs/flag.png share/locale/l10n/ru/entry.desktop share/locale/l10n/ru/flag.png share/locale/l10n/rw/entry.desktop @@ -3999,8 +4003,6 @@ share/locale/l10n/ws/entry.desktop share/locale/l10n/ws/flag.png share/locale/l10n/ye/entry.desktop share/locale/l10n/ye/flag.png -share/locale/l10n/yu/entry.desktop -share/locale/l10n/yu/flag.png share/locale/l10n/za/entry.desktop share/locale/l10n/za/flag.png share/locale/l10n/zm/entry.desktop @@ -4469,7 +4471,6 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/zw @dirrm share/locale/l10n/zm @dirrm share/locale/l10n/za -@dirrm share/locale/l10n/yu @dirrm share/locale/l10n/ye @dirrm share/locale/l10n/ws @dirrm share/locale/l10n/wf @@ -4519,6 +4520,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/sa @dirrm share/locale/l10n/rw @dirrm share/locale/l10n/ru +@dirrm share/locale/l10n/rs @dirrm share/locale/l10n/ro @dirrm share/locale/l10n/qa @dirrm share/locale/l10n/py @@ -4565,6 +4567,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/mk @dirrm share/locale/l10n/mh @dirrm share/locale/l10n/mg +@dirrm share/locale/l10n/me @dirrm share/locale/l10n/md @dirrm share/locale/l10n/mc @dirrm share/locale/l10n/ma diff --git a/x11/kdebase4-runtime/Makefile b/x11/kdebase4-runtime/Makefile index 245e12912f34..4747e8238169 100644 --- a/x11/kdebase4-runtime/Makefile +++ b/x11/kdebase4-runtime/Makefile @@ -8,7 +8,7 @@ PORTNAME= kdebase PORTVERSION= ${KDE_VERSION} -PORTREVISION= 3 +PORTREVISION= 0 CATEGORIES= x11 kde MASTER_SITES= ${MASTER_SITE_KDE} MASTER_SITE_SUBDIR= stable/${PORTVERSION:S/.0//}/src @@ -18,8 +18,7 @@ MAINTAINER= kde@FreeBSD.org COMMENT= Basic applications for the KDE system RUN_DEPENDS= ${KDE_PREFIX}/env/xdg-env.sh:${PORTSDIR}/misc/kde-xdg-env -BUILD_DEPENDS= mkfontdir:${X_CLIENTS_PORT} \ - xmkmf:${X_IMAKE_PORT} +BUILD_DEPENDS= xmkmf:${X_IMAKE_PORT} LIB_DEPENDS= sasl2:${PORTSDIR}/security/cyrus-sasl2 \ smbclient:${PORTSDIR}/net/samba-libsmbclient \ usb-0.1:${PORTSDIR}/devel/libusb @@ -58,7 +57,11 @@ OPTIONS= ARTSWRAPPER "Suid wrapper for aRts, req'd for realtime prio" on \ .include "${.CURDIR}/../../x11/kde3/Makefile.kde" .include <bsd.port.pre.mk> -.if ${X_WINDOW_SYSTEM:L} == xorg +.if ${X_WINDOW_SYSTEM:L} != xorg +BUILD_DEPENDS+= mkfontdir:${X_CLIENTS_PORT} +.else +BUILD_DEPENDS+= bdftopcf:${PORTSDIR}/x11-fonts/bdftopcf \ + mkfontdir:${PORTSDIR}/x11-fonts/mkfontdir RUN_DEPENDS+= kompmgr:${PORTSDIR}/x11-wm/kompmgr .endif @@ -72,8 +75,7 @@ RUN_DEPENDS+= htdig:${PORTSDIR}/textproc/htdig .if !defined(WITHOUT_HAL) && ${OSVERSION} > 500035 EXTRA_PATCHES= ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.cpp \ - ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h \ - ${FILESDIR}/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp + ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h LIB_DEPENDS+= dbus-qt-1.1:${PORTSDIR}/devel/dbus-qt3 \ hal.1:${PORTSDIR}/sysutils/hal PLIST_SUB+= MEDIA="" diff --git a/x11/kdebase4-runtime/distinfo b/x11/kdebase4-runtime/distinfo index 9051c799c5c2..5e51bc436b6b 100644 --- a/x11/kdebase4-runtime/distinfo +++ b/x11/kdebase4-runtime/distinfo @@ -1,3 +1,3 @@ -MD5 (KDE/kdebase-3.5.6.tar.bz2) = a53f589f58012e655a52220a6a151019 -SHA256 (KDE/kdebase-3.5.6.tar.bz2) = 245b35f8b2e1533f9ae92b3b07bee5339a716dfb8db363d0126d2e7409b7bd7e -SIZE (KDE/kdebase-3.5.6.tar.bz2) = 24155599 +MD5 (KDE/kdebase-3.5.7.tar.bz2) = b421e01b3ee712549ee967f58ed24de0 +SHA256 (KDE/kdebase-3.5.7.tar.bz2) = 3c6d739abefc55b6cb64e1cf37b79f5993b666a5b40492471754794416b5c28d +SIZE (KDE/kdebase-3.5.7.tar.bz2) = 24395088 diff --git a/x11/kdebase4-runtime/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp b/x11/kdebase4-runtime/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp index 0da5609fb97a..61403676bbcb 100644 --- a/x11/kdebase4-runtime/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp +++ b/x11/kdebase4-runtime/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp @@ -1,5 +1,5 @@ ---- kioslave/media/mediamanager/halbackend.cpp.orig Mon Jan 15 14:31:32 2007 -+++ kioslave/media/mediamanager/halbackend.cpp Sun Apr 8 02:18:14 2007 +--- kioslave/media/mediamanager/halbackend.cpp.orig Mon May 14 09:55:40 2007 ++++ kioslave/media/mediamanager/halbackend.cpp Sat Jun 2 11:40:22 2007 @@ -17,9 +17,15 @@ */ @@ -39,7 +39,7 @@ return true; } -@@ -251,11 +265,11 @@ +@@ -245,11 +259,11 @@ } } QMap<QString,QString> options = MediaManagerUtils::splitOptions(mountoptions(udi)); @@ -53,19 +53,19 @@ } m_mediaList.addMedium(medium, allowNotification); -@@ -272,6 +286,11 @@ +@@ -264,6 +278,11 @@ + { + /* Create medium */ Medium* medium = new Medium(udi, ""); - setFloppyProperties(medium); - m_mediaList.addMedium(medium, allowNotification); +#ifdef Q_OS_FREEBSD + m_pollTimer.stop(); + m_pollMediaList.append(medium); + m_pollTimer.start(250); +#endif - return; - } - -@@ -293,12 +312,23 @@ + // if the storage has a volume, we ignore it + if ( setFloppyProperties(medium) ) + m_mediaList.addMedium(medium, allowNotification); +@@ -290,12 +309,23 @@ void HALBackend::RemoveDevice(const char *udi) { @@ -90,7 +90,7 @@ const char* mediumUdi = findMediumUdiFromUdi(udi); if (!mediumUdi) return; -@@ -334,7 +364,7 @@ +@@ -331,7 +361,7 @@ } const char* mediumUdi = findMediumUdiFromUdi(udi); @@ -99,7 +99,7 @@ if (!mediumUdi) return; -@@ -392,7 +422,7 @@ +@@ -389,7 +419,7 @@ { Medium m( *cmedium ); if ( setFstabProperties( &m ) ) { @@ -108,7 +108,7 @@ m_mediaList.changeMediumState(m, false); } return; -@@ -407,6 +437,7 @@ +@@ -404,6 +434,7 @@ setFloppyProperties(m); if (libhal_device_query_capability(m_halContext, mediumUdi, "camera", NULL)) setCameraProperties(m); @@ -116,7 +116,7 @@ m_mediaList.changeMediumState(*m, false); -@@ -479,28 +510,23 @@ +@@ -476,28 +507,23 @@ else mimeType = "media/dvd" + MOUNT_SUFFIX; @@ -156,7 +156,7 @@ } else { -@@ -584,7 +610,7 @@ +@@ -581,7 +607,7 @@ } } @@ -165,7 +165,40 @@ QString fstype = medium->fsType(); if ( fstype.isNull() ) fstype = "auto"; -@@ -794,7 +820,7 @@ +@@ -766,7 +792,32 @@ + if (medium && !isInFstab(medium).isNull()) + return QStringList(); // not handled by HAL - fstab entry + ++ const char *boolOptionNames[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; ++ const char *stringOptionNames[] = { "shortname", "journaling", "mountpoint", "automount", ++#ifdef Q_OS_FREEBSD ++ "filemask", "dirmask", "charset", "locale", "doscodepage", ++#endif ++ 0 }; ++ + KConfig config("mediamanagerrc"); ++ config.setGroup("General"); ++ QMap<QString,QString> options; ++ for (int index = 0; boolOptionNames[index]; ++index) ++ if (config.hasKey(boolOptionNames[index])) ++ options.insert(boolOptionNames[index], ++ config.readBoolEntry(boolOptionNames[index]) ? "true" : "false"); ++ for (int index = 0; stringOptionNames[index]; ++index) ++ if (config.hasKey(stringOptionNames[index])) ++ options.insert(stringOptionNames[index], ++ config.readEntry(stringOptionNames[index])); ++ if (!libhal_device_exists(m_halContext, name.latin1(), NULL)) ++ { ++ QStringList result; ++ if (name.lower() == "general") ++ for (QMap<QString,QString>::ConstIterator it = options.begin(); it != options.end(); ++it) ++ result << it.key() + '=' + it.data(); ++ return result; ++ } + config.setGroup(name); + + char ** array = libhal_device_get_property_strlist(m_halContext, name.latin1(), "volume.mount.valid_options", NULL); +@@ -777,25 +828,68 @@ if (t.endsWith("=")) t = t.left(t.length() - 1); valids[t] = true; @@ -174,20 +207,309 @@ } libhal_free_string_array(array); QStringList result; -@@ -915,12 +941,20 @@ - result << "journaling=ordered"; + QString tmp; + ++ QMap<QString,QString> halOptions; ++ LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, name.latin1()); ++ if (!halVolume) ++ { ++ LibHalDrive *halDrive = libhal_drive_from_udi(m_halContext, name.latin1()); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_drive_policy_get_mount_options(halDrive, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ } ++ else ++ { ++ const char *driveUdi = libhal_volume_get_storage_device_udi(halVolume); ++ LibHalDrive *halDrive = !driveUdi ? 0 : libhal_drive_from_udi(m_halContext, driveUdi); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_volume_policy_get_mount_options(halDrive, halVolume, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ libhal_volume_free(halVolume); ++ } ++ if (!tmp.isEmpty()) ++ { ++ uint start = 0; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ QString opt = tmp.mid( start, end - start ); ++ start = end + 1; ++ end = opt.find('='); ++ QString key = opt.left(end); ++ if (valids.contains(key)) ++ halOptions.insert(key, end == -1 ? QString::null : opt.mid(end + 1)); ++ } ++ } ++ + QString fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.fstype"); + if (fstype.isNull()) + fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.mount_filesystem"); + + QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); + ++ bool value = false; + bool removable = false; + if ( !drive_udi.isNull() ) ++ { ++ value = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.automount_enabled_hint", NULL); + removable = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.removable", NULL) +- || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ } + + config.setGroup(drive_udi); +- bool value = config.readBoolEntry("automount", false); ++ value = config.readBoolEntry("automount", ++ !options.contains("automount") ? value : options["automount"] == "true" ); + config.setGroup(name); + + if (libhal_device_get_property_bool(m_halContext, name.latin1(), "volume.disc.is_blank", NULL) +@@ -809,44 +903,98 @@ + + if (valids.contains("ro")) + { +- value = config.readBoolEntry("ro", false); ++ value = options.contains("ro") ? options["ro"] == "true" ++ : halOptions.contains("ro"); ++ value = config.readBoolEntry("ro", value); + tmp = QString("ro=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("ro"); + } + + if (valids.contains("quiet")) + { +- value = config.readBoolEntry("quiet", false); ++ value = options.contains("quiet") ? options["quiet"] == "true" ++ : halOptions.contains("quiet"); ++ value = config.readBoolEntry("quiet", value); + tmp = QString("quiet=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("quiet"); + } + + if (valids.contains("flush")) + { +- value = config.readBoolEntry("flush", fstype.endsWith("fat")); ++ value = options.contains("flush") ? options["flush"] == "true" ++ : (halOptions.contains("flush") || fstype.endsWith("fat")); ++ value = config.readBoolEntry("flush", value); + tmp = QString("flush=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("flush"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("-u")) ++#else + if (valids.contains("uid")) ++#endif + { +- value = config.readBoolEntry("uid", true); ++ value = !options.contains("uid") ? true : options["uid"] == "true"; ++ value = config.readBoolEntry("uid", value); + tmp = QString("uid=%1").arg(value ? "true" : "false"); + result << tmp; ++#ifdef Q_OS_FREEBSD ++ halOptions.remove("-u"); ++#else ++ halOptions.remove("uid"); ++#endif + } + + if (valids.contains("utf8")) + { +- value = config.readBoolEntry("utf8", true); ++ value = !options.contains("iocharset") && !halOptions.contains("iocharset") ++ && (options.contains("utf8") ? options["utf8"] == "true" ++ : halOptions.contains("utf8")); ++ value = config.readBoolEntry("utf8", value); + tmp = QString("utf8=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("utf8"); + } + ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("nowin95") ++ && valids.contains("longnames") ++ && valids.contains("shortnames")) ++ { ++ QString svalue = "winnt"; ++ if (halOptions.contains("longnames") && !halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "winnt"; ++ else if (!halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "win95"; ++ else if (halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "mixed"; ++ else if (halOptions.contains("nowin95")) ++ svalue = "lower"; ++ svalue = config.readEntry("shortname", ++ options.contains("shortname") ? options["shortname"] : svalue); ++ if (svalue == "winnt") ++ result << "shortname=winnt"; ++ else if (svalue == "win95") ++ result << "shortname=win95"; ++ else if (svalue == "mixed") ++ result << "shortname=mixed"; ++ else ++ result << "shortname=lower"; ++ halOptions.remove("nowin95"); ++ halOptions.remove("longnames"); ++ halOptions.remove("shortnames"); ++ } ++#else + if (valids.contains("shortname")) + { +- QString svalue = config.readEntry("shortname", "lower").lower(); ++ QString svalue = options.contains("shortname") ? options["shortname"] ++ : (halOptions.contains("shortname") ? halOptions["shortname"] : "winnt"); ++ svalue = config.readEntry("shortname", svalue).lower(); + if (svalue == "winnt") + result << "shortname=winnt"; + else if (svalue == "win95") +@@ -856,28 +1004,36 @@ + else + result << "shortname=lower"; + } +- ++#endif + if (valids.contains("sync")) + { +- value = config.readBoolEntry("sync", ( valids.contains("flush") && !fstype.endsWith("fat") ) && removable); ++ value = options.contains("sync") ? options["sync"] == "true" ++ : (halOptions.contains("sync") || ((valids.contains("flush") && !fstype.endsWith("fat")) && removable)); ++ value = config.readBoolEntry("sync", value); + tmp = QString("sync=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("sync"); + } + + if (valids.contains("noatime")) + { + value = config.readBoolEntry("atime", !fstype.endsWith("fat")); ++ value = options.contains("atime") ? options["atime"] == "true" ++ : (halOptions.contains("noatime") ? false : !fstype.endsWith("fat")); ++ value = config.readBoolEntry("atime", value); + tmp = QString("atime=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("noatime"); + } + + QString mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.mount_point"); + if (mount_point.isEmpty()) + mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.desired_mount_point"); + +- mount_point = config.readEntry("mountpoint", mount_point); ++ mount_point = config.readEntry("mountpoint", ++ options.contains("mountpoint") ? options["mountpoint"] : mount_point); + + if (!mount_point.startsWith("/")) + mount_point = "/media/" + mount_point; +@@ -887,7 +1043,9 @@ + + if (valids.contains("data")) + { +- QString svalue = config.readEntry("journaling").lower(); ++ QString svalue = options.contains("journaling") ? options["journaling"] ++ : (halOptions.contains("data") ? halOptions["data"] : "ordered"); ++ svalue = config.readEntry("journaling", svalue).lower(); + if (svalue == "ordered") + result << "journaling=ordered"; + else if (svalue == "writeback") +@@ -896,6 +1054,82 @@ + result << "journaling=data"; + else + result << "journaling=ordered"; ++ halOptions.remove("data"); ++ } ++ ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("-m")) ++ { ++ QString svalue = options.contains("filemask") ? options["filemask"] ++ : (halOptions.contains("-m") ? halOptions["-m"] : QString::null); ++ svalue = config.readEntry("filemask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("filemask=%1").arg(svalue); ++ halOptions.remove("-m"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-M")) ++ { ++ QString svalue = options.contains("dirmask") ? options["dirmask"] ++ : (halOptions.contains("-M") ? halOptions["-M"] : QString::null); ++ svalue = config.readEntry("dirmask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("dirmask=%1").arg(svalue); ++ halOptions.remove("-M"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ + if (valids.contains("-C")) + { -+ result << QString("charset=%1").arg(nl_langinfo(CODESET)); ++ QString svalue = options.contains("charset") ? options["charset"] ++ : (halOptions.contains("-C") ? halOptions["-C"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("charset", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("charset=%1").arg(svalue); ++ halOptions.remove("-C"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-L")) ++ { ++ QString locale = getenv("LANG"); ++ if (locale.isEmpty()) locale = getenv("LC_ALL"); ++ QString svalue = options.contains("locale") ? options["locale"] ++ : (halOptions.contains("-L") ? halOptions["-L"] : locale ); ++ svalue = config.readEntry("locale", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("locale=%1").arg(svalue); ++ halOptions.remove("-L"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-D")) ++ { ++ QString svalue = options.contains("doscodepage") ? options["doscodepage"] ++ : (halOptions.contains("-D") ? halOptions["-D"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("doscodepage", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("doscodepage=%1").arg(svalue); ++ halOptions.remove("-D"); + kdDebug(1219) << "mount properties " << result << " " << endl; + } +#endif + ++ if (!halOptions.isEmpty()) ++ { ++ QString svalue; ++ for (QMap<QString,QString>::ConstIterator it = halOptions.begin(); it != halOptions.end(); ++it) ++ { ++ if (it != halOptions.begin()) ++ svalue += ','; ++ svalue += it.key(); ++ if (!it.data().isEmpty()) ++ svalue += '=' + it.data(); ++ } ++ if (!svalue.isEmpty()) ++ result << QString("options=%1").arg(svalue); ++ kdDebug(1219) << "mount properties " << result << " " << endl; + } + return result; - } +@@ -903,32 +1137,82 @@ bool HALBackend::setMountoptions(const QString &name, const QStringList &options ) { @@ -195,8 +517,94 @@ + kdDebug(1219) << "setMountoptions " << name << " " << options << endl; KConfig config("mediamanagerrc"); - config.setGroup(name); -@@ -960,7 +994,7 @@ +- config.setGroup(name); ++ config.setGroup(name.lower() == "general" ? "General" : name); + + QMap<QString,QString> valids = MediaManagerUtils::splitOptions(options); + + const char *names[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; + for (int index = 0; names[index]; ++index) + if (valids.contains(names[index])) +- config.writeEntry(names[index], valids[names[index]] == "true"); ++ if (valids[names[index]].isEmpty()) ++ config.deleteEntry(names[index]); ++ else ++ config.writeEntry(names[index], valids[names[index]] == "true"); + + if (valids.contains("shortname")) +- config.writeEntry("shortname", valids["shortname"]); ++ if (valids["shortname"].isEmpty()) ++ config.deleteEntry("shortname"); ++ else ++ config.writeEntry("shortname", valids["shortname"]); + + if (valids.contains("journaling")) +- config.writeEntry("journaling", valids["journaling"]); ++ if (valids["journaling"].isEmpty()) ++ config.deleteEntry("journaling"); ++ else ++ config.writeEntry("journaling", valids["journaling"]); + +- if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) +- config.writeEntry("mountpoint", valids["mountpoint"]); ++ if (valids.contains("mountpoint")) ++ if (valids["mountpoint"].isEmpty()) ++ config.deleteEntry("mountpoint"); ++ else if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) ++ config.writeEntry("mountpoint", valids["mountpoint"]); ++ ++ if (valids.contains("automount")) ++ if (valids["automount"].isEmpty()) ++ config.deleteEntry("automount"); ++ else ++ { ++ QString drive_udi = libhal_device_exists(m_halContext, name.latin1(), NULL) ++ ? libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device") ++ : (name.lower() == "general" ? "General" : name); ++ config.setGroup(drive_udi); ++ config.writeEntry("automount", valids["automount"]); ++ } + +- if (valids.contains("automount")) { +- QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); +- config.setGroup(drive_udi); +- config.writeEntry("automount", valids["automount"]); +- } ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ if (valids["filemask"].isEmpty()) ++ config.deleteEntry("filemask"); ++ else ++ config.writeEntry("filemask", valids["filemask"]); ++ ++ if (valids.contains("dirmask")) ++ if (valids["dirmask"].isEmpty()) ++ config.deleteEntry("dirmask"); ++ else ++ config.writeEntry("dirmask", valids["dirmask"]); ++ ++ if (valids.contains("charset")) ++ if (valids["charset"].isEmpty()) ++ config.deleteEntry("charset"); ++ else ++ config.writeEntry("charset", valids["charset"]); ++ ++ if (valids.contains("locale")) ++ if (valids["locale"].isEmpty()) ++ config.deleteEntry("locale"); ++ else ++ config.writeEntry("locale", valids["locale"]); ++ ++ if (valids.contains("doscodepage")) ++ if (valids["doscodepage"].isEmpty()) ++ config.deleteEntry("doscodepage"); ++ else ++ config.writeEntry("doscodepage", valids["doscodepage"]); ++#endif + + return true; + } +@@ -943,7 +1227,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Mount"))) { @@ -205,7 +613,7 @@ return i18n("Internal Error"); } -@@ -968,7 +1002,7 @@ +@@ -951,7 +1235,7 @@ DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &poptions, noptions, DBUS_TYPE_INVALID)) { @@ -214,7 +622,7 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -996,7 +1030,7 @@ +@@ -979,7 +1263,7 @@ return qerror; } @@ -223,7 +631,7 @@ dbus_message_unref (dmesg); dbus_message_unref (reply); -@@ -1008,8 +1042,13 @@ +@@ -991,8 +1275,13 @@ QString HALBackend::listUsingProcesses(const Medium* medium) { QString proclist, fullmsg; @@ -238,7 +646,7 @@ uint counter = 0; if (fuser) { -@@ -1044,7 +1083,7 @@ +@@ -1027,7 +1316,7 @@ void HALBackend::slotResult(KIO::Job *job) { @@ -247,7 +655,7 @@ struct mount_job_data *data = mount_jobs[job]; QString& qerror = data->errorMessage; -@@ -1071,7 +1110,6 @@ +@@ -1054,7 +1343,6 @@ qerror = job->errorText(); } @@ -255,7 +663,7 @@ mount_jobs.remove(job); /* Job completed. Notify the caller */ -@@ -1080,6 +1118,25 @@ +@@ -1063,6 +1351,25 @@ kapp->eventLoop()->exitLoop(); } @@ -281,7 +689,7 @@ QString HALBackend::isInFstab(const Medium *medium) { KMountPoint::List fstab = KMountPoint::possibleMountPoints(KMountPoint::NeedMountOptions|KMountPoint::NeedRealDeviceName); -@@ -1092,11 +1149,13 @@ +@@ -1075,11 +1382,13 @@ QString reald = (*it)->realDeviceName(); if ( reald.endsWith( "/" ) ) reald = reald.left( reald.length() - 1 ); @@ -296,7 +704,7 @@ return (*it)->mountPoint(); } } -@@ -1116,7 +1175,7 @@ +@@ -1099,7 +1408,7 @@ data.completed = false; data.medium = medium; @@ -305,7 +713,7 @@ KIO::Job *job = KIO::mount( false, 0, medium->deviceNode(), mountPoint ); connect(job, SIGNAL( result (KIO::Job *)), SLOT( slotResult( KIO::Job *))); -@@ -1134,7 +1193,7 @@ +@@ -1117,7 +1426,7 @@ QStringList soptions; @@ -314,7 +722,16 @@ QMap<QString,QString> valids = MediaManagerUtils::splitOptions(mountoptions(medium->id())); if (valids["flush"] == "true") -@@ -1147,10 +1206,10 @@ +@@ -1125,15 +1434,19 @@ + + if (valids["uid"] == "true") + { ++#ifdef Q_OS_FREEBSD ++ soptions << QString("-u=%1").arg(getuid()); ++#else + soptions << QString("uid=%1").arg(getuid()); ++#endif + } if (valids["ro"] == "true") soptions << "ro"; @@ -327,21 +744,69 @@ if (valids["quiet"] == "true") soptions << "quiet"; -@@ -1180,6 +1239,13 @@ +@@ -1149,7 +1462,19 @@ + + if (valids.contains("shortname")) + { ++#ifdef Q_OS_FREEBSD ++ QString option = valids["shortname"]; ++ if (option == "win95") ++ soptions << QString("shortnames"); ++ else if (option == "mixed") ++ soptions << QString("shortnames") << QString("longnames"); ++ else if (option == "lower") ++ soptions << QString("nowin95"); ++ else ++ soptions << QString("longnames"); ++#else + soptions << QString("shortname=%1").arg(valids["shortname"]); ++#endif + } + + if (valids.contains("journaling")) +@@ -1163,6 +1488,41 @@ soptions << QString("data=ordered"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ { ++ soptions << QString("-m=%1").arg(valids["filemask"]); ++ } ++ if (valids.contains("dirmask")) ++ { ++ soptions << QString("-M=%1").arg(valids["dirmask"]); ++ } + if (valids.contains("charset")) + { + soptions << QString("-C=%1").arg(valids["charset"]); + } ++ if (valids.contains("locale")) ++ { ++ soptions << QString("-L=%1").arg(valids["locale"]); ++ } ++ if (valids.contains("doscodepage")) ++ { ++ soptions << QString("-D=%1").arg(valids["doscodepage"]); ++ } +#endif ++ if (valids.contains("options")) ++ { ++ uint start = 0; ++ QString tmp = valids["options"]; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ soptions << tmp.mid( start, end - start ); ++ start = end + 1; ++ } ++ } + const char **options = new const char*[soptions.size() + 1]; uint noptions = 0; for (QStringList::ConstIterator it = soptions.begin(); it != soptions.end(); ++it, ++noptions) -@@ -1192,9 +1258,6 @@ +@@ -1175,9 +1535,6 @@ return qerror; } @@ -351,7 +816,7 @@ return QString(); } -@@ -1255,7 +1318,7 @@ +@@ -1238,7 +1595,7 @@ const char *options[2]; const char *udi = medium->id().latin1(); @@ -360,7 +825,7 @@ dbus_error_init(&error); DBusConnection *dbus_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); -@@ -1268,7 +1331,7 @@ +@@ -1251,7 +1608,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Unmount"))) { @@ -369,7 +834,7 @@ return i18n("Internal Error"); } -@@ -1278,7 +1341,7 @@ +@@ -1261,7 +1618,7 @@ if (!dbus_message_append_args (dmesg, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &options, 0, DBUS_TYPE_INVALID)) { @@ -378,16 +843,16 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -1288,7 +1351,7 @@ +@@ -1271,7 +1628,7 @@ { QString qerror, reason; - kdDebug() << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; + kdDebug(1219) << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; qerror = "<qt>"; - qerror += i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " + qerror += "<p>" + i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " "currently mounted at <b>%4</b> could not be unmounted. ").arg( -@@ -1318,13 +1381,10 @@ +@@ -1301,13 +1658,10 @@ return qerror; } diff --git a/x11/kdebase4-runtime/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp b/x11/kdebase4-runtime/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp deleted file mode 100644 index 7d0fbfa81767..000000000000 --- a/x11/kdebase4-runtime/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp +++ /dev/null @@ -1,49 +0,0 @@ ---- kioslave/media/mounthelper/kio_media_mounthelper.cpp.orig Mon Jan 15 12:31:31 2007 -+++ kioslave/media/mounthelper/kio_media_mounthelper.cpp Wed Feb 21 15:17:23 2007 -@@ -89,7 +89,9 @@ - m_isCdrom = medium.mimeType().find("dvd")!=-1 - || medium.mimeType().find("cd")!=-1; - -- if (args->isSet("u")) -+ bool do_eject = args->isSet("s") || args->isSet("e"); -+ -+ if (args->isSet("u") || do_eject) - { - DCOPRef mediamanager("kded", "mediamanager"); - DCOPReply reply = mediamanager.call( "unmount", medium.id()); -@@ -97,30 +99,14 @@ - reply.get(m_errorStr); - kdDebug() << "medium unmount " << m_errorStr << endl; - if (m_errorStr.isNull()) -+ { -+ if( do_eject ) -+ invokeEject(device, true); -+ else - ::exit(0); -+ } - else - error(); -- } -- else if (args->isSet("s") || args->isSet("e")) -- { -- /* -- * We want to call mediamanager unmount before invoking eject. That's -- * because unmount would provide an informative error message in case of -- * failure. However, there are cases when unmount would fail -- * (supermount, slackware, see bug#116209) but eject would succeed. -- * Thus if unmount fails, save unmount error message and invokeEject() -- * anyway. Only if both unmount and eject fail, notify the user by -- * displaying the saved error message (see ejectFinished()). -- */ -- if (medium.isMounted()) -- { -- DCOPRef mediamanager("kded", "mediamanager"); -- DCOPReply reply = mediamanager.call( "unmount", medium.id()); -- if (reply.isValid()) -- reply.get(m_errorStr); -- m_device = device; -- } -- invokeEject(device, true); - } - else - { diff --git a/x11/kdebase4-runtime/files/patch-kdm-config.def b/x11/kdebase4-runtime/files/patch-kdm-config.def index 5d1b849cc1d7..1bd357d0cd72 100644 --- a/x11/kdebase4-runtime/files/patch-kdm-config.def +++ b/x11/kdebase4-runtime/files/patch-kdm-config.def @@ -1,10 +1,12 @@ ---- kdm/config.def.orig Wed Jun 14 17:51:42 2006 -+++ kdm/config.def Wed Jun 14 17:51:57 2006 -@@ -36,7 +36,7 @@ +--- kdm/config.def.orig Mon Oct 10 17:04:31 2005 ++++ kdm/config.def Fri May 25 12:08:24 2007 +@@ -35,8 +35,8 @@ + #ifdef _AIX # define HALT_CMD "/usr/sbin/shutdown -h now" # define REBOOT_CMD "/usr/sbin/shutdown -r now" - #elif defined(BSD) +-#elif defined(BSD) -# define HALT_CMD "/sbin/shutdown -h now" ++#elif defined(__FreeBSD__) +# define HALT_CMD "/sbin/shutdown -p now" # define REBOOT_CMD "/sbin/shutdown -r now" #elif defined(__SVR4) diff --git a/x11/kdebase4-runtime/files/patch-plugin-keyboard-handler.diff b/x11/kdebase4-runtime/files/patch-plugin-keyboard-handler.diff deleted file mode 100644 index 8d301d6d4e69..000000000000 --- a/x11/kdebase4-runtime/files/patch-plugin-keyboard-handler.diff +++ /dev/null @@ -1,77 +0,0 @@ ------------------------------------------------------------------------- -r652585 | lunakl | 2007-04-11 16:26:32 +0200 (Wed, 11 Apr 2007) | 3 lines -Changed paths: - M /branches/KDE/3.5/kdebase/nsplugins/viewer/qxteventloop.cpp - -Fix keyboard events handling. - - ------------------------------------------------------------------------- -Index: nsplugins/viewer/qxteventloop.cpp -=================================================================== ---- nsplugins/viewer/qxteventloop.cpp (revision 652584) -+++ nsplugins/viewer/qxteventloop.cpp (revision 652585) -@@ -32,12 +32,16 @@ - ** not clear to you. - ** - **********************************************************************/ -+ -+#include <config.h> -+ - #include "qxteventloop.h" - - #if QT_VERSION >= 0x030100 - - #include <qapplication.h> - #include <qwidgetintdict.h> -+#include <kglobal.h> - - // resolve the conflict between X11's FocusIn and QEvent::FocusIn - const int XFocusOut = FocusOut; -@@ -52,6 +56,8 @@ const int XKeyRelease = KeyRelease; - - Boolean qmotif_event_dispatcher( XEvent *event ); - -+static void handle_xquerykeymap( Display* dpy, XEvent* event ); -+ - class QXtEventLoopPrivate - { - public: -@@ -147,6 +153,7 @@ void QXtEventLoopPrivate::unhook() - extern bool qt_try_modal( QWidget *, XEvent * ); // defined in qapplication_x11.cpp - Boolean qmotif_event_dispatcher( XEvent *event ) - { -+ handle_xquerykeymap( qt_xdisplay(), event ); - QApplication::sendPostedEvents(); - - QWidgetIntDict *mapper = &static_d->mapper; -@@ -462,6 +469,29 @@ bool QXtEventLoop::processEvents( Proces - return ( (flags & WaitForMore) || ( pendingmask != 0 ) || nevents > 0 ); - } - -+#include <dlfcn.h> -+ -+static char xquerykeymap_data[ 32 ]; -+static int (*real_xquerykeymap)( Display*, char[32] ) = NULL; -+ -+static void handle_xquerykeymap( Display* dpy, XEvent* event ) -+{ -+ if( real_xquerykeymap == NULL ) -+ real_xquerykeymap = (int (*)( Display*, char[32] )) dlsym( RTLD_NEXT, "XQueryKeymap" ); -+ if( event->type == XFocusIn || event->type == XKeyPress || event->type == XKeyRelease ) -+ real_xquerykeymap( dpy, xquerykeymap_data ); -+ if( event->type == XFocusOut ) -+ memset( xquerykeymap_data, 0, 32 ); -+} -+ -+extern "C" KDE_EXPORT -+int XQueryKeymap( Display* , char k[32] ) -+{ -+ memcpy( k, xquerykeymap_data, 32 ); -+ return 1; -+} -+ -+ - #include "qxteventloop.moc" - - #endif diff --git a/x11/kdebase4-runtime/files/pkg-message.in b/x11/kdebase4-runtime/files/pkg-message.in index 1cacd3158de2..34663a8e2907 100644 --- a/x11/kdebase4-runtime/files/pkg-message.in +++ b/x11/kdebase4-runtime/files/pkg-message.in @@ -7,7 +7,7 @@ $ xset fp+ %%PREFIX%%/share/apps/konsole/fonts $ xset fp rehash or by adding it to your X-server configuration file (usually -/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and +/etc/X11/xorg.conf or %%X11BASE%%/lib/X11/xorg.conf) and restarting the X-server. You also have to make the new path known to fontconfig by diff --git a/x11/kdebase4-runtime/pkg-plist b/x11/kdebase4-runtime/pkg-plist index bd60a8fa6ce8..a33e2e7cedc9 100644 --- a/x11/kdebase4-runtime/pkg-plist +++ b/x11/kdebase4-runtime/pkg-plist @@ -2018,7 +2018,7 @@ share/apps/kthememanager/themes/YellowOnBlue-big/YellowOnBlue-big.xml share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.preview.png share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.xml share/apps/kwin/b2.desktop -share/apps/kwin/default_rules/fsp_workarounds_1 +share/apps/kwin/default_rules/fsp_workarounds_1.kwinrules share/apps/kwin/eventsrc share/apps/kwin/keramik.desktop share/apps/kwin/laptop.desktop @@ -3797,6 +3797,8 @@ share/locale/l10n/mc/entry.desktop share/locale/l10n/mc/flag.png share/locale/l10n/md/entry.desktop share/locale/l10n/md/flag.png +share/locale/l10n/me/entry.desktop +share/locale/l10n/me/flag.png share/locale/l10n/mg/entry.desktop share/locale/l10n/mg/flag.png share/locale/l10n/mh/entry.desktop @@ -3894,6 +3896,8 @@ share/locale/l10n/qa/entry.desktop share/locale/l10n/qa/flag.png share/locale/l10n/ro/entry.desktop share/locale/l10n/ro/flag.png +share/locale/l10n/rs/entry.desktop +share/locale/l10n/rs/flag.png share/locale/l10n/ru/entry.desktop share/locale/l10n/ru/flag.png share/locale/l10n/rw/entry.desktop @@ -3999,8 +4003,6 @@ share/locale/l10n/ws/entry.desktop share/locale/l10n/ws/flag.png share/locale/l10n/ye/entry.desktop share/locale/l10n/ye/flag.png -share/locale/l10n/yu/entry.desktop -share/locale/l10n/yu/flag.png share/locale/l10n/za/entry.desktop share/locale/l10n/za/flag.png share/locale/l10n/zm/entry.desktop @@ -4469,7 +4471,6 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/zw @dirrm share/locale/l10n/zm @dirrm share/locale/l10n/za -@dirrm share/locale/l10n/yu @dirrm share/locale/l10n/ye @dirrm share/locale/l10n/ws @dirrm share/locale/l10n/wf @@ -4519,6 +4520,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/sa @dirrm share/locale/l10n/rw @dirrm share/locale/l10n/ru +@dirrm share/locale/l10n/rs @dirrm share/locale/l10n/ro @dirrm share/locale/l10n/qa @dirrm share/locale/l10n/py @@ -4565,6 +4567,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/mk @dirrm share/locale/l10n/mh @dirrm share/locale/l10n/mg +@dirrm share/locale/l10n/me @dirrm share/locale/l10n/md @dirrm share/locale/l10n/mc @dirrm share/locale/l10n/ma diff --git a/x11/kdebase4-workspace/Makefile b/x11/kdebase4-workspace/Makefile index 245e12912f34..4747e8238169 100644 --- a/x11/kdebase4-workspace/Makefile +++ b/x11/kdebase4-workspace/Makefile @@ -8,7 +8,7 @@ PORTNAME= kdebase PORTVERSION= ${KDE_VERSION} -PORTREVISION= 3 +PORTREVISION= 0 CATEGORIES= x11 kde MASTER_SITES= ${MASTER_SITE_KDE} MASTER_SITE_SUBDIR= stable/${PORTVERSION:S/.0//}/src @@ -18,8 +18,7 @@ MAINTAINER= kde@FreeBSD.org COMMENT= Basic applications for the KDE system RUN_DEPENDS= ${KDE_PREFIX}/env/xdg-env.sh:${PORTSDIR}/misc/kde-xdg-env -BUILD_DEPENDS= mkfontdir:${X_CLIENTS_PORT} \ - xmkmf:${X_IMAKE_PORT} +BUILD_DEPENDS= xmkmf:${X_IMAKE_PORT} LIB_DEPENDS= sasl2:${PORTSDIR}/security/cyrus-sasl2 \ smbclient:${PORTSDIR}/net/samba-libsmbclient \ usb-0.1:${PORTSDIR}/devel/libusb @@ -58,7 +57,11 @@ OPTIONS= ARTSWRAPPER "Suid wrapper for aRts, req'd for realtime prio" on \ .include "${.CURDIR}/../../x11/kde3/Makefile.kde" .include <bsd.port.pre.mk> -.if ${X_WINDOW_SYSTEM:L} == xorg +.if ${X_WINDOW_SYSTEM:L} != xorg +BUILD_DEPENDS+= mkfontdir:${X_CLIENTS_PORT} +.else +BUILD_DEPENDS+= bdftopcf:${PORTSDIR}/x11-fonts/bdftopcf \ + mkfontdir:${PORTSDIR}/x11-fonts/mkfontdir RUN_DEPENDS+= kompmgr:${PORTSDIR}/x11-wm/kompmgr .endif @@ -72,8 +75,7 @@ RUN_DEPENDS+= htdig:${PORTSDIR}/textproc/htdig .if !defined(WITHOUT_HAL) && ${OSVERSION} > 500035 EXTRA_PATCHES= ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.cpp \ - ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h \ - ${FILESDIR}/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp + ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h LIB_DEPENDS+= dbus-qt-1.1:${PORTSDIR}/devel/dbus-qt3 \ hal.1:${PORTSDIR}/sysutils/hal PLIST_SUB+= MEDIA="" diff --git a/x11/kdebase4-workspace/distinfo b/x11/kdebase4-workspace/distinfo index 9051c799c5c2..5e51bc436b6b 100644 --- a/x11/kdebase4-workspace/distinfo +++ b/x11/kdebase4-workspace/distinfo @@ -1,3 +1,3 @@ -MD5 (KDE/kdebase-3.5.6.tar.bz2) = a53f589f58012e655a52220a6a151019 -SHA256 (KDE/kdebase-3.5.6.tar.bz2) = 245b35f8b2e1533f9ae92b3b07bee5339a716dfb8db363d0126d2e7409b7bd7e -SIZE (KDE/kdebase-3.5.6.tar.bz2) = 24155599 +MD5 (KDE/kdebase-3.5.7.tar.bz2) = b421e01b3ee712549ee967f58ed24de0 +SHA256 (KDE/kdebase-3.5.7.tar.bz2) = 3c6d739abefc55b6cb64e1cf37b79f5993b666a5b40492471754794416b5c28d +SIZE (KDE/kdebase-3.5.7.tar.bz2) = 24395088 diff --git a/x11/kdebase4-workspace/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp b/x11/kdebase4-workspace/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp index 0da5609fb97a..61403676bbcb 100644 --- a/x11/kdebase4-workspace/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp +++ b/x11/kdebase4-workspace/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp @@ -1,5 +1,5 @@ ---- kioslave/media/mediamanager/halbackend.cpp.orig Mon Jan 15 14:31:32 2007 -+++ kioslave/media/mediamanager/halbackend.cpp Sun Apr 8 02:18:14 2007 +--- kioslave/media/mediamanager/halbackend.cpp.orig Mon May 14 09:55:40 2007 ++++ kioslave/media/mediamanager/halbackend.cpp Sat Jun 2 11:40:22 2007 @@ -17,9 +17,15 @@ */ @@ -39,7 +39,7 @@ return true; } -@@ -251,11 +265,11 @@ +@@ -245,11 +259,11 @@ } } QMap<QString,QString> options = MediaManagerUtils::splitOptions(mountoptions(udi)); @@ -53,19 +53,19 @@ } m_mediaList.addMedium(medium, allowNotification); -@@ -272,6 +286,11 @@ +@@ -264,6 +278,11 @@ + { + /* Create medium */ Medium* medium = new Medium(udi, ""); - setFloppyProperties(medium); - m_mediaList.addMedium(medium, allowNotification); +#ifdef Q_OS_FREEBSD + m_pollTimer.stop(); + m_pollMediaList.append(medium); + m_pollTimer.start(250); +#endif - return; - } - -@@ -293,12 +312,23 @@ + // if the storage has a volume, we ignore it + if ( setFloppyProperties(medium) ) + m_mediaList.addMedium(medium, allowNotification); +@@ -290,12 +309,23 @@ void HALBackend::RemoveDevice(const char *udi) { @@ -90,7 +90,7 @@ const char* mediumUdi = findMediumUdiFromUdi(udi); if (!mediumUdi) return; -@@ -334,7 +364,7 @@ +@@ -331,7 +361,7 @@ } const char* mediumUdi = findMediumUdiFromUdi(udi); @@ -99,7 +99,7 @@ if (!mediumUdi) return; -@@ -392,7 +422,7 @@ +@@ -389,7 +419,7 @@ { Medium m( *cmedium ); if ( setFstabProperties( &m ) ) { @@ -108,7 +108,7 @@ m_mediaList.changeMediumState(m, false); } return; -@@ -407,6 +437,7 @@ +@@ -404,6 +434,7 @@ setFloppyProperties(m); if (libhal_device_query_capability(m_halContext, mediumUdi, "camera", NULL)) setCameraProperties(m); @@ -116,7 +116,7 @@ m_mediaList.changeMediumState(*m, false); -@@ -479,28 +510,23 @@ +@@ -476,28 +507,23 @@ else mimeType = "media/dvd" + MOUNT_SUFFIX; @@ -156,7 +156,7 @@ } else { -@@ -584,7 +610,7 @@ +@@ -581,7 +607,7 @@ } } @@ -165,7 +165,40 @@ QString fstype = medium->fsType(); if ( fstype.isNull() ) fstype = "auto"; -@@ -794,7 +820,7 @@ +@@ -766,7 +792,32 @@ + if (medium && !isInFstab(medium).isNull()) + return QStringList(); // not handled by HAL - fstab entry + ++ const char *boolOptionNames[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; ++ const char *stringOptionNames[] = { "shortname", "journaling", "mountpoint", "automount", ++#ifdef Q_OS_FREEBSD ++ "filemask", "dirmask", "charset", "locale", "doscodepage", ++#endif ++ 0 }; ++ + KConfig config("mediamanagerrc"); ++ config.setGroup("General"); ++ QMap<QString,QString> options; ++ for (int index = 0; boolOptionNames[index]; ++index) ++ if (config.hasKey(boolOptionNames[index])) ++ options.insert(boolOptionNames[index], ++ config.readBoolEntry(boolOptionNames[index]) ? "true" : "false"); ++ for (int index = 0; stringOptionNames[index]; ++index) ++ if (config.hasKey(stringOptionNames[index])) ++ options.insert(stringOptionNames[index], ++ config.readEntry(stringOptionNames[index])); ++ if (!libhal_device_exists(m_halContext, name.latin1(), NULL)) ++ { ++ QStringList result; ++ if (name.lower() == "general") ++ for (QMap<QString,QString>::ConstIterator it = options.begin(); it != options.end(); ++it) ++ result << it.key() + '=' + it.data(); ++ return result; ++ } + config.setGroup(name); + + char ** array = libhal_device_get_property_strlist(m_halContext, name.latin1(), "volume.mount.valid_options", NULL); +@@ -777,25 +828,68 @@ if (t.endsWith("=")) t = t.left(t.length() - 1); valids[t] = true; @@ -174,20 +207,309 @@ } libhal_free_string_array(array); QStringList result; -@@ -915,12 +941,20 @@ - result << "journaling=ordered"; + QString tmp; + ++ QMap<QString,QString> halOptions; ++ LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, name.latin1()); ++ if (!halVolume) ++ { ++ LibHalDrive *halDrive = libhal_drive_from_udi(m_halContext, name.latin1()); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_drive_policy_get_mount_options(halDrive, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ } ++ else ++ { ++ const char *driveUdi = libhal_volume_get_storage_device_udi(halVolume); ++ LibHalDrive *halDrive = !driveUdi ? 0 : libhal_drive_from_udi(m_halContext, driveUdi); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_volume_policy_get_mount_options(halDrive, halVolume, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ libhal_volume_free(halVolume); ++ } ++ if (!tmp.isEmpty()) ++ { ++ uint start = 0; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ QString opt = tmp.mid( start, end - start ); ++ start = end + 1; ++ end = opt.find('='); ++ QString key = opt.left(end); ++ if (valids.contains(key)) ++ halOptions.insert(key, end == -1 ? QString::null : opt.mid(end + 1)); ++ } ++ } ++ + QString fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.fstype"); + if (fstype.isNull()) + fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.mount_filesystem"); + + QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); + ++ bool value = false; + bool removable = false; + if ( !drive_udi.isNull() ) ++ { ++ value = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.automount_enabled_hint", NULL); + removable = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.removable", NULL) +- || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ } + + config.setGroup(drive_udi); +- bool value = config.readBoolEntry("automount", false); ++ value = config.readBoolEntry("automount", ++ !options.contains("automount") ? value : options["automount"] == "true" ); + config.setGroup(name); + + if (libhal_device_get_property_bool(m_halContext, name.latin1(), "volume.disc.is_blank", NULL) +@@ -809,44 +903,98 @@ + + if (valids.contains("ro")) + { +- value = config.readBoolEntry("ro", false); ++ value = options.contains("ro") ? options["ro"] == "true" ++ : halOptions.contains("ro"); ++ value = config.readBoolEntry("ro", value); + tmp = QString("ro=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("ro"); + } + + if (valids.contains("quiet")) + { +- value = config.readBoolEntry("quiet", false); ++ value = options.contains("quiet") ? options["quiet"] == "true" ++ : halOptions.contains("quiet"); ++ value = config.readBoolEntry("quiet", value); + tmp = QString("quiet=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("quiet"); + } + + if (valids.contains("flush")) + { +- value = config.readBoolEntry("flush", fstype.endsWith("fat")); ++ value = options.contains("flush") ? options["flush"] == "true" ++ : (halOptions.contains("flush") || fstype.endsWith("fat")); ++ value = config.readBoolEntry("flush", value); + tmp = QString("flush=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("flush"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("-u")) ++#else + if (valids.contains("uid")) ++#endif + { +- value = config.readBoolEntry("uid", true); ++ value = !options.contains("uid") ? true : options["uid"] == "true"; ++ value = config.readBoolEntry("uid", value); + tmp = QString("uid=%1").arg(value ? "true" : "false"); + result << tmp; ++#ifdef Q_OS_FREEBSD ++ halOptions.remove("-u"); ++#else ++ halOptions.remove("uid"); ++#endif + } + + if (valids.contains("utf8")) + { +- value = config.readBoolEntry("utf8", true); ++ value = !options.contains("iocharset") && !halOptions.contains("iocharset") ++ && (options.contains("utf8") ? options["utf8"] == "true" ++ : halOptions.contains("utf8")); ++ value = config.readBoolEntry("utf8", value); + tmp = QString("utf8=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("utf8"); + } + ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("nowin95") ++ && valids.contains("longnames") ++ && valids.contains("shortnames")) ++ { ++ QString svalue = "winnt"; ++ if (halOptions.contains("longnames") && !halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "winnt"; ++ else if (!halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "win95"; ++ else if (halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "mixed"; ++ else if (halOptions.contains("nowin95")) ++ svalue = "lower"; ++ svalue = config.readEntry("shortname", ++ options.contains("shortname") ? options["shortname"] : svalue); ++ if (svalue == "winnt") ++ result << "shortname=winnt"; ++ else if (svalue == "win95") ++ result << "shortname=win95"; ++ else if (svalue == "mixed") ++ result << "shortname=mixed"; ++ else ++ result << "shortname=lower"; ++ halOptions.remove("nowin95"); ++ halOptions.remove("longnames"); ++ halOptions.remove("shortnames"); ++ } ++#else + if (valids.contains("shortname")) + { +- QString svalue = config.readEntry("shortname", "lower").lower(); ++ QString svalue = options.contains("shortname") ? options["shortname"] ++ : (halOptions.contains("shortname") ? halOptions["shortname"] : "winnt"); ++ svalue = config.readEntry("shortname", svalue).lower(); + if (svalue == "winnt") + result << "shortname=winnt"; + else if (svalue == "win95") +@@ -856,28 +1004,36 @@ + else + result << "shortname=lower"; + } +- ++#endif + if (valids.contains("sync")) + { +- value = config.readBoolEntry("sync", ( valids.contains("flush") && !fstype.endsWith("fat") ) && removable); ++ value = options.contains("sync") ? options["sync"] == "true" ++ : (halOptions.contains("sync") || ((valids.contains("flush") && !fstype.endsWith("fat")) && removable)); ++ value = config.readBoolEntry("sync", value); + tmp = QString("sync=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("sync"); + } + + if (valids.contains("noatime")) + { + value = config.readBoolEntry("atime", !fstype.endsWith("fat")); ++ value = options.contains("atime") ? options["atime"] == "true" ++ : (halOptions.contains("noatime") ? false : !fstype.endsWith("fat")); ++ value = config.readBoolEntry("atime", value); + tmp = QString("atime=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("noatime"); + } + + QString mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.mount_point"); + if (mount_point.isEmpty()) + mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.desired_mount_point"); + +- mount_point = config.readEntry("mountpoint", mount_point); ++ mount_point = config.readEntry("mountpoint", ++ options.contains("mountpoint") ? options["mountpoint"] : mount_point); + + if (!mount_point.startsWith("/")) + mount_point = "/media/" + mount_point; +@@ -887,7 +1043,9 @@ + + if (valids.contains("data")) + { +- QString svalue = config.readEntry("journaling").lower(); ++ QString svalue = options.contains("journaling") ? options["journaling"] ++ : (halOptions.contains("data") ? halOptions["data"] : "ordered"); ++ svalue = config.readEntry("journaling", svalue).lower(); + if (svalue == "ordered") + result << "journaling=ordered"; + else if (svalue == "writeback") +@@ -896,6 +1054,82 @@ + result << "journaling=data"; + else + result << "journaling=ordered"; ++ halOptions.remove("data"); ++ } ++ ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("-m")) ++ { ++ QString svalue = options.contains("filemask") ? options["filemask"] ++ : (halOptions.contains("-m") ? halOptions["-m"] : QString::null); ++ svalue = config.readEntry("filemask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("filemask=%1").arg(svalue); ++ halOptions.remove("-m"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-M")) ++ { ++ QString svalue = options.contains("dirmask") ? options["dirmask"] ++ : (halOptions.contains("-M") ? halOptions["-M"] : QString::null); ++ svalue = config.readEntry("dirmask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("dirmask=%1").arg(svalue); ++ halOptions.remove("-M"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ + if (valids.contains("-C")) + { -+ result << QString("charset=%1").arg(nl_langinfo(CODESET)); ++ QString svalue = options.contains("charset") ? options["charset"] ++ : (halOptions.contains("-C") ? halOptions["-C"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("charset", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("charset=%1").arg(svalue); ++ halOptions.remove("-C"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-L")) ++ { ++ QString locale = getenv("LANG"); ++ if (locale.isEmpty()) locale = getenv("LC_ALL"); ++ QString svalue = options.contains("locale") ? options["locale"] ++ : (halOptions.contains("-L") ? halOptions["-L"] : locale ); ++ svalue = config.readEntry("locale", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("locale=%1").arg(svalue); ++ halOptions.remove("-L"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-D")) ++ { ++ QString svalue = options.contains("doscodepage") ? options["doscodepage"] ++ : (halOptions.contains("-D") ? halOptions["-D"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("doscodepage", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("doscodepage=%1").arg(svalue); ++ halOptions.remove("-D"); + kdDebug(1219) << "mount properties " << result << " " << endl; + } +#endif + ++ if (!halOptions.isEmpty()) ++ { ++ QString svalue; ++ for (QMap<QString,QString>::ConstIterator it = halOptions.begin(); it != halOptions.end(); ++it) ++ { ++ if (it != halOptions.begin()) ++ svalue += ','; ++ svalue += it.key(); ++ if (!it.data().isEmpty()) ++ svalue += '=' + it.data(); ++ } ++ if (!svalue.isEmpty()) ++ result << QString("options=%1").arg(svalue); ++ kdDebug(1219) << "mount properties " << result << " " << endl; + } + return result; - } +@@ -903,32 +1137,82 @@ bool HALBackend::setMountoptions(const QString &name, const QStringList &options ) { @@ -195,8 +517,94 @@ + kdDebug(1219) << "setMountoptions " << name << " " << options << endl; KConfig config("mediamanagerrc"); - config.setGroup(name); -@@ -960,7 +994,7 @@ +- config.setGroup(name); ++ config.setGroup(name.lower() == "general" ? "General" : name); + + QMap<QString,QString> valids = MediaManagerUtils::splitOptions(options); + + const char *names[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; + for (int index = 0; names[index]; ++index) + if (valids.contains(names[index])) +- config.writeEntry(names[index], valids[names[index]] == "true"); ++ if (valids[names[index]].isEmpty()) ++ config.deleteEntry(names[index]); ++ else ++ config.writeEntry(names[index], valids[names[index]] == "true"); + + if (valids.contains("shortname")) +- config.writeEntry("shortname", valids["shortname"]); ++ if (valids["shortname"].isEmpty()) ++ config.deleteEntry("shortname"); ++ else ++ config.writeEntry("shortname", valids["shortname"]); + + if (valids.contains("journaling")) +- config.writeEntry("journaling", valids["journaling"]); ++ if (valids["journaling"].isEmpty()) ++ config.deleteEntry("journaling"); ++ else ++ config.writeEntry("journaling", valids["journaling"]); + +- if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) +- config.writeEntry("mountpoint", valids["mountpoint"]); ++ if (valids.contains("mountpoint")) ++ if (valids["mountpoint"].isEmpty()) ++ config.deleteEntry("mountpoint"); ++ else if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) ++ config.writeEntry("mountpoint", valids["mountpoint"]); ++ ++ if (valids.contains("automount")) ++ if (valids["automount"].isEmpty()) ++ config.deleteEntry("automount"); ++ else ++ { ++ QString drive_udi = libhal_device_exists(m_halContext, name.latin1(), NULL) ++ ? libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device") ++ : (name.lower() == "general" ? "General" : name); ++ config.setGroup(drive_udi); ++ config.writeEntry("automount", valids["automount"]); ++ } + +- if (valids.contains("automount")) { +- QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); +- config.setGroup(drive_udi); +- config.writeEntry("automount", valids["automount"]); +- } ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ if (valids["filemask"].isEmpty()) ++ config.deleteEntry("filemask"); ++ else ++ config.writeEntry("filemask", valids["filemask"]); ++ ++ if (valids.contains("dirmask")) ++ if (valids["dirmask"].isEmpty()) ++ config.deleteEntry("dirmask"); ++ else ++ config.writeEntry("dirmask", valids["dirmask"]); ++ ++ if (valids.contains("charset")) ++ if (valids["charset"].isEmpty()) ++ config.deleteEntry("charset"); ++ else ++ config.writeEntry("charset", valids["charset"]); ++ ++ if (valids.contains("locale")) ++ if (valids["locale"].isEmpty()) ++ config.deleteEntry("locale"); ++ else ++ config.writeEntry("locale", valids["locale"]); ++ ++ if (valids.contains("doscodepage")) ++ if (valids["doscodepage"].isEmpty()) ++ config.deleteEntry("doscodepage"); ++ else ++ config.writeEntry("doscodepage", valids["doscodepage"]); ++#endif + + return true; + } +@@ -943,7 +1227,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Mount"))) { @@ -205,7 +613,7 @@ return i18n("Internal Error"); } -@@ -968,7 +1002,7 @@ +@@ -951,7 +1235,7 @@ DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &poptions, noptions, DBUS_TYPE_INVALID)) { @@ -214,7 +622,7 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -996,7 +1030,7 @@ +@@ -979,7 +1263,7 @@ return qerror; } @@ -223,7 +631,7 @@ dbus_message_unref (dmesg); dbus_message_unref (reply); -@@ -1008,8 +1042,13 @@ +@@ -991,8 +1275,13 @@ QString HALBackend::listUsingProcesses(const Medium* medium) { QString proclist, fullmsg; @@ -238,7 +646,7 @@ uint counter = 0; if (fuser) { -@@ -1044,7 +1083,7 @@ +@@ -1027,7 +1316,7 @@ void HALBackend::slotResult(KIO::Job *job) { @@ -247,7 +655,7 @@ struct mount_job_data *data = mount_jobs[job]; QString& qerror = data->errorMessage; -@@ -1071,7 +1110,6 @@ +@@ -1054,7 +1343,6 @@ qerror = job->errorText(); } @@ -255,7 +663,7 @@ mount_jobs.remove(job); /* Job completed. Notify the caller */ -@@ -1080,6 +1118,25 @@ +@@ -1063,6 +1351,25 @@ kapp->eventLoop()->exitLoop(); } @@ -281,7 +689,7 @@ QString HALBackend::isInFstab(const Medium *medium) { KMountPoint::List fstab = KMountPoint::possibleMountPoints(KMountPoint::NeedMountOptions|KMountPoint::NeedRealDeviceName); -@@ -1092,11 +1149,13 @@ +@@ -1075,11 +1382,13 @@ QString reald = (*it)->realDeviceName(); if ( reald.endsWith( "/" ) ) reald = reald.left( reald.length() - 1 ); @@ -296,7 +704,7 @@ return (*it)->mountPoint(); } } -@@ -1116,7 +1175,7 @@ +@@ -1099,7 +1408,7 @@ data.completed = false; data.medium = medium; @@ -305,7 +713,7 @@ KIO::Job *job = KIO::mount( false, 0, medium->deviceNode(), mountPoint ); connect(job, SIGNAL( result (KIO::Job *)), SLOT( slotResult( KIO::Job *))); -@@ -1134,7 +1193,7 @@ +@@ -1117,7 +1426,7 @@ QStringList soptions; @@ -314,7 +722,16 @@ QMap<QString,QString> valids = MediaManagerUtils::splitOptions(mountoptions(medium->id())); if (valids["flush"] == "true") -@@ -1147,10 +1206,10 @@ +@@ -1125,15 +1434,19 @@ + + if (valids["uid"] == "true") + { ++#ifdef Q_OS_FREEBSD ++ soptions << QString("-u=%1").arg(getuid()); ++#else + soptions << QString("uid=%1").arg(getuid()); ++#endif + } if (valids["ro"] == "true") soptions << "ro"; @@ -327,21 +744,69 @@ if (valids["quiet"] == "true") soptions << "quiet"; -@@ -1180,6 +1239,13 @@ +@@ -1149,7 +1462,19 @@ + + if (valids.contains("shortname")) + { ++#ifdef Q_OS_FREEBSD ++ QString option = valids["shortname"]; ++ if (option == "win95") ++ soptions << QString("shortnames"); ++ else if (option == "mixed") ++ soptions << QString("shortnames") << QString("longnames"); ++ else if (option == "lower") ++ soptions << QString("nowin95"); ++ else ++ soptions << QString("longnames"); ++#else + soptions << QString("shortname=%1").arg(valids["shortname"]); ++#endif + } + + if (valids.contains("journaling")) +@@ -1163,6 +1488,41 @@ soptions << QString("data=ordered"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ { ++ soptions << QString("-m=%1").arg(valids["filemask"]); ++ } ++ if (valids.contains("dirmask")) ++ { ++ soptions << QString("-M=%1").arg(valids["dirmask"]); ++ } + if (valids.contains("charset")) + { + soptions << QString("-C=%1").arg(valids["charset"]); + } ++ if (valids.contains("locale")) ++ { ++ soptions << QString("-L=%1").arg(valids["locale"]); ++ } ++ if (valids.contains("doscodepage")) ++ { ++ soptions << QString("-D=%1").arg(valids["doscodepage"]); ++ } +#endif ++ if (valids.contains("options")) ++ { ++ uint start = 0; ++ QString tmp = valids["options"]; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ soptions << tmp.mid( start, end - start ); ++ start = end + 1; ++ } ++ } + const char **options = new const char*[soptions.size() + 1]; uint noptions = 0; for (QStringList::ConstIterator it = soptions.begin(); it != soptions.end(); ++it, ++noptions) -@@ -1192,9 +1258,6 @@ +@@ -1175,9 +1535,6 @@ return qerror; } @@ -351,7 +816,7 @@ return QString(); } -@@ -1255,7 +1318,7 @@ +@@ -1238,7 +1595,7 @@ const char *options[2]; const char *udi = medium->id().latin1(); @@ -360,7 +825,7 @@ dbus_error_init(&error); DBusConnection *dbus_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); -@@ -1268,7 +1331,7 @@ +@@ -1251,7 +1608,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Unmount"))) { @@ -369,7 +834,7 @@ return i18n("Internal Error"); } -@@ -1278,7 +1341,7 @@ +@@ -1261,7 +1618,7 @@ if (!dbus_message_append_args (dmesg, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &options, 0, DBUS_TYPE_INVALID)) { @@ -378,16 +843,16 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -1288,7 +1351,7 @@ +@@ -1271,7 +1628,7 @@ { QString qerror, reason; - kdDebug() << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; + kdDebug(1219) << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; qerror = "<qt>"; - qerror += i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " + qerror += "<p>" + i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " "currently mounted at <b>%4</b> could not be unmounted. ").arg( -@@ -1318,13 +1381,10 @@ +@@ -1301,13 +1658,10 @@ return qerror; } diff --git a/x11/kdebase4-workspace/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp b/x11/kdebase4-workspace/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp deleted file mode 100644 index 7d0fbfa81767..000000000000 --- a/x11/kdebase4-workspace/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp +++ /dev/null @@ -1,49 +0,0 @@ ---- kioslave/media/mounthelper/kio_media_mounthelper.cpp.orig Mon Jan 15 12:31:31 2007 -+++ kioslave/media/mounthelper/kio_media_mounthelper.cpp Wed Feb 21 15:17:23 2007 -@@ -89,7 +89,9 @@ - m_isCdrom = medium.mimeType().find("dvd")!=-1 - || medium.mimeType().find("cd")!=-1; - -- if (args->isSet("u")) -+ bool do_eject = args->isSet("s") || args->isSet("e"); -+ -+ if (args->isSet("u") || do_eject) - { - DCOPRef mediamanager("kded", "mediamanager"); - DCOPReply reply = mediamanager.call( "unmount", medium.id()); -@@ -97,30 +99,14 @@ - reply.get(m_errorStr); - kdDebug() << "medium unmount " << m_errorStr << endl; - if (m_errorStr.isNull()) -+ { -+ if( do_eject ) -+ invokeEject(device, true); -+ else - ::exit(0); -+ } - else - error(); -- } -- else if (args->isSet("s") || args->isSet("e")) -- { -- /* -- * We want to call mediamanager unmount before invoking eject. That's -- * because unmount would provide an informative error message in case of -- * failure. However, there are cases when unmount would fail -- * (supermount, slackware, see bug#116209) but eject would succeed. -- * Thus if unmount fails, save unmount error message and invokeEject() -- * anyway. Only if both unmount and eject fail, notify the user by -- * displaying the saved error message (see ejectFinished()). -- */ -- if (medium.isMounted()) -- { -- DCOPRef mediamanager("kded", "mediamanager"); -- DCOPReply reply = mediamanager.call( "unmount", medium.id()); -- if (reply.isValid()) -- reply.get(m_errorStr); -- m_device = device; -- } -- invokeEject(device, true); - } - else - { diff --git a/x11/kdebase4-workspace/files/patch-kdm-config.def b/x11/kdebase4-workspace/files/patch-kdm-config.def index 5d1b849cc1d7..1bd357d0cd72 100644 --- a/x11/kdebase4-workspace/files/patch-kdm-config.def +++ b/x11/kdebase4-workspace/files/patch-kdm-config.def @@ -1,10 +1,12 @@ ---- kdm/config.def.orig Wed Jun 14 17:51:42 2006 -+++ kdm/config.def Wed Jun 14 17:51:57 2006 -@@ -36,7 +36,7 @@ +--- kdm/config.def.orig Mon Oct 10 17:04:31 2005 ++++ kdm/config.def Fri May 25 12:08:24 2007 +@@ -35,8 +35,8 @@ + #ifdef _AIX # define HALT_CMD "/usr/sbin/shutdown -h now" # define REBOOT_CMD "/usr/sbin/shutdown -r now" - #elif defined(BSD) +-#elif defined(BSD) -# define HALT_CMD "/sbin/shutdown -h now" ++#elif defined(__FreeBSD__) +# define HALT_CMD "/sbin/shutdown -p now" # define REBOOT_CMD "/sbin/shutdown -r now" #elif defined(__SVR4) diff --git a/x11/kdebase4-workspace/files/patch-plugin-keyboard-handler.diff b/x11/kdebase4-workspace/files/patch-plugin-keyboard-handler.diff deleted file mode 100644 index 8d301d6d4e69..000000000000 --- a/x11/kdebase4-workspace/files/patch-plugin-keyboard-handler.diff +++ /dev/null @@ -1,77 +0,0 @@ ------------------------------------------------------------------------- -r652585 | lunakl | 2007-04-11 16:26:32 +0200 (Wed, 11 Apr 2007) | 3 lines -Changed paths: - M /branches/KDE/3.5/kdebase/nsplugins/viewer/qxteventloop.cpp - -Fix keyboard events handling. - - ------------------------------------------------------------------------- -Index: nsplugins/viewer/qxteventloop.cpp -=================================================================== ---- nsplugins/viewer/qxteventloop.cpp (revision 652584) -+++ nsplugins/viewer/qxteventloop.cpp (revision 652585) -@@ -32,12 +32,16 @@ - ** not clear to you. - ** - **********************************************************************/ -+ -+#include <config.h> -+ - #include "qxteventloop.h" - - #if QT_VERSION >= 0x030100 - - #include <qapplication.h> - #include <qwidgetintdict.h> -+#include <kglobal.h> - - // resolve the conflict between X11's FocusIn and QEvent::FocusIn - const int XFocusOut = FocusOut; -@@ -52,6 +56,8 @@ const int XKeyRelease = KeyRelease; - - Boolean qmotif_event_dispatcher( XEvent *event ); - -+static void handle_xquerykeymap( Display* dpy, XEvent* event ); -+ - class QXtEventLoopPrivate - { - public: -@@ -147,6 +153,7 @@ void QXtEventLoopPrivate::unhook() - extern bool qt_try_modal( QWidget *, XEvent * ); // defined in qapplication_x11.cpp - Boolean qmotif_event_dispatcher( XEvent *event ) - { -+ handle_xquerykeymap( qt_xdisplay(), event ); - QApplication::sendPostedEvents(); - - QWidgetIntDict *mapper = &static_d->mapper; -@@ -462,6 +469,29 @@ bool QXtEventLoop::processEvents( Proces - return ( (flags & WaitForMore) || ( pendingmask != 0 ) || nevents > 0 ); - } - -+#include <dlfcn.h> -+ -+static char xquerykeymap_data[ 32 ]; -+static int (*real_xquerykeymap)( Display*, char[32] ) = NULL; -+ -+static void handle_xquerykeymap( Display* dpy, XEvent* event ) -+{ -+ if( real_xquerykeymap == NULL ) -+ real_xquerykeymap = (int (*)( Display*, char[32] )) dlsym( RTLD_NEXT, "XQueryKeymap" ); -+ if( event->type == XFocusIn || event->type == XKeyPress || event->type == XKeyRelease ) -+ real_xquerykeymap( dpy, xquerykeymap_data ); -+ if( event->type == XFocusOut ) -+ memset( xquerykeymap_data, 0, 32 ); -+} -+ -+extern "C" KDE_EXPORT -+int XQueryKeymap( Display* , char k[32] ) -+{ -+ memcpy( k, xquerykeymap_data, 32 ); -+ return 1; -+} -+ -+ - #include "qxteventloop.moc" - - #endif diff --git a/x11/kdebase4-workspace/files/pkg-message.in b/x11/kdebase4-workspace/files/pkg-message.in index 1cacd3158de2..34663a8e2907 100644 --- a/x11/kdebase4-workspace/files/pkg-message.in +++ b/x11/kdebase4-workspace/files/pkg-message.in @@ -7,7 +7,7 @@ $ xset fp+ %%PREFIX%%/share/apps/konsole/fonts $ xset fp rehash or by adding it to your X-server configuration file (usually -/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and +/etc/X11/xorg.conf or %%X11BASE%%/lib/X11/xorg.conf) and restarting the X-server. You also have to make the new path known to fontconfig by diff --git a/x11/kdebase4-workspace/pkg-plist b/x11/kdebase4-workspace/pkg-plist index bd60a8fa6ce8..a33e2e7cedc9 100644 --- a/x11/kdebase4-workspace/pkg-plist +++ b/x11/kdebase4-workspace/pkg-plist @@ -2018,7 +2018,7 @@ share/apps/kthememanager/themes/YellowOnBlue-big/YellowOnBlue-big.xml share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.preview.png share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.xml share/apps/kwin/b2.desktop -share/apps/kwin/default_rules/fsp_workarounds_1 +share/apps/kwin/default_rules/fsp_workarounds_1.kwinrules share/apps/kwin/eventsrc share/apps/kwin/keramik.desktop share/apps/kwin/laptop.desktop @@ -3797,6 +3797,8 @@ share/locale/l10n/mc/entry.desktop share/locale/l10n/mc/flag.png share/locale/l10n/md/entry.desktop share/locale/l10n/md/flag.png +share/locale/l10n/me/entry.desktop +share/locale/l10n/me/flag.png share/locale/l10n/mg/entry.desktop share/locale/l10n/mg/flag.png share/locale/l10n/mh/entry.desktop @@ -3894,6 +3896,8 @@ share/locale/l10n/qa/entry.desktop share/locale/l10n/qa/flag.png share/locale/l10n/ro/entry.desktop share/locale/l10n/ro/flag.png +share/locale/l10n/rs/entry.desktop +share/locale/l10n/rs/flag.png share/locale/l10n/ru/entry.desktop share/locale/l10n/ru/flag.png share/locale/l10n/rw/entry.desktop @@ -3999,8 +4003,6 @@ share/locale/l10n/ws/entry.desktop share/locale/l10n/ws/flag.png share/locale/l10n/ye/entry.desktop share/locale/l10n/ye/flag.png -share/locale/l10n/yu/entry.desktop -share/locale/l10n/yu/flag.png share/locale/l10n/za/entry.desktop share/locale/l10n/za/flag.png share/locale/l10n/zm/entry.desktop @@ -4469,7 +4471,6 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/zw @dirrm share/locale/l10n/zm @dirrm share/locale/l10n/za -@dirrm share/locale/l10n/yu @dirrm share/locale/l10n/ye @dirrm share/locale/l10n/ws @dirrm share/locale/l10n/wf @@ -4519,6 +4520,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/sa @dirrm share/locale/l10n/rw @dirrm share/locale/l10n/ru +@dirrm share/locale/l10n/rs @dirrm share/locale/l10n/ro @dirrm share/locale/l10n/qa @dirrm share/locale/l10n/py @@ -4565,6 +4567,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/mk @dirrm share/locale/l10n/mh @dirrm share/locale/l10n/mg +@dirrm share/locale/l10n/me @dirrm share/locale/l10n/md @dirrm share/locale/l10n/mc @dirrm share/locale/l10n/ma diff --git a/x11/kdebase4/Makefile b/x11/kdebase4/Makefile index 245e12912f34..4747e8238169 100644 --- a/x11/kdebase4/Makefile +++ b/x11/kdebase4/Makefile @@ -8,7 +8,7 @@ PORTNAME= kdebase PORTVERSION= ${KDE_VERSION} -PORTREVISION= 3 +PORTREVISION= 0 CATEGORIES= x11 kde MASTER_SITES= ${MASTER_SITE_KDE} MASTER_SITE_SUBDIR= stable/${PORTVERSION:S/.0//}/src @@ -18,8 +18,7 @@ MAINTAINER= kde@FreeBSD.org COMMENT= Basic applications for the KDE system RUN_DEPENDS= ${KDE_PREFIX}/env/xdg-env.sh:${PORTSDIR}/misc/kde-xdg-env -BUILD_DEPENDS= mkfontdir:${X_CLIENTS_PORT} \ - xmkmf:${X_IMAKE_PORT} +BUILD_DEPENDS= xmkmf:${X_IMAKE_PORT} LIB_DEPENDS= sasl2:${PORTSDIR}/security/cyrus-sasl2 \ smbclient:${PORTSDIR}/net/samba-libsmbclient \ usb-0.1:${PORTSDIR}/devel/libusb @@ -58,7 +57,11 @@ OPTIONS= ARTSWRAPPER "Suid wrapper for aRts, req'd for realtime prio" on \ .include "${.CURDIR}/../../x11/kde3/Makefile.kde" .include <bsd.port.pre.mk> -.if ${X_WINDOW_SYSTEM:L} == xorg +.if ${X_WINDOW_SYSTEM:L} != xorg +BUILD_DEPENDS+= mkfontdir:${X_CLIENTS_PORT} +.else +BUILD_DEPENDS+= bdftopcf:${PORTSDIR}/x11-fonts/bdftopcf \ + mkfontdir:${PORTSDIR}/x11-fonts/mkfontdir RUN_DEPENDS+= kompmgr:${PORTSDIR}/x11-wm/kompmgr .endif @@ -72,8 +75,7 @@ RUN_DEPENDS+= htdig:${PORTSDIR}/textproc/htdig .if !defined(WITHOUT_HAL) && ${OSVERSION} > 500035 EXTRA_PATCHES= ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.cpp \ - ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h \ - ${FILESDIR}/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp + ${FILESDIR}/extrapatch-kioslave_media_mediamanager-halbackend.h LIB_DEPENDS+= dbus-qt-1.1:${PORTSDIR}/devel/dbus-qt3 \ hal.1:${PORTSDIR}/sysutils/hal PLIST_SUB+= MEDIA="" diff --git a/x11/kdebase4/distinfo b/x11/kdebase4/distinfo index 9051c799c5c2..5e51bc436b6b 100644 --- a/x11/kdebase4/distinfo +++ b/x11/kdebase4/distinfo @@ -1,3 +1,3 @@ -MD5 (KDE/kdebase-3.5.6.tar.bz2) = a53f589f58012e655a52220a6a151019 -SHA256 (KDE/kdebase-3.5.6.tar.bz2) = 245b35f8b2e1533f9ae92b3b07bee5339a716dfb8db363d0126d2e7409b7bd7e -SIZE (KDE/kdebase-3.5.6.tar.bz2) = 24155599 +MD5 (KDE/kdebase-3.5.7.tar.bz2) = b421e01b3ee712549ee967f58ed24de0 +SHA256 (KDE/kdebase-3.5.7.tar.bz2) = 3c6d739abefc55b6cb64e1cf37b79f5993b666a5b40492471754794416b5c28d +SIZE (KDE/kdebase-3.5.7.tar.bz2) = 24395088 diff --git a/x11/kdebase4/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp b/x11/kdebase4/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp index 0da5609fb97a..61403676bbcb 100644 --- a/x11/kdebase4/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp +++ b/x11/kdebase4/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp @@ -1,5 +1,5 @@ ---- kioslave/media/mediamanager/halbackend.cpp.orig Mon Jan 15 14:31:32 2007 -+++ kioslave/media/mediamanager/halbackend.cpp Sun Apr 8 02:18:14 2007 +--- kioslave/media/mediamanager/halbackend.cpp.orig Mon May 14 09:55:40 2007 ++++ kioslave/media/mediamanager/halbackend.cpp Sat Jun 2 11:40:22 2007 @@ -17,9 +17,15 @@ */ @@ -39,7 +39,7 @@ return true; } -@@ -251,11 +265,11 @@ +@@ -245,11 +259,11 @@ } } QMap<QString,QString> options = MediaManagerUtils::splitOptions(mountoptions(udi)); @@ -53,19 +53,19 @@ } m_mediaList.addMedium(medium, allowNotification); -@@ -272,6 +286,11 @@ +@@ -264,6 +278,11 @@ + { + /* Create medium */ Medium* medium = new Medium(udi, ""); - setFloppyProperties(medium); - m_mediaList.addMedium(medium, allowNotification); +#ifdef Q_OS_FREEBSD + m_pollTimer.stop(); + m_pollMediaList.append(medium); + m_pollTimer.start(250); +#endif - return; - } - -@@ -293,12 +312,23 @@ + // if the storage has a volume, we ignore it + if ( setFloppyProperties(medium) ) + m_mediaList.addMedium(medium, allowNotification); +@@ -290,12 +309,23 @@ void HALBackend::RemoveDevice(const char *udi) { @@ -90,7 +90,7 @@ const char* mediumUdi = findMediumUdiFromUdi(udi); if (!mediumUdi) return; -@@ -334,7 +364,7 @@ +@@ -331,7 +361,7 @@ } const char* mediumUdi = findMediumUdiFromUdi(udi); @@ -99,7 +99,7 @@ if (!mediumUdi) return; -@@ -392,7 +422,7 @@ +@@ -389,7 +419,7 @@ { Medium m( *cmedium ); if ( setFstabProperties( &m ) ) { @@ -108,7 +108,7 @@ m_mediaList.changeMediumState(m, false); } return; -@@ -407,6 +437,7 @@ +@@ -404,6 +434,7 @@ setFloppyProperties(m); if (libhal_device_query_capability(m_halContext, mediumUdi, "camera", NULL)) setCameraProperties(m); @@ -116,7 +116,7 @@ m_mediaList.changeMediumState(*m, false); -@@ -479,28 +510,23 @@ +@@ -476,28 +507,23 @@ else mimeType = "media/dvd" + MOUNT_SUFFIX; @@ -156,7 +156,7 @@ } else { -@@ -584,7 +610,7 @@ +@@ -581,7 +607,7 @@ } } @@ -165,7 +165,40 @@ QString fstype = medium->fsType(); if ( fstype.isNull() ) fstype = "auto"; -@@ -794,7 +820,7 @@ +@@ -766,7 +792,32 @@ + if (medium && !isInFstab(medium).isNull()) + return QStringList(); // not handled by HAL - fstab entry + ++ const char *boolOptionNames[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; ++ const char *stringOptionNames[] = { "shortname", "journaling", "mountpoint", "automount", ++#ifdef Q_OS_FREEBSD ++ "filemask", "dirmask", "charset", "locale", "doscodepage", ++#endif ++ 0 }; ++ + KConfig config("mediamanagerrc"); ++ config.setGroup("General"); ++ QMap<QString,QString> options; ++ for (int index = 0; boolOptionNames[index]; ++index) ++ if (config.hasKey(boolOptionNames[index])) ++ options.insert(boolOptionNames[index], ++ config.readBoolEntry(boolOptionNames[index]) ? "true" : "false"); ++ for (int index = 0; stringOptionNames[index]; ++index) ++ if (config.hasKey(stringOptionNames[index])) ++ options.insert(stringOptionNames[index], ++ config.readEntry(stringOptionNames[index])); ++ if (!libhal_device_exists(m_halContext, name.latin1(), NULL)) ++ { ++ QStringList result; ++ if (name.lower() == "general") ++ for (QMap<QString,QString>::ConstIterator it = options.begin(); it != options.end(); ++it) ++ result << it.key() + '=' + it.data(); ++ return result; ++ } + config.setGroup(name); + + char ** array = libhal_device_get_property_strlist(m_halContext, name.latin1(), "volume.mount.valid_options", NULL); +@@ -777,25 +828,68 @@ if (t.endsWith("=")) t = t.left(t.length() - 1); valids[t] = true; @@ -174,20 +207,309 @@ } libhal_free_string_array(array); QStringList result; -@@ -915,12 +941,20 @@ - result << "journaling=ordered"; + QString tmp; + ++ QMap<QString,QString> halOptions; ++ LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, name.latin1()); ++ if (!halVolume) ++ { ++ LibHalDrive *halDrive = libhal_drive_from_udi(m_halContext, name.latin1()); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_drive_policy_get_mount_options(halDrive, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ } ++ else ++ { ++ const char *driveUdi = libhal_volume_get_storage_device_udi(halVolume); ++ LibHalDrive *halDrive = !driveUdi ? 0 : libhal_drive_from_udi(m_halContext, driveUdi); ++ if (halDrive) ++ { ++ tmp = QString::fromLatin1(libhal_volume_policy_get_mount_options(halDrive, halVolume, NULL)); ++ libhal_drive_free(halDrive); ++ } ++ libhal_volume_free(halVolume); ++ } ++ if (!tmp.isEmpty()) ++ { ++ uint start = 0; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ QString opt = tmp.mid( start, end - start ); ++ start = end + 1; ++ end = opt.find('='); ++ QString key = opt.left(end); ++ if (valids.contains(key)) ++ halOptions.insert(key, end == -1 ? QString::null : opt.mid(end + 1)); ++ } ++ } ++ + QString fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.fstype"); + if (fstype.isNull()) + fstype = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.mount_filesystem"); + + QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); + ++ bool value = false; + bool removable = false; + if ( !drive_udi.isNull() ) ++ { ++ value = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.automount_enabled_hint", NULL); + removable = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.removable", NULL) +- || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL); ++ } + + config.setGroup(drive_udi); +- bool value = config.readBoolEntry("automount", false); ++ value = config.readBoolEntry("automount", ++ !options.contains("automount") ? value : options["automount"] == "true" ); + config.setGroup(name); + + if (libhal_device_get_property_bool(m_halContext, name.latin1(), "volume.disc.is_blank", NULL) +@@ -809,44 +903,98 @@ + + if (valids.contains("ro")) + { +- value = config.readBoolEntry("ro", false); ++ value = options.contains("ro") ? options["ro"] == "true" ++ : halOptions.contains("ro"); ++ value = config.readBoolEntry("ro", value); + tmp = QString("ro=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("ro"); + } + + if (valids.contains("quiet")) + { +- value = config.readBoolEntry("quiet", false); ++ value = options.contains("quiet") ? options["quiet"] == "true" ++ : halOptions.contains("quiet"); ++ value = config.readBoolEntry("quiet", value); + tmp = QString("quiet=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("quiet"); + } + + if (valids.contains("flush")) + { +- value = config.readBoolEntry("flush", fstype.endsWith("fat")); ++ value = options.contains("flush") ? options["flush"] == "true" ++ : (halOptions.contains("flush") || fstype.endsWith("fat")); ++ value = config.readBoolEntry("flush", value); + tmp = QString("flush=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("flush"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("-u")) ++#else + if (valids.contains("uid")) ++#endif + { +- value = config.readBoolEntry("uid", true); ++ value = !options.contains("uid") ? true : options["uid"] == "true"; ++ value = config.readBoolEntry("uid", value); + tmp = QString("uid=%1").arg(value ? "true" : "false"); + result << tmp; ++#ifdef Q_OS_FREEBSD ++ halOptions.remove("-u"); ++#else ++ halOptions.remove("uid"); ++#endif + } + + if (valids.contains("utf8")) + { +- value = config.readBoolEntry("utf8", true); ++ value = !options.contains("iocharset") && !halOptions.contains("iocharset") ++ && (options.contains("utf8") ? options["utf8"] == "true" ++ : halOptions.contains("utf8")); ++ value = config.readBoolEntry("utf8", value); + tmp = QString("utf8=%1").arg(value ? "true" : "false"); + result << tmp; ++ halOptions.remove("utf8"); + } + ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("nowin95") ++ && valids.contains("longnames") ++ && valids.contains("shortnames")) ++ { ++ QString svalue = "winnt"; ++ if (halOptions.contains("longnames") && !halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "winnt"; ++ else if (!halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "win95"; ++ else if (halOptions.contains("longnames") && halOptions.contains("shortnames") && !halOptions.contains("nowin95")) ++ svalue = "mixed"; ++ else if (halOptions.contains("nowin95")) ++ svalue = "lower"; ++ svalue = config.readEntry("shortname", ++ options.contains("shortname") ? options["shortname"] : svalue); ++ if (svalue == "winnt") ++ result << "shortname=winnt"; ++ else if (svalue == "win95") ++ result << "shortname=win95"; ++ else if (svalue == "mixed") ++ result << "shortname=mixed"; ++ else ++ result << "shortname=lower"; ++ halOptions.remove("nowin95"); ++ halOptions.remove("longnames"); ++ halOptions.remove("shortnames"); ++ } ++#else + if (valids.contains("shortname")) + { +- QString svalue = config.readEntry("shortname", "lower").lower(); ++ QString svalue = options.contains("shortname") ? options["shortname"] ++ : (halOptions.contains("shortname") ? halOptions["shortname"] : "winnt"); ++ svalue = config.readEntry("shortname", svalue).lower(); + if (svalue == "winnt") + result << "shortname=winnt"; + else if (svalue == "win95") +@@ -856,28 +1004,36 @@ + else + result << "shortname=lower"; + } +- ++#endif + if (valids.contains("sync")) + { +- value = config.readBoolEntry("sync", ( valids.contains("flush") && !fstype.endsWith("fat") ) && removable); ++ value = options.contains("sync") ? options["sync"] == "true" ++ : (halOptions.contains("sync") || ((valids.contains("flush") && !fstype.endsWith("fat")) && removable)); ++ value = config.readBoolEntry("sync", value); + tmp = QString("sync=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("sync"); + } + + if (valids.contains("noatime")) + { + value = config.readBoolEntry("atime", !fstype.endsWith("fat")); ++ value = options.contains("atime") ? options["atime"] == "true" ++ : (halOptions.contains("noatime") ? false : !fstype.endsWith("fat")); ++ value = config.readBoolEntry("atime", value); + tmp = QString("atime=%1").arg(value ? "true" : "false"); + if (fstype != "iso9660") // makes no sense + result << tmp; ++ halOptions.remove("noatime"); + } + + QString mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.mount_point"); + if (mount_point.isEmpty()) + mount_point = libhal_device_get_property_QString(m_halContext, name.latin1(), "volume.policy.desired_mount_point"); + +- mount_point = config.readEntry("mountpoint", mount_point); ++ mount_point = config.readEntry("mountpoint", ++ options.contains("mountpoint") ? options["mountpoint"] : mount_point); + + if (!mount_point.startsWith("/")) + mount_point = "/media/" + mount_point; +@@ -887,7 +1043,9 @@ + + if (valids.contains("data")) + { +- QString svalue = config.readEntry("journaling").lower(); ++ QString svalue = options.contains("journaling") ? options["journaling"] ++ : (halOptions.contains("data") ? halOptions["data"] : "ordered"); ++ svalue = config.readEntry("journaling", svalue).lower(); + if (svalue == "ordered") + result << "journaling=ordered"; + else if (svalue == "writeback") +@@ -896,6 +1054,82 @@ + result << "journaling=data"; + else + result << "journaling=ordered"; ++ halOptions.remove("data"); ++ } ++ ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("-m")) ++ { ++ QString svalue = options.contains("filemask") ? options["filemask"] ++ : (halOptions.contains("-m") ? halOptions["-m"] : QString::null); ++ svalue = config.readEntry("filemask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("filemask=%1").arg(svalue); ++ halOptions.remove("-m"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-M")) ++ { ++ QString svalue = options.contains("dirmask") ? options["dirmask"] ++ : (halOptions.contains("-M") ? halOptions["-M"] : QString::null); ++ svalue = config.readEntry("dirmask", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("dirmask=%1").arg(svalue); ++ halOptions.remove("-M"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ + if (valids.contains("-C")) + { -+ result << QString("charset=%1").arg(nl_langinfo(CODESET)); ++ QString svalue = options.contains("charset") ? options["charset"] ++ : (halOptions.contains("-C") ? halOptions["-C"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("charset", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("charset=%1").arg(svalue); ++ halOptions.remove("-C"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-L")) ++ { ++ QString locale = getenv("LANG"); ++ if (locale.isEmpty()) locale = getenv("LC_ALL"); ++ QString svalue = options.contains("locale") ? options["locale"] ++ : (halOptions.contains("-L") ? halOptions["-L"] : locale ); ++ svalue = config.readEntry("locale", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("locale=%1").arg(svalue); ++ halOptions.remove("-L"); ++ kdDebug(1219) << "mount properties " << result << " " << endl; ++ } ++ ++ if (valids.contains("-D")) ++ { ++ QString svalue = options.contains("doscodepage") ? options["doscodepage"] ++ : (halOptions.contains("-D") ? halOptions["-D"] : nl_langinfo(CODESET)); ++ svalue = config.readEntry("doscodepage", svalue); ++ if (!svalue.isEmpty()) ++ result << QString("doscodepage=%1").arg(svalue); ++ halOptions.remove("-D"); + kdDebug(1219) << "mount properties " << result << " " << endl; + } +#endif + ++ if (!halOptions.isEmpty()) ++ { ++ QString svalue; ++ for (QMap<QString,QString>::ConstIterator it = halOptions.begin(); it != halOptions.end(); ++it) ++ { ++ if (it != halOptions.begin()) ++ svalue += ','; ++ svalue += it.key(); ++ if (!it.data().isEmpty()) ++ svalue += '=' + it.data(); ++ } ++ if (!svalue.isEmpty()) ++ result << QString("options=%1").arg(svalue); ++ kdDebug(1219) << "mount properties " << result << " " << endl; + } + return result; - } +@@ -903,32 +1137,82 @@ bool HALBackend::setMountoptions(const QString &name, const QStringList &options ) { @@ -195,8 +517,94 @@ + kdDebug(1219) << "setMountoptions " << name << " " << options << endl; KConfig config("mediamanagerrc"); - config.setGroup(name); -@@ -960,7 +994,7 @@ +- config.setGroup(name); ++ config.setGroup(name.lower() == "general" ? "General" : name); + + QMap<QString,QString> valids = MediaManagerUtils::splitOptions(options); + + const char *names[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 }; + for (int index = 0; names[index]; ++index) + if (valids.contains(names[index])) +- config.writeEntry(names[index], valids[names[index]] == "true"); ++ if (valids[names[index]].isEmpty()) ++ config.deleteEntry(names[index]); ++ else ++ config.writeEntry(names[index], valids[names[index]] == "true"); + + if (valids.contains("shortname")) +- config.writeEntry("shortname", valids["shortname"]); ++ if (valids["shortname"].isEmpty()) ++ config.deleteEntry("shortname"); ++ else ++ config.writeEntry("shortname", valids["shortname"]); + + if (valids.contains("journaling")) +- config.writeEntry("journaling", valids["journaling"]); ++ if (valids["journaling"].isEmpty()) ++ config.deleteEntry("journaling"); ++ else ++ config.writeEntry("journaling", valids["journaling"]); + +- if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) +- config.writeEntry("mountpoint", valids["mountpoint"]); ++ if (valids.contains("mountpoint")) ++ if (valids["mountpoint"].isEmpty()) ++ config.deleteEntry("mountpoint"); ++ else if (!mountoptions(name).contains(QString("mountpoint=%1").arg(valids["mountpoint"]))) ++ config.writeEntry("mountpoint", valids["mountpoint"]); ++ ++ if (valids.contains("automount")) ++ if (valids["automount"].isEmpty()) ++ config.deleteEntry("automount"); ++ else ++ { ++ QString drive_udi = libhal_device_exists(m_halContext, name.latin1(), NULL) ++ ? libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device") ++ : (name.lower() == "general" ? "General" : name); ++ config.setGroup(drive_udi); ++ config.writeEntry("automount", valids["automount"]); ++ } + +- if (valids.contains("automount")) { +- QString drive_udi = libhal_device_get_property_QString(m_halContext, name.latin1(), "block.storage_device"); +- config.setGroup(drive_udi); +- config.writeEntry("automount", valids["automount"]); +- } ++#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ if (valids["filemask"].isEmpty()) ++ config.deleteEntry("filemask"); ++ else ++ config.writeEntry("filemask", valids["filemask"]); ++ ++ if (valids.contains("dirmask")) ++ if (valids["dirmask"].isEmpty()) ++ config.deleteEntry("dirmask"); ++ else ++ config.writeEntry("dirmask", valids["dirmask"]); ++ ++ if (valids.contains("charset")) ++ if (valids["charset"].isEmpty()) ++ config.deleteEntry("charset"); ++ else ++ config.writeEntry("charset", valids["charset"]); ++ ++ if (valids.contains("locale")) ++ if (valids["locale"].isEmpty()) ++ config.deleteEntry("locale"); ++ else ++ config.writeEntry("locale", valids["locale"]); ++ ++ if (valids.contains("doscodepage")) ++ if (valids["doscodepage"].isEmpty()) ++ config.deleteEntry("doscodepage"); ++ else ++ config.writeEntry("doscodepage", valids["doscodepage"]); ++#endif + + return true; + } +@@ -943,7 +1227,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Mount"))) { @@ -205,7 +613,7 @@ return i18n("Internal Error"); } -@@ -968,7 +1002,7 @@ +@@ -951,7 +1235,7 @@ DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &poptions, noptions, DBUS_TYPE_INVALID)) { @@ -214,7 +622,7 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -996,7 +1030,7 @@ +@@ -979,7 +1263,7 @@ return qerror; } @@ -223,7 +631,7 @@ dbus_message_unref (dmesg); dbus_message_unref (reply); -@@ -1008,8 +1042,13 @@ +@@ -991,8 +1275,13 @@ QString HALBackend::listUsingProcesses(const Medium* medium) { QString proclist, fullmsg; @@ -238,7 +646,7 @@ uint counter = 0; if (fuser) { -@@ -1044,7 +1083,7 @@ +@@ -1027,7 +1316,7 @@ void HALBackend::slotResult(KIO::Job *job) { @@ -247,7 +655,7 @@ struct mount_job_data *data = mount_jobs[job]; QString& qerror = data->errorMessage; -@@ -1071,7 +1110,6 @@ +@@ -1054,7 +1343,6 @@ qerror = job->errorText(); } @@ -255,7 +663,7 @@ mount_jobs.remove(job); /* Job completed. Notify the caller */ -@@ -1080,6 +1118,25 @@ +@@ -1063,6 +1351,25 @@ kapp->eventLoop()->exitLoop(); } @@ -281,7 +689,7 @@ QString HALBackend::isInFstab(const Medium *medium) { KMountPoint::List fstab = KMountPoint::possibleMountPoints(KMountPoint::NeedMountOptions|KMountPoint::NeedRealDeviceName); -@@ -1092,11 +1149,13 @@ +@@ -1075,11 +1382,13 @@ QString reald = (*it)->realDeviceName(); if ( reald.endsWith( "/" ) ) reald = reald.left( reald.length() - 1 ); @@ -296,7 +704,7 @@ return (*it)->mountPoint(); } } -@@ -1116,7 +1175,7 @@ +@@ -1099,7 +1408,7 @@ data.completed = false; data.medium = medium; @@ -305,7 +713,7 @@ KIO::Job *job = KIO::mount( false, 0, medium->deviceNode(), mountPoint ); connect(job, SIGNAL( result (KIO::Job *)), SLOT( slotResult( KIO::Job *))); -@@ -1134,7 +1193,7 @@ +@@ -1117,7 +1426,7 @@ QStringList soptions; @@ -314,7 +722,16 @@ QMap<QString,QString> valids = MediaManagerUtils::splitOptions(mountoptions(medium->id())); if (valids["flush"] == "true") -@@ -1147,10 +1206,10 @@ +@@ -1125,15 +1434,19 @@ + + if (valids["uid"] == "true") + { ++#ifdef Q_OS_FREEBSD ++ soptions << QString("-u=%1").arg(getuid()); ++#else + soptions << QString("uid=%1").arg(getuid()); ++#endif + } if (valids["ro"] == "true") soptions << "ro"; @@ -327,21 +744,69 @@ if (valids["quiet"] == "true") soptions << "quiet"; -@@ -1180,6 +1239,13 @@ +@@ -1149,7 +1462,19 @@ + + if (valids.contains("shortname")) + { ++#ifdef Q_OS_FREEBSD ++ QString option = valids["shortname"]; ++ if (option == "win95") ++ soptions << QString("shortnames"); ++ else if (option == "mixed") ++ soptions << QString("shortnames") << QString("longnames"); ++ else if (option == "lower") ++ soptions << QString("nowin95"); ++ else ++ soptions << QString("longnames"); ++#else + soptions << QString("shortname=%1").arg(valids["shortname"]); ++#endif + } + + if (valids.contains("journaling")) +@@ -1163,6 +1488,41 @@ soptions << QString("data=ordered"); } +#ifdef Q_OS_FREEBSD ++ if (valids.contains("filemask")) ++ { ++ soptions << QString("-m=%1").arg(valids["filemask"]); ++ } ++ if (valids.contains("dirmask")) ++ { ++ soptions << QString("-M=%1").arg(valids["dirmask"]); ++ } + if (valids.contains("charset")) + { + soptions << QString("-C=%1").arg(valids["charset"]); + } ++ if (valids.contains("locale")) ++ { ++ soptions << QString("-L=%1").arg(valids["locale"]); ++ } ++ if (valids.contains("doscodepage")) ++ { ++ soptions << QString("-D=%1").arg(valids["doscodepage"]); ++ } +#endif ++ if (valids.contains("options")) ++ { ++ uint start = 0; ++ QString tmp = valids["options"]; ++ while(start < tmp.length()) ++ { ++ int end = tmp.find(',', start); ++ if (end == -1) end = tmp.length(); ++ soptions << tmp.mid( start, end - start ); ++ start = end + 1; ++ } ++ } + const char **options = new const char*[soptions.size() + 1]; uint noptions = 0; for (QStringList::ConstIterator it = soptions.begin(); it != soptions.end(); ++it, ++noptions) -@@ -1192,9 +1258,6 @@ +@@ -1175,9 +1535,6 @@ return qerror; } @@ -351,7 +816,7 @@ return QString(); } -@@ -1255,7 +1318,7 @@ +@@ -1238,7 +1595,7 @@ const char *options[2]; const char *udi = medium->id().latin1(); @@ -360,7 +825,7 @@ dbus_error_init(&error); DBusConnection *dbus_connection = dbus_bus_get(DBUS_BUS_SYSTEM, &error); -@@ -1268,7 +1331,7 @@ +@@ -1251,7 +1608,7 @@ if (!(dmesg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, "org.freedesktop.Hal.Device.Volume", "Unmount"))) { @@ -369,7 +834,7 @@ return i18n("Internal Error"); } -@@ -1278,7 +1341,7 @@ +@@ -1261,7 +1618,7 @@ if (!dbus_message_append_args (dmesg, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING, &options, 0, DBUS_TYPE_INVALID)) { @@ -378,16 +843,16 @@ dbus_message_unref (dmesg); return i18n("Internal Error"); } -@@ -1288,7 +1351,7 @@ +@@ -1271,7 +1628,7 @@ { QString qerror, reason; - kdDebug() << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; + kdDebug(1219) << "unmount failed for " << udi << ": " << error.name << " " << error.message << endl; qerror = "<qt>"; - qerror += i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " + qerror += "<p>" + i18n("Unfortunately, the device <b>%1</b> (%2) named <b>'%3'</b> and " "currently mounted at <b>%4</b> could not be unmounted. ").arg( -@@ -1318,13 +1381,10 @@ +@@ -1301,13 +1658,10 @@ return qerror; } diff --git a/x11/kdebase4/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp b/x11/kdebase4/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp deleted file mode 100644 index 7d0fbfa81767..000000000000 --- a/x11/kdebase4/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp +++ /dev/null @@ -1,49 +0,0 @@ ---- kioslave/media/mounthelper/kio_media_mounthelper.cpp.orig Mon Jan 15 12:31:31 2007 -+++ kioslave/media/mounthelper/kio_media_mounthelper.cpp Wed Feb 21 15:17:23 2007 -@@ -89,7 +89,9 @@ - m_isCdrom = medium.mimeType().find("dvd")!=-1 - || medium.mimeType().find("cd")!=-1; - -- if (args->isSet("u")) -+ bool do_eject = args->isSet("s") || args->isSet("e"); -+ -+ if (args->isSet("u") || do_eject) - { - DCOPRef mediamanager("kded", "mediamanager"); - DCOPReply reply = mediamanager.call( "unmount", medium.id()); -@@ -97,30 +99,14 @@ - reply.get(m_errorStr); - kdDebug() << "medium unmount " << m_errorStr << endl; - if (m_errorStr.isNull()) -+ { -+ if( do_eject ) -+ invokeEject(device, true); -+ else - ::exit(0); -+ } - else - error(); -- } -- else if (args->isSet("s") || args->isSet("e")) -- { -- /* -- * We want to call mediamanager unmount before invoking eject. That's -- * because unmount would provide an informative error message in case of -- * failure. However, there are cases when unmount would fail -- * (supermount, slackware, see bug#116209) but eject would succeed. -- * Thus if unmount fails, save unmount error message and invokeEject() -- * anyway. Only if both unmount and eject fail, notify the user by -- * displaying the saved error message (see ejectFinished()). -- */ -- if (medium.isMounted()) -- { -- DCOPRef mediamanager("kded", "mediamanager"); -- DCOPReply reply = mediamanager.call( "unmount", medium.id()); -- if (reply.isValid()) -- reply.get(m_errorStr); -- m_device = device; -- } -- invokeEject(device, true); - } - else - { diff --git a/x11/kdebase4/files/patch-kdm-config.def b/x11/kdebase4/files/patch-kdm-config.def index 5d1b849cc1d7..1bd357d0cd72 100644 --- a/x11/kdebase4/files/patch-kdm-config.def +++ b/x11/kdebase4/files/patch-kdm-config.def @@ -1,10 +1,12 @@ ---- kdm/config.def.orig Wed Jun 14 17:51:42 2006 -+++ kdm/config.def Wed Jun 14 17:51:57 2006 -@@ -36,7 +36,7 @@ +--- kdm/config.def.orig Mon Oct 10 17:04:31 2005 ++++ kdm/config.def Fri May 25 12:08:24 2007 +@@ -35,8 +35,8 @@ + #ifdef _AIX # define HALT_CMD "/usr/sbin/shutdown -h now" # define REBOOT_CMD "/usr/sbin/shutdown -r now" - #elif defined(BSD) +-#elif defined(BSD) -# define HALT_CMD "/sbin/shutdown -h now" ++#elif defined(__FreeBSD__) +# define HALT_CMD "/sbin/shutdown -p now" # define REBOOT_CMD "/sbin/shutdown -r now" #elif defined(__SVR4) diff --git a/x11/kdebase4/files/patch-plugin-keyboard-handler.diff b/x11/kdebase4/files/patch-plugin-keyboard-handler.diff deleted file mode 100644 index 8d301d6d4e69..000000000000 --- a/x11/kdebase4/files/patch-plugin-keyboard-handler.diff +++ /dev/null @@ -1,77 +0,0 @@ ------------------------------------------------------------------------- -r652585 | lunakl | 2007-04-11 16:26:32 +0200 (Wed, 11 Apr 2007) | 3 lines -Changed paths: - M /branches/KDE/3.5/kdebase/nsplugins/viewer/qxteventloop.cpp - -Fix keyboard events handling. - - ------------------------------------------------------------------------- -Index: nsplugins/viewer/qxteventloop.cpp -=================================================================== ---- nsplugins/viewer/qxteventloop.cpp (revision 652584) -+++ nsplugins/viewer/qxteventloop.cpp (revision 652585) -@@ -32,12 +32,16 @@ - ** not clear to you. - ** - **********************************************************************/ -+ -+#include <config.h> -+ - #include "qxteventloop.h" - - #if QT_VERSION >= 0x030100 - - #include <qapplication.h> - #include <qwidgetintdict.h> -+#include <kglobal.h> - - // resolve the conflict between X11's FocusIn and QEvent::FocusIn - const int XFocusOut = FocusOut; -@@ -52,6 +56,8 @@ const int XKeyRelease = KeyRelease; - - Boolean qmotif_event_dispatcher( XEvent *event ); - -+static void handle_xquerykeymap( Display* dpy, XEvent* event ); -+ - class QXtEventLoopPrivate - { - public: -@@ -147,6 +153,7 @@ void QXtEventLoopPrivate::unhook() - extern bool qt_try_modal( QWidget *, XEvent * ); // defined in qapplication_x11.cpp - Boolean qmotif_event_dispatcher( XEvent *event ) - { -+ handle_xquerykeymap( qt_xdisplay(), event ); - QApplication::sendPostedEvents(); - - QWidgetIntDict *mapper = &static_d->mapper; -@@ -462,6 +469,29 @@ bool QXtEventLoop::processEvents( Proces - return ( (flags & WaitForMore) || ( pendingmask != 0 ) || nevents > 0 ); - } - -+#include <dlfcn.h> -+ -+static char xquerykeymap_data[ 32 ]; -+static int (*real_xquerykeymap)( Display*, char[32] ) = NULL; -+ -+static void handle_xquerykeymap( Display* dpy, XEvent* event ) -+{ -+ if( real_xquerykeymap == NULL ) -+ real_xquerykeymap = (int (*)( Display*, char[32] )) dlsym( RTLD_NEXT, "XQueryKeymap" ); -+ if( event->type == XFocusIn || event->type == XKeyPress || event->type == XKeyRelease ) -+ real_xquerykeymap( dpy, xquerykeymap_data ); -+ if( event->type == XFocusOut ) -+ memset( xquerykeymap_data, 0, 32 ); -+} -+ -+extern "C" KDE_EXPORT -+int XQueryKeymap( Display* , char k[32] ) -+{ -+ memcpy( k, xquerykeymap_data, 32 ); -+ return 1; -+} -+ -+ - #include "qxteventloop.moc" - - #endif diff --git a/x11/kdebase4/files/pkg-message.in b/x11/kdebase4/files/pkg-message.in index 1cacd3158de2..34663a8e2907 100644 --- a/x11/kdebase4/files/pkg-message.in +++ b/x11/kdebase4/files/pkg-message.in @@ -7,7 +7,7 @@ $ xset fp+ %%PREFIX%%/share/apps/konsole/fonts $ xset fp rehash or by adding it to your X-server configuration file (usually -/etc/X11/XF86Config or %%X11BASE%%/lib/X11/XF86Config) and +/etc/X11/xorg.conf or %%X11BASE%%/lib/X11/xorg.conf) and restarting the X-server. You also have to make the new path known to fontconfig by diff --git a/x11/kdebase4/pkg-plist b/x11/kdebase4/pkg-plist index bd60a8fa6ce8..a33e2e7cedc9 100644 --- a/x11/kdebase4/pkg-plist +++ b/x11/kdebase4/pkg-plist @@ -2018,7 +2018,7 @@ share/apps/kthememanager/themes/YellowOnBlue-big/YellowOnBlue-big.xml share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.preview.png share/apps/kthememanager/themes/YellowOnBlue/YellowOnBlue.xml share/apps/kwin/b2.desktop -share/apps/kwin/default_rules/fsp_workarounds_1 +share/apps/kwin/default_rules/fsp_workarounds_1.kwinrules share/apps/kwin/eventsrc share/apps/kwin/keramik.desktop share/apps/kwin/laptop.desktop @@ -3797,6 +3797,8 @@ share/locale/l10n/mc/entry.desktop share/locale/l10n/mc/flag.png share/locale/l10n/md/entry.desktop share/locale/l10n/md/flag.png +share/locale/l10n/me/entry.desktop +share/locale/l10n/me/flag.png share/locale/l10n/mg/entry.desktop share/locale/l10n/mg/flag.png share/locale/l10n/mh/entry.desktop @@ -3894,6 +3896,8 @@ share/locale/l10n/qa/entry.desktop share/locale/l10n/qa/flag.png share/locale/l10n/ro/entry.desktop share/locale/l10n/ro/flag.png +share/locale/l10n/rs/entry.desktop +share/locale/l10n/rs/flag.png share/locale/l10n/ru/entry.desktop share/locale/l10n/ru/flag.png share/locale/l10n/rw/entry.desktop @@ -3999,8 +4003,6 @@ share/locale/l10n/ws/entry.desktop share/locale/l10n/ws/flag.png share/locale/l10n/ye/entry.desktop share/locale/l10n/ye/flag.png -share/locale/l10n/yu/entry.desktop -share/locale/l10n/yu/flag.png share/locale/l10n/za/entry.desktop share/locale/l10n/za/flag.png share/locale/l10n/zm/entry.desktop @@ -4469,7 +4471,6 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/zw @dirrm share/locale/l10n/zm @dirrm share/locale/l10n/za -@dirrm share/locale/l10n/yu @dirrm share/locale/l10n/ye @dirrm share/locale/l10n/ws @dirrm share/locale/l10n/wf @@ -4519,6 +4520,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/sa @dirrm share/locale/l10n/rw @dirrm share/locale/l10n/ru +@dirrm share/locale/l10n/rs @dirrm share/locale/l10n/ro @dirrm share/locale/l10n/qa @dirrm share/locale/l10n/py @@ -4565,6 +4567,7 @@ share/wallpapers/triplegears.jpg.desktop @dirrm share/locale/l10n/mk @dirrm share/locale/l10n/mh @dirrm share/locale/l10n/mg +@dirrm share/locale/l10n/me @dirrm share/locale/l10n/md @dirrm share/locale/l10n/mc @dirrm share/locale/l10n/ma diff --git a/x11/kdelibs3-nocups/pkg-plist b/x11/kdelibs3-nocups/pkg-plist index d8f28edbf2fc..babcb65c6cdc 100644 --- a/x11/kdelibs3-nocups/pkg-plist +++ b/x11/kdelibs3-nocups/pkg-plist @@ -141,7 +141,6 @@ include/kabc/resource.h include/kabc/resourcedir.h include/kabc/resourcefile.h include/kabc/resourceldapkio.h -include/kabc/resourcenet.h include/kabc/resourceselectdialog.h include/kabc/secrecy.h include/kabc/sortmode.h @@ -765,9 +764,6 @@ lib/kde3/kabc_file.so lib/kde3/kabc_ldapkio.a lib/kde3/kabc_ldapkio.la lib/kde3/kabc_ldapkio.so -lib/kde3/kabc_net.a -lib/kde3/kabc_net.la -lib/kde3/kabc_net.so lib/kde3/kabcformat_binary.a lib/kde3/kabcformat_binary.la lib/kde3/kabcformat_binary.so @@ -999,10 +995,6 @@ lib/libkabc_ldapkio.a lib/libkabc_ldapkio.la lib/libkabc_ldapkio.so lib/libkabc_ldapkio.so.1 -lib/libkabc_net.a -lib/libkabc_net.la -lib/libkabc_net.so -lib/libkabc_net.so.1 lib/libkatepartinterfaces.a lib/libkatepartinterfaces.la lib/libkatepartinterfaces.so @@ -1628,6 +1620,7 @@ share/apps/ksgmltools2/customization/de/entities/underArtisticLicense.docbook share/apps/ksgmltools2/customization/de/entities/underBSDLicense.docbook share/apps/ksgmltools2/customization/de/entities/underFDL.docbook share/apps/ksgmltools2/customization/de/entities/underGPL.docbook +share/apps/ksgmltools2/customization/de/entities/underLGPL.docbook share/apps/ksgmltools2/customization/de/entities/underX11License.docbook share/apps/ksgmltools2/customization/de/entities/update-doc.docbook share/apps/ksgmltools2/customization/de/lang.entities @@ -1774,6 +1767,7 @@ share/apps/ksgmltools2/customization/fr/entities/underArtisticLicense.docbook share/apps/ksgmltools2/customization/fr/entities/underBSDLicense.docbook share/apps/ksgmltools2/customization/fr/entities/underFDL.docbook share/apps/ksgmltools2/customization/fr/entities/underGPL.docbook +share/apps/ksgmltools2/customization/fr/entities/underLGPL.docbook share/apps/ksgmltools2/customization/fr/entities/underX11License.docbook share/apps/ksgmltools2/customization/fr/entities/update-doc.docbook share/apps/ksgmltools2/customization/fr/lang.entities @@ -5263,6 +5257,7 @@ share/mimelnk/audio/x-mpegurl.desktop share/mimelnk/audio/x-ms-wma.desktop share/mimelnk/audio/x-musepack.desktop share/mimelnk/audio/x-oggflac.desktop +share/mimelnk/audio/x-pn-realaudio-plugin.desktop share/mimelnk/audio/x-pn-realaudio.desktop share/mimelnk/audio/x-scpls.desktop share/mimelnk/audio/x-speex.desktop @@ -5419,7 +5414,6 @@ share/services/knotify.desktop share/services/kresources/kabc/dir.desktop share/services/kresources/kabc/file.desktop share/services/kresources/kabc/ldapkio.desktop -share/services/kresources/kabc/net.desktop share/services/kresources/kabc_manager.desktop share/services/kspell_aspell.desktop share/services/kspell_ispell.desktop diff --git a/x11/kdelibs3/Makefile b/x11/kdelibs3/Makefile index 927d80a791f7..f72461ffa31d 100644 --- a/x11/kdelibs3/Makefile +++ b/x11/kdelibs3/Makefile @@ -8,7 +8,7 @@ PORTNAME= kdelibs PORTVERSION= ${KDE_VERSION} -PORTREVISION= 3 +PORTREVISION= 0 CATEGORIES= x11 kde ipv6 MASTER_SITES= ${MASTER_SITE_KDE} MASTER_SITE_SUBDIR= stable/${PORTVERSION:S/.0//}/src @@ -18,7 +18,6 @@ DIST_SUBDIR= KDE MAINTAINER= kde@FreeBSD.org COMMENT= Base set of libraries needed by KDE programs -BUILD_DEPENDS= mkfontdir:${X_CLIENTS_PORT} LIB_DEPENDS= IlmImf:${PORTSDIR}/graphics/OpenEXR \ art_lgpl_2.5:${PORTSDIR}/graphics/libart_lgpl \ artsc.0:${PORTSDIR}/audio/arts \ @@ -32,7 +31,6 @@ LIB_DEPENDS= IlmImf:${PORTSDIR}/graphics/OpenEXR \ xml2.5:${PORTSDIR}/textproc/libxml2 \ xslt.2:${PORTSDIR}/textproc/libxslt RUN_DEPENDS= kdehier>0:${PORTSDIR}/misc/kdehier \ - iceauth:${X_CLIENTS_PORT} \ ${FONTSCALE}:${X_FONTS_TTF_PORT} \ ${FONTENCOD}:${X_FONTS_ENCODINGS_PORT} \ ${LOCALBASE}/share/icons/hicolor/index.theme:${PORTSDIR}/misc/hicolor-icon-theme @@ -81,6 +79,14 @@ FONTENCOD= ${X11BASE}/lib/X11/fonts/encodings/encodings.dir LIB_DEPENDS+= bz2.1:${PORTSDIR}/archivers/bzip2 .endif # !exists(/usr/bin/bzip2) +.if ${X_WINDOW_SYSTEM:L} != xorg +BUILD_DEPENDS+= mkfontdir:${X_CLIENTS_PORT} +RUN_DEPENDS+= iceauth:${X_CLIENTS_PORT} +.else +BUILD_DEPENDS+= mkfontdir:${PORTSDIR}/x11-fonts/mkfontdir +RUN_DEPENDS+= iceauth:${PORTSDIR}/x11/iceauth +.endif + pre-configure: ${REINPLACE_CMD} "s,%%LOCALBASE%%,${LOCALBASE},g" ${WRKSRC}/kdeprint/cups/kmcupsmanager.cpp ${REINPLACE_CMD} -e "s,ac_cups_share_test=.*,ac_cups_share_test=\`\$$kde_cups_config --datadir\`,g" \ diff --git a/x11/kdelibs3/distinfo b/x11/kdelibs3/distinfo index c4f0914142c7..6a0bc34dc3fa 100644 --- a/x11/kdelibs3/distinfo +++ b/x11/kdelibs3/distinfo @@ -1,3 +1,3 @@ -MD5 (KDE/kdelibs-3.5.6.tar.bz2) = e4d137879a66e92b895b3de5413a61d8 -SHA256 (KDE/kdelibs-3.5.6.tar.bz2) = 06766202c6ae21277b7879f363ed88fde8016586ec8c94deb59be260f2231b5c -SIZE (KDE/kdelibs-3.5.6.tar.bz2) = 15509460 +MD5 (KDE/kdelibs-3.5.7.tar.bz2) = 50ed644f2ec91963570fe2b155652957 +SHA256 (KDE/kdelibs-3.5.7.tar.bz2) = 05bc5d0d18b787d964f7c45cc078b047d450d3ddc28b1bde839a26a2eda2c5d9 +SIZE (KDE/kdelibs-3.5.7.tar.bz2) = 15576038 diff --git a/x11/kdelibs3/files/patch-CVE-2007-1564-kdelibs-3.5.6 b/x11/kdelibs3/files/patch-CVE-2007-1564-kdelibs-3.5.6 deleted file mode 100644 index b026d67a3db0..000000000000 --- a/x11/kdelibs3/files/patch-CVE-2007-1564-kdelibs-3.5.6 +++ /dev/null @@ -1,81 +0,0 @@ ---- khtml/ecma/kjs_html.cpp -+++ khtml/ecma/kjs_html.cpp -@@ -1866,9 +1866,11 @@ Value KJS::HTMLElement::getValueProperty - getDOMNode(exec, frameElement.contentDocument()) : Undefined(); - case FrameContentWindow: { - KHTMLPart* part = static_cast<DOM::HTMLFrameElementImpl*>(frameElement.handle())->contentPart(); -- if (part) -- return Value(Window::retrieveWindow(part)); -- else -+ if (part) { -+ Window *w = Window::retrieveWindow(part); -+ if (w) -+ return Value(w); -+ } - return Undefined(); - } - case FrameFrameBorder: return String(frameElement.frameBorder()); -@@ -1899,9 +1901,11 @@ Value KJS::HTMLElement::getValueProperty - getDOMNode(exec, iFrame.contentDocument()) : Undefined(); - case IFrameContentWindow: { - KHTMLPart* part = static_cast<DOM::HTMLIFrameElementImpl*>(iFrame.handle())->contentPart(); -- if (part) -- return Value(Window::retrieveWindow(part)); -- else -+ if (part) { -+ Window *w = Window::retrieveWindow(part); -+ if (w) -+ return Value(w); -+ } - return Undefined(); - } - case IFrameFrameBorder: return String(iFrame.frameBorder()); ---- kioslave/ftp/ftp.cc -+++ kioslave/ftp/ftp.cc -@@ -58,6 +58,7 @@ - #include <kmimemagic.h> - #include <kmimetype.h> - #include <ksockaddr.h> -+#include <ksocketaddress.h> - #include <kio/ioslave_defaults.h> - #include <kio/slaveconfig.h> - #include <kremoteencoding.h> -@@ -835,7 +836,6 @@ bool Ftp::ftpSendCmd( const QCString& cm - return true; - } - -- - /* - * ftpOpenPASVDataConnection - set up data connection, using PASV mode - * -@@ -853,6 +853,8 @@ int Ftp::ftpOpenPASVDataConnection() - if (sa != NULL && sa->family() != PF_INET) - return ERR_INTERNAL; // no PASV for non-PF_INET connections - -+ const KInetSocketAddress *sin = static_cast<const KInetSocketAddress*>(sa); -+ - if (m_extControl & pasvUnknown) - return ERR_INTERNAL; // already tried and got "unknown command" - -@@ -886,14 +888,17 @@ int Ftp::ftpOpenPASVDataConnection() - } - - // Make hostname and port number ... -- QString host; -- host.sprintf("%d.%d.%d.%d", i[0], i[1], i[2], i[3]); - int port = i[4] << 8 | i[5]; - -+ // we ignore the host part on purpose for two reasons -+ // a) it might be wrong anyway -+ // b) it would make us being suceptible to a port scanning attack -+ - // now connect the data socket ... - m_data = new FtpSocket("PASV"); -- m_data->setAddress(host, port); -- kdDebug(7102) << "Connecting to " << host << " on port " << port << endl; -+ m_data->setAddress(sin->nodeName(), port); -+ -+ kdDebug(7102) << "Connecting to " << sin->nodeName() << " on port " << port << endl; - return m_data->connectSocket(connectTimeout(), false); - } - diff --git a/x11/kdelibs3/files/patch-kdelibs-kjs b/x11/kdelibs3/files/patch-kdelibs-kjs deleted file mode 100644 index ca4456320ee9..000000000000 --- a/x11/kdelibs3/files/patch-kdelibs-kjs +++ /dev/null @@ -1,38 +0,0 @@ ------------------------------------------------------------------------- -r645387 | porten | 2007-03-22 15:01:13 +0100 (Thu, 22 Mar 2007) | 4 lines - -substitute some of the invalid sequences with the standard replacement -char. this matches Mozilla but not IE which leaves them unchanged (or -throws an exception) - ------------------------------------------------------------------------- ---- kjs/function.cpp -+++ kjs/function.cpp -@@ -244,11 +244,15 @@ UString decodeURI(ExecState *exec, UStri - } - - // UTF-8 transform -+ const unsigned long replacementChar = 0xFFFD; - unsigned long V; - if (n == 2) { - unsigned long yyyyy = octets[0] & 0x1F; - unsigned long zzzzzz = octets[1] & 0x3F; - V = (yyyyy << 6) | zzzzzz; -+ // 2-byte sequence overlong for this value? -+ if (V < 0xFF) -+ V = replacementChar; - C = UChar((unsigned short)V); - } - else if (n == 3) { -@@ -256,6 +260,11 @@ UString decodeURI(ExecState *exec, UStri - unsigned long yyyyyy = octets[1] & 0x3F; - unsigned long zzzzzz = octets[2] & 0x3F; - V = (xxxx << 12) | (yyyyyy << 6) | zzzzzz; -+ // 3-byte sequence overlong for this value, -+ // an invalid value or UTF-16 surrogate? -+ if (V < 0x800 || V == 0xFFFE || V == 0xFFFF || -+ (V >= 0xD800 && V <= 0xDFFF)) -+ V = replacementChar; - C = UChar((unsigned short)V); - } - else { diff --git a/x11/kdelibs3/files/patch-post-3.5.6-kdelibs.diff b/x11/kdelibs3/files/patch-post-3.5.6-kdelibs.diff deleted file mode 100644 index 5b44a47ef7a5..000000000000 --- a/x11/kdelibs3/files/patch-post-3.5.6-kdelibs.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- khtml/html/htmltokenizer.cpp -+++ khtml/html/htmltokenizer.cpp -@@ -316,7 +316,7 @@ void HTMLTokenizer::parseSpecial(Tokeniz - while ( !src.isEmpty() ) { - checkScriptBuffer(); - unsigned char ch = src->latin1(); -- if ( !scriptCodeResync && !brokenComments && !textarea && !xmp && !title && ch == '-' && scriptCodeSize >= 3 && !src.escaped() && QConstString( scriptCode+scriptCodeSize-3, 3 ).string() == "<!-" ) { -+ if ( !scriptCodeResync && !brokenComments && !textarea && !xmp && ch == '-' && scriptCodeSize >= 3 && !src.escaped() && QConstString( scriptCode+scriptCodeSize-3, 3 ).string() == "<!-" ) { - comment = true; - scriptCode[ scriptCodeSize++ ] = ch; - ++src; -@@ -495,7 +495,7 @@ void HTMLTokenizer::parseComment(Tokeniz - - if (canClose || handleBrokenComments || scriptEnd ){ - ++src; -- if ( !( script || xmp || textarea || style) ) { -+ if ( !( title || script || xmp || textarea || style) ) { - #ifdef COMMENTS_IN_DOM - checkScriptBuffer(); - scriptCode[ scriptCodeSize ] = 0; diff --git a/x11/kdelibs3/pkg-plist b/x11/kdelibs3/pkg-plist index 90183447454b..2f6befae1caa 100644 --- a/x11/kdelibs3/pkg-plist +++ b/x11/kdelibs3/pkg-plist @@ -144,7 +144,6 @@ include/kabc/resource.h include/kabc/resourcedir.h include/kabc/resourcefile.h include/kabc/resourceldapkio.h -include/kabc/resourcenet.h include/kabc/resourceselectdialog.h include/kabc/secrecy.h include/kabc/sortmode.h @@ -771,9 +770,6 @@ lib/kde3/kabc_file.so lib/kde3/kabc_ldapkio.a lib/kde3/kabc_ldapkio.la lib/kde3/kabc_ldapkio.so -lib/kde3/kabc_net.a -lib/kde3/kabc_net.la -lib/kde3/kabc_net.so lib/kde3/kabcformat_binary.a lib/kde3/kabcformat_binary.la lib/kde3/kabcformat_binary.so @@ -1008,10 +1004,6 @@ lib/libkabc_ldapkio.a lib/libkabc_ldapkio.la lib/libkabc_ldapkio.so lib/libkabc_ldapkio.so.1 -lib/libkabc_net.a -lib/libkabc_net.la -lib/libkabc_net.so -lib/libkabc_net.so.1 lib/libkatepartinterfaces.a lib/libkatepartinterfaces.la lib/libkatepartinterfaces.so @@ -1646,6 +1638,7 @@ share/apps/ksgmltools2/customization/de/entities/underArtisticLicense.docbook share/apps/ksgmltools2/customization/de/entities/underBSDLicense.docbook share/apps/ksgmltools2/customization/de/entities/underFDL.docbook share/apps/ksgmltools2/customization/de/entities/underGPL.docbook +share/apps/ksgmltools2/customization/de/entities/underLGPL.docbook share/apps/ksgmltools2/customization/de/entities/underX11License.docbook share/apps/ksgmltools2/customization/de/entities/update-doc.docbook share/apps/ksgmltools2/customization/de/lang.entities @@ -1792,6 +1785,7 @@ share/apps/ksgmltools2/customization/fr/entities/underArtisticLicense.docbook share/apps/ksgmltools2/customization/fr/entities/underBSDLicense.docbook share/apps/ksgmltools2/customization/fr/entities/underFDL.docbook share/apps/ksgmltools2/customization/fr/entities/underGPL.docbook +share/apps/ksgmltools2/customization/fr/entities/underLGPL.docbook share/apps/ksgmltools2/customization/fr/entities/underX11License.docbook share/apps/ksgmltools2/customization/fr/entities/update-doc.docbook share/apps/ksgmltools2/customization/fr/lang.entities @@ -5282,6 +5276,7 @@ share/mimelnk/audio/x-mpegurl.desktop share/mimelnk/audio/x-ms-wma.desktop share/mimelnk/audio/x-musepack.desktop share/mimelnk/audio/x-oggflac.desktop +share/mimelnk/audio/x-pn-realaudio-plugin.desktop share/mimelnk/audio/x-pn-realaudio.desktop share/mimelnk/audio/x-scpls.desktop share/mimelnk/audio/x-speex.desktop @@ -5438,7 +5433,6 @@ share/services/knotify.desktop share/services/kresources/kabc/dir.desktop share/services/kresources/kabc/file.desktop share/services/kresources/kabc/ldapkio.desktop -share/services/kresources/kabc/net.desktop share/services/kresources/kabc_manager.desktop share/services/kspell_aspell.desktop share/services/kspell_ispell.desktop diff --git a/x11/kdelibs4/Makefile b/x11/kdelibs4/Makefile index 927d80a791f7..f72461ffa31d 100644 --- a/x11/kdelibs4/Makefile +++ b/x11/kdelibs4/Makefile @@ -8,7 +8,7 @@ PORTNAME= kdelibs PORTVERSION= ${KDE_VERSION} -PORTREVISION= 3 +PORTREVISION= 0 CATEGORIES= x11 kde ipv6 MASTER_SITES= ${MASTER_SITE_KDE} MASTER_SITE_SUBDIR= stable/${PORTVERSION:S/.0//}/src @@ -18,7 +18,6 @@ DIST_SUBDIR= KDE MAINTAINER= kde@FreeBSD.org COMMENT= Base set of libraries needed by KDE programs -BUILD_DEPENDS= mkfontdir:${X_CLIENTS_PORT} LIB_DEPENDS= IlmImf:${PORTSDIR}/graphics/OpenEXR \ art_lgpl_2.5:${PORTSDIR}/graphics/libart_lgpl \ artsc.0:${PORTSDIR}/audio/arts \ @@ -32,7 +31,6 @@ LIB_DEPENDS= IlmImf:${PORTSDIR}/graphics/OpenEXR \ xml2.5:${PORTSDIR}/textproc/libxml2 \ xslt.2:${PORTSDIR}/textproc/libxslt RUN_DEPENDS= kdehier>0:${PORTSDIR}/misc/kdehier \ - iceauth:${X_CLIENTS_PORT} \ ${FONTSCALE}:${X_FONTS_TTF_PORT} \ ${FONTENCOD}:${X_FONTS_ENCODINGS_PORT} \ ${LOCALBASE}/share/icons/hicolor/index.theme:${PORTSDIR}/misc/hicolor-icon-theme @@ -81,6 +79,14 @@ FONTENCOD= ${X11BASE}/lib/X11/fonts/encodings/encodings.dir LIB_DEPENDS+= bz2.1:${PORTSDIR}/archivers/bzip2 .endif # !exists(/usr/bin/bzip2) +.if ${X_WINDOW_SYSTEM:L} != xorg +BUILD_DEPENDS+= mkfontdir:${X_CLIENTS_PORT} +RUN_DEPENDS+= iceauth:${X_CLIENTS_PORT} +.else +BUILD_DEPENDS+= mkfontdir:${PORTSDIR}/x11-fonts/mkfontdir +RUN_DEPENDS+= iceauth:${PORTSDIR}/x11/iceauth +.endif + pre-configure: ${REINPLACE_CMD} "s,%%LOCALBASE%%,${LOCALBASE},g" ${WRKSRC}/kdeprint/cups/kmcupsmanager.cpp ${REINPLACE_CMD} -e "s,ac_cups_share_test=.*,ac_cups_share_test=\`\$$kde_cups_config --datadir\`,g" \ diff --git a/x11/kdelibs4/distinfo b/x11/kdelibs4/distinfo index c4f0914142c7..6a0bc34dc3fa 100644 --- a/x11/kdelibs4/distinfo +++ b/x11/kdelibs4/distinfo @@ -1,3 +1,3 @@ -MD5 (KDE/kdelibs-3.5.6.tar.bz2) = e4d137879a66e92b895b3de5413a61d8 -SHA256 (KDE/kdelibs-3.5.6.tar.bz2) = 06766202c6ae21277b7879f363ed88fde8016586ec8c94deb59be260f2231b5c -SIZE (KDE/kdelibs-3.5.6.tar.bz2) = 15509460 +MD5 (KDE/kdelibs-3.5.7.tar.bz2) = 50ed644f2ec91963570fe2b155652957 +SHA256 (KDE/kdelibs-3.5.7.tar.bz2) = 05bc5d0d18b787d964f7c45cc078b047d450d3ddc28b1bde839a26a2eda2c5d9 +SIZE (KDE/kdelibs-3.5.7.tar.bz2) = 15576038 diff --git a/x11/kdelibs4/files/patch-CVE-2007-1564-kdelibs-3.5.6 b/x11/kdelibs4/files/patch-CVE-2007-1564-kdelibs-3.5.6 deleted file mode 100644 index b026d67a3db0..000000000000 --- a/x11/kdelibs4/files/patch-CVE-2007-1564-kdelibs-3.5.6 +++ /dev/null @@ -1,81 +0,0 @@ ---- khtml/ecma/kjs_html.cpp -+++ khtml/ecma/kjs_html.cpp -@@ -1866,9 +1866,11 @@ Value KJS::HTMLElement::getValueProperty - getDOMNode(exec, frameElement.contentDocument()) : Undefined(); - case FrameContentWindow: { - KHTMLPart* part = static_cast<DOM::HTMLFrameElementImpl*>(frameElement.handle())->contentPart(); -- if (part) -- return Value(Window::retrieveWindow(part)); -- else -+ if (part) { -+ Window *w = Window::retrieveWindow(part); -+ if (w) -+ return Value(w); -+ } - return Undefined(); - } - case FrameFrameBorder: return String(frameElement.frameBorder()); -@@ -1899,9 +1901,11 @@ Value KJS::HTMLElement::getValueProperty - getDOMNode(exec, iFrame.contentDocument()) : Undefined(); - case IFrameContentWindow: { - KHTMLPart* part = static_cast<DOM::HTMLIFrameElementImpl*>(iFrame.handle())->contentPart(); -- if (part) -- return Value(Window::retrieveWindow(part)); -- else -+ if (part) { -+ Window *w = Window::retrieveWindow(part); -+ if (w) -+ return Value(w); -+ } - return Undefined(); - } - case IFrameFrameBorder: return String(iFrame.frameBorder()); ---- kioslave/ftp/ftp.cc -+++ kioslave/ftp/ftp.cc -@@ -58,6 +58,7 @@ - #include <kmimemagic.h> - #include <kmimetype.h> - #include <ksockaddr.h> -+#include <ksocketaddress.h> - #include <kio/ioslave_defaults.h> - #include <kio/slaveconfig.h> - #include <kremoteencoding.h> -@@ -835,7 +836,6 @@ bool Ftp::ftpSendCmd( const QCString& cm - return true; - } - -- - /* - * ftpOpenPASVDataConnection - set up data connection, using PASV mode - * -@@ -853,6 +853,8 @@ int Ftp::ftpOpenPASVDataConnection() - if (sa != NULL && sa->family() != PF_INET) - return ERR_INTERNAL; // no PASV for non-PF_INET connections - -+ const KInetSocketAddress *sin = static_cast<const KInetSocketAddress*>(sa); -+ - if (m_extControl & pasvUnknown) - return ERR_INTERNAL; // already tried and got "unknown command" - -@@ -886,14 +888,17 @@ int Ftp::ftpOpenPASVDataConnection() - } - - // Make hostname and port number ... -- QString host; -- host.sprintf("%d.%d.%d.%d", i[0], i[1], i[2], i[3]); - int port = i[4] << 8 | i[5]; - -+ // we ignore the host part on purpose for two reasons -+ // a) it might be wrong anyway -+ // b) it would make us being suceptible to a port scanning attack -+ - // now connect the data socket ... - m_data = new FtpSocket("PASV"); -- m_data->setAddress(host, port); -- kdDebug(7102) << "Connecting to " << host << " on port " << port << endl; -+ m_data->setAddress(sin->nodeName(), port); -+ -+ kdDebug(7102) << "Connecting to " << sin->nodeName() << " on port " << port << endl; - return m_data->connectSocket(connectTimeout(), false); - } - diff --git a/x11/kdelibs4/files/patch-kdelibs-kjs b/x11/kdelibs4/files/patch-kdelibs-kjs deleted file mode 100644 index ca4456320ee9..000000000000 --- a/x11/kdelibs4/files/patch-kdelibs-kjs +++ /dev/null @@ -1,38 +0,0 @@ ------------------------------------------------------------------------- -r645387 | porten | 2007-03-22 15:01:13 +0100 (Thu, 22 Mar 2007) | 4 lines - -substitute some of the invalid sequences with the standard replacement -char. this matches Mozilla but not IE which leaves them unchanged (or -throws an exception) - ------------------------------------------------------------------------- ---- kjs/function.cpp -+++ kjs/function.cpp -@@ -244,11 +244,15 @@ UString decodeURI(ExecState *exec, UStri - } - - // UTF-8 transform -+ const unsigned long replacementChar = 0xFFFD; - unsigned long V; - if (n == 2) { - unsigned long yyyyy = octets[0] & 0x1F; - unsigned long zzzzzz = octets[1] & 0x3F; - V = (yyyyy << 6) | zzzzzz; -+ // 2-byte sequence overlong for this value? -+ if (V < 0xFF) -+ V = replacementChar; - C = UChar((unsigned short)V); - } - else if (n == 3) { -@@ -256,6 +260,11 @@ UString decodeURI(ExecState *exec, UStri - unsigned long yyyyyy = octets[1] & 0x3F; - unsigned long zzzzzz = octets[2] & 0x3F; - V = (xxxx << 12) | (yyyyyy << 6) | zzzzzz; -+ // 3-byte sequence overlong for this value, -+ // an invalid value or UTF-16 surrogate? -+ if (V < 0x800 || V == 0xFFFE || V == 0xFFFF || -+ (V >= 0xD800 && V <= 0xDFFF)) -+ V = replacementChar; - C = UChar((unsigned short)V); - } - else { diff --git a/x11/kdelibs4/files/patch-post-3.5.6-kdelibs.diff b/x11/kdelibs4/files/patch-post-3.5.6-kdelibs.diff deleted file mode 100644 index 5b44a47ef7a5..000000000000 --- a/x11/kdelibs4/files/patch-post-3.5.6-kdelibs.diff +++ /dev/null @@ -1,20 +0,0 @@ ---- khtml/html/htmltokenizer.cpp -+++ khtml/html/htmltokenizer.cpp -@@ -316,7 +316,7 @@ void HTMLTokenizer::parseSpecial(Tokeniz - while ( !src.isEmpty() ) { - checkScriptBuffer(); - unsigned char ch = src->latin1(); -- if ( !scriptCodeResync && !brokenComments && !textarea && !xmp && !title && ch == '-' && scriptCodeSize >= 3 && !src.escaped() && QConstString( scriptCode+scriptCodeSize-3, 3 ).string() == "<!-" ) { -+ if ( !scriptCodeResync && !brokenComments && !textarea && !xmp && ch == '-' && scriptCodeSize >= 3 && !src.escaped() && QConstString( scriptCode+scriptCodeSize-3, 3 ).string() == "<!-" ) { - comment = true; - scriptCode[ scriptCodeSize++ ] = ch; - ++src; -@@ -495,7 +495,7 @@ void HTMLTokenizer::parseComment(Tokeniz - - if (canClose || handleBrokenComments || scriptEnd ){ - ++src; -- if ( !( script || xmp || textarea || style) ) { -+ if ( !( title || script || xmp || textarea || style) ) { - #ifdef COMMENTS_IN_DOM - checkScriptBuffer(); - scriptCode[ scriptCodeSize ] = 0; diff --git a/x11/kdelibs4/pkg-plist b/x11/kdelibs4/pkg-plist index 90183447454b..2f6befae1caa 100644 --- a/x11/kdelibs4/pkg-plist +++ b/x11/kdelibs4/pkg-plist @@ -144,7 +144,6 @@ include/kabc/resource.h include/kabc/resourcedir.h include/kabc/resourcefile.h include/kabc/resourceldapkio.h -include/kabc/resourcenet.h include/kabc/resourceselectdialog.h include/kabc/secrecy.h include/kabc/sortmode.h @@ -771,9 +770,6 @@ lib/kde3/kabc_file.so lib/kde3/kabc_ldapkio.a lib/kde3/kabc_ldapkio.la lib/kde3/kabc_ldapkio.so -lib/kde3/kabc_net.a -lib/kde3/kabc_net.la -lib/kde3/kabc_net.so lib/kde3/kabcformat_binary.a lib/kde3/kabcformat_binary.la lib/kde3/kabcformat_binary.so @@ -1008,10 +1004,6 @@ lib/libkabc_ldapkio.a lib/libkabc_ldapkio.la lib/libkabc_ldapkio.so lib/libkabc_ldapkio.so.1 -lib/libkabc_net.a -lib/libkabc_net.la -lib/libkabc_net.so -lib/libkabc_net.so.1 lib/libkatepartinterfaces.a lib/libkatepartinterfaces.la lib/libkatepartinterfaces.so @@ -1646,6 +1638,7 @@ share/apps/ksgmltools2/customization/de/entities/underArtisticLicense.docbook share/apps/ksgmltools2/customization/de/entities/underBSDLicense.docbook share/apps/ksgmltools2/customization/de/entities/underFDL.docbook share/apps/ksgmltools2/customization/de/entities/underGPL.docbook +share/apps/ksgmltools2/customization/de/entities/underLGPL.docbook share/apps/ksgmltools2/customization/de/entities/underX11License.docbook share/apps/ksgmltools2/customization/de/entities/update-doc.docbook share/apps/ksgmltools2/customization/de/lang.entities @@ -1792,6 +1785,7 @@ share/apps/ksgmltools2/customization/fr/entities/underArtisticLicense.docbook share/apps/ksgmltools2/customization/fr/entities/underBSDLicense.docbook share/apps/ksgmltools2/customization/fr/entities/underFDL.docbook share/apps/ksgmltools2/customization/fr/entities/underGPL.docbook +share/apps/ksgmltools2/customization/fr/entities/underLGPL.docbook share/apps/ksgmltools2/customization/fr/entities/underX11License.docbook share/apps/ksgmltools2/customization/fr/entities/update-doc.docbook share/apps/ksgmltools2/customization/fr/lang.entities @@ -5282,6 +5276,7 @@ share/mimelnk/audio/x-mpegurl.desktop share/mimelnk/audio/x-ms-wma.desktop share/mimelnk/audio/x-musepack.desktop share/mimelnk/audio/x-oggflac.desktop +share/mimelnk/audio/x-pn-realaudio-plugin.desktop share/mimelnk/audio/x-pn-realaudio.desktop share/mimelnk/audio/x-scpls.desktop share/mimelnk/audio/x-speex.desktop @@ -5438,7 +5433,6 @@ share/services/knotify.desktop share/services/kresources/kabc/dir.desktop share/services/kresources/kabc/file.desktop share/services/kresources/kabc/ldapkio.desktop -share/services/kresources/kabc/net.desktop share/services/kresources/kabc_manager.desktop share/services/kspell_aspell.desktop share/services/kspell_ispell.desktop diff --git a/x11/xscreensaver-kde/Makefile b/x11/xscreensaver-kde/Makefile index 6b2e2d956d4d..2c0b71b8cc39 100644 --- a/x11/xscreensaver-kde/Makefile +++ b/x11/xscreensaver-kde/Makefile @@ -7,7 +7,7 @@ PORTNAME= xscreensaver-kde PORTVERSION= ${KDE_VERSION} -PORTREVISION= 2 +PORTREVISION= 0 CATEGORIES= x11 kde MASTER_SITES= ${MASTER_SITE_KDE} MASTER_SITE_SUBDIR= stable/${PORTVERSION:S/.0//}/src diff --git a/x11/xscreensaver-kde/distinfo b/x11/xscreensaver-kde/distinfo index 232519e2f37e..d9890f844ead 100644 --- a/x11/xscreensaver-kde/distinfo +++ b/x11/xscreensaver-kde/distinfo @@ -1,3 +1,3 @@ -MD5 (KDE/kdeartwork-3.5.6.tar.bz2) = 4c817eab517fba30fce8f3b40a6f019d -SHA256 (KDE/kdeartwork-3.5.6.tar.bz2) = 4f7d5a7c3bdd53968a5f5af7f6daa2fbd57a11eeb2d670b16977087b2ff9aab2 -SIZE (KDE/kdeartwork-3.5.6.tar.bz2) = 16569318 +MD5 (KDE/kdeartwork-3.5.7.tar.bz2) = 4ce75cd6f98b8662e450be735bc0b060 +SHA256 (KDE/kdeartwork-3.5.7.tar.bz2) = 4c54da23ce3858037ebff95b7d263ab88488b3a25aec6b459b1943f7035cd8f3 +SIZE (KDE/kdeartwork-3.5.7.tar.bz2) = 16577346 |