*** kdebase/kioslave/media/mediamanager/halbackend.cpp.orig	2010-09-30 00:24:28.000000000 +0200
--- kdebase/kioslave/media/mediamanager/halbackend.cpp	2011-07-20 16:39:40.933056051 +0200
***************
*** 873,878 ****
--- 873,905 ----
      s_HALBackend->DeviceCondition(udi, condition_name);
  }
  
+ TQStringList HALBackend::getHALmountoptions(TQString udi)
+ {
+     const char*   _ppt_string;
+     LibHalVolume* volume;
+     LibHalDrive* drive;
+ 
+     TQString _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 TQString::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 = TQString(_ppt_string ? _ppt_string : "");
+ 
+    return TQStringList::split(",",_ppt_QString);
+ }
+ 
  TQStringList HALBackend::mountoptions(const TQString &name)
  {
      const Medium* medium = m_mediaList.findById(name);
***************
*** 1472,1481 ****
--- 1499,1524 ----
              soptions << TQString("data=ordered");
      }
  
+     TQStringList hal_mount_options = getHALmountoptions(medium->id());
+     for (TQValueListIterator<TQString> 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 (TQStringList::ConstIterator it = soptions.begin(); it != soptions.end(); ++it, ++noptions)
+     {
          options[noptions] = (*it).latin1();
+         kdDebug()<<"Option: "<<*it<<endl;
+     }
      options[noptions] = NULL;
  
      TQString qerror = i18n("Cannot mount encrypted drives!");
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
 				);
 
+	TQStringList getHALmountoptions(QString udi);
 /* HAL and DBus structures */
 private:
 	/**