msmith - in flumotion/trunk: . flumotion/component/producers/playlist

flumotion-commit at lists.fluendo.com flumotion-commit at lists.fluendo.com
Thu Jun 7 12:55:00 CEST 2007


Author: msmith
Date: Thu Jun  7 12:54:57 2007
New Revision: 5126

Modified:
   flumotion/trunk/ChangeLog
   flumotion/trunk/flumotion/component/producers/playlist/playlistparser.py
Log:
        * flumotion/component/producers/playlist/playlistparser.py:
          Handle non-ascii filenames properly. Assumes a UTF-8 filesystem.



Modified: flumotion/trunk/ChangeLog
==============================================================================
--- flumotion/trunk/ChangeLog	(original)
+++ flumotion/trunk/ChangeLog	Thu Jun  7 12:54:57 2007
@@ -1,3 +1,8 @@
+2007-06-07  Michael Smith <msmith at fluendo.com>
+
+	* flumotion/component/producers/playlist/playlistparser.py:
+	  Handle non-ascii filenames properly. Assumes a UTF-8 filesystem.
+
 2007-06-07  Zaheer Abbas Merali  <zaheerabbas at merali dot org>
 
 	* flumotion/component/combiners/switch/switch.py (Switch.init,

Modified: flumotion/trunk/flumotion/component/producers/playlist/playlistparser.py
==============================================================================
--- flumotion/trunk/flumotion/component/producers/playlist/playlistparser.py	(original)
+++ flumotion/trunk/flumotion/component/producers/playlist/playlistparser.py	Thu Jun  7 12:54:57 2007
@@ -302,11 +302,28 @@
                 self.debug("Parsing entry")
                 self._parsePlaylistEntry(parser, child, id)
 
+    # A simplified private version of this code from fxml without the 
+    # undesirable unicode->str conversions.
+    def _parseAttributes(self, node, required, optional):
+        out = []
+        for k in required:
+            if node.hasAttribute(k):
+                out.append(node.getAttribute(k))
+            else:
+                raise fxml.ParserError("Missing required attribute %s" % k)
+
+        for k in optional:
+            if node.hasAttribute(k):
+                out.append(node.getAttribute(k))
+            else:
+                out.append(None)
+        return out
+
     def _parsePlaylistEntry(self, parser, entry, id):
         mandatory = ['filename', 'time']
         optional = ['duration', 'offset']
 
-        (filename, timestamp, duration, offset) = parser.parseAttributes(
+        (filename, timestamp, duration, offset) = self._parseAttributes(
             entry, mandatory, optional)
 
         if duration is not None:
@@ -317,6 +334,9 @@
 
         timestamp = self._parseTimestamp(timestamp)
 
+        # Assume UTF-8 filesystem.
+        filename = filename.encode("UTF-8")
+
         self.addItemToPlaylist(filename, timestamp, duration, offset, id)
 
     def _parseTimestamp(self, ts):


More information about the flumotion-commit mailing list