Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37877143
en ru br
Репозитории ALT
5.1: 3.5.10-alt20.M51.2
4.1: 3.5.10-alt16.M41.1
4.0: 3.5.9-alt1.M40.1
3.0: 3.4.1-alt12
+updates:3.4.1-alt12.1.M30
+backports:3.5.6-alt7.0.M30
www.altlinux.org/Changes

Группа :: Графические оболочки/KDE
Пакет: kdebase

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: 40_use_hal_mountoptions.diff
Скачать


diff -r -u kdebase-3.5.5a.dfsg.1.orig/kioslave/media/mediamanager/halbackend.cpp kdebase-3.5.5a.dfsg.1/kioslave/media/mediamanager/halbackend.cpp
--- kdebase-3.5.5a.dfsg.1.orig/kioslave/media/mediamanager/halbackend.cpp	2007-01-25 12:34:07.805485000 +0300
+++ kdebase-3.5.5a.dfsg.1/kioslave/media/mediamanager/halbackend.cpp	2007-01-25 16:46:59.118184525 +0300
@@ -745,6 +745,33 @@
     s_HALBackend->DeviceCondition(udi, condition_name);
 }
 
+QStringList HALBackend::getHALmountoptions(QString udi)
+{
+    const char*   _ppt_string;
+    LibHalVolume* volume;
+    LibHalDrive* drive;
+
+    QString _ppt_QString;
+    
+    volume = libhal_volume_from_udi( m_halContext, udi.latin1() );
+    if( volume )
+        drive = libhal_drive_from_udi( m_halContext, libhal_volume_get_storage_device_udi( volume ) );
+    else
+        drive = libhal_drive_from_udi( m_halContext, udi.latin1() );
+
+    if( !drive )
+	    return QString::null;
+
+    if( volume )
+       _ppt_string = libhal_volume_policy_get_mount_options ( drive, volume, NULL );
+    else
+       _ppt_string = libhal_drive_policy_get_mount_options ( drive, NULL );
+
+    _ppt_QString = QString(_ppt_string ? _ppt_string : "");
+
+   return QStringList::split(",",_ppt_QString);
+}
+
 QStringList HALBackend::mountoptions(const QString &name)
 {
     const Medium* medium = m_mediaList.findById(name);
@@ -1069,10 +1096,25 @@
             soptions << QString("data=ordered");
     }
 
+    QStringList hal_mount_options = getHALmountoptions(medium->id());
+    for (QValueListIterator<QString> it=hal_mount_options.begin();it!=hal_mount_options.end();it++)
+    {
+    	soptions << *it;
+	kdDebug()<<"HALOption: "<<*it<<endl;
+	if ((*it).startsWith("iocharset="))
+	{
+	    soptions.remove("utf8");
+	    kdDebug()<<"\"iocharset=\" found. Removing \"utf8\" from options."<<endl;
+	}
+    }
+
     const char **options = new const char*[soptions.size() + 1];
     uint noptions = 0;
     for (QStringList::ConstIterator it = soptions.begin(); it != soptions.end(); ++it, ++noptions)
+    {
         options[noptions] = (*it).latin1();
+        kdDebug()<<"Option: "<<*it<<endl;
+    }
     options[noptions] = NULL;
 
     QString qerror = mount_priv(medium->id().latin1(), mount_point.utf8(), options, noptions, dbus_connection);
diff -r -u kdebase-3.5.5a.dfsg.1.orig/kioslave/media/mediamanager/halbackend.h kdebase-3.5.5a.dfsg.1/kioslave/media/mediamanager/halbackend.h
--- kdebase-3.5.5a.dfsg.1.orig/kioslave/media/mediamanager/halbackend.h	2007-01-25 12:34:07.133446000 +0300
+++ kdebase-3.5.5a.dfsg.1/kioslave/media/mediamanager/halbackend.h	2007-01-25 16:33:54.413638693 +0300
@@ -192,6 +192,7 @@
 				const char* message
 				);
 
+	QStringList getHALmountoptions(QString udi);
 /* HAL and DBus structures */
 private:
 	/**
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin