aboutsummaryrefslogtreecommitdiff
path: root/x11/kde4-workspace
diff options
context:
space:
mode:
authorMichael Nottebrock <lofi@FreeBSD.org>2007-07-04 10:25:00 +0000
committerMichael Nottebrock <lofi@FreeBSD.org>2007-07-04 10:25:00 +0000
commit961141fb14b688f13c92a4be6bbc4ba0ab9cf51b (patch)
tree8d33a723594dd3d8d48dfd3dcd1ded76eb0a52c0 /x11/kde4-workspace
parent266731846b6f73f86b69daad7127f89ecc40fac2 (diff)
downloadports-961141fb14b688f13c92a4be6bbc4ba0ab9cf51b.tar.gz
ports-961141fb14b688f13c92a4be6bbc4ba0ab9cf51b.zip
Notes
Diffstat (limited to 'x11/kde4-workspace')
-rw-r--r--x11/kde4-workspace/Makefile14
-rw-r--r--x11/kde4-workspace/distinfo6
-rw-r--r--x11/kde4-workspace/files/extrapatch-kioslave_media_mediamanager-halbackend.cpp545
-rw-r--r--x11/kde4-workspace/files/extrapatch-kioslave_media_mounthelper-kio_media_mounthelper.cpp49
-rw-r--r--x11/kde4-workspace/files/patch-kdm-config.def10
-rw-r--r--x11/kde4-workspace/files/patch-plugin-keyboard-handler.diff77
-rw-r--r--x11/kde4-workspace/files/pkg-message.in2
-rw-r--r--x11/kde4-workspace/pkg-plist11
8 files changed, 530 insertions, 184 deletions
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