[Swfdec-commits] swfdec/swfdec_buffer.c swfdec/swfdec_buffer.h swfdec/swfdec_loader.c swfdec/swfdec_loader_internal.h swfdec/swfdec_load_object.c swfdec/swfdec_policy_file.c

Benjamin Otte company at kemper.freedesktop.org
Thu Jan 31 06:36:59 PST 2008


 swfdec/swfdec_buffer.c          |   71 +++++++++++++++++++++++++++++++++++++
 swfdec/swfdec_buffer.h          |    1 
 swfdec/swfdec_load_object.c     |    6 +--
 swfdec/swfdec_loader.c          |   75 ----------------------------------------
 swfdec/swfdec_loader_internal.h |    2 -
 swfdec/swfdec_policy_file.c     |    2 -
 6 files changed, 75 insertions(+), 82 deletions(-)

New commits:
commit d53c8bd193725efdafcc6bdf95d6222db5ad2f22
Author: Benjamin Otte <otte at gnome.org>
Date:   Thu Jan 31 15:36:32 2008 +0100

    swfdec_loader_get_text() => swfdec_buffer_queue_pull_text()
    
    We need that API for different cases. But I'm not sure we want to keep this
    function. We might want swfdec_buffer_to_string() or similar.

diff --git a/swfdec/swfdec_buffer.c b/swfdec/swfdec_buffer.c
index 3420d10..9ad80fb 100644
--- a/swfdec/swfdec_buffer.c
+++ b/swfdec/swfdec_buffer.c
@@ -639,3 +639,74 @@ swfdec_buffer_queue_unref (SwfdecBufferQueue * queue)
   }
 }
 
+typedef struct {
+  const char		*name;
+  guint			length;
+  guchar		data[4];
+} ByteOrderMark;
+
+static ByteOrderMark boms[] = {
+  { "UTF-8", 3, {0xEF, 0xBB, 0xBF, 0} },
+  { "UTF-16BE", 2, {0xFE, 0xFF, 0, 0} },
+  { "UTF-16LE", 2, {0xFF, 0xFE, 0, 0} },
+  { "UTF-8", 0, {0, 0, 0, 0} }
+};
+
+char *
+swfdec_buffer_queue_pull_text (SwfdecBufferQueue *queue, guint version)
+{
+  SwfdecBuffer *buffer;
+  char *text;
+  guint size, i, j;
+
+  size = swfdec_buffer_queue_get_depth (queue);
+  if (size == 0) {
+    SWFDEC_LOG ("empty loader, returning empty string");
+    return g_strdup ("");
+  }
+
+  buffer = swfdec_buffer_queue_pull (queue, size);
+  g_assert (buffer);
+
+  if (version > 5) {
+    for (i = 0; boms[i].length > 0; i++) {
+      // FIXME: test what happens if we have BOM and nothing else
+      if (size < boms[i].length)
+	continue;
+
+      for (j = 0; j < boms[i].length; j++) {
+	if (buffer->data[j] != boms[i].data[j])
+	  break;
+      }
+      if (j == boms[i].length)
+	break;
+    }
+
+    if (!strcmp (boms[i].name, "UTF-8")) {
+      if (!g_utf8_validate ((char *)buffer->data + boms[i].length,
+	    size - boms[i].length, NULL)) {
+	SWFDEC_ERROR ("downloaded data is not valid UTF-8");
+	text = NULL;
+      } else {
+	text =
+	  g_strndup ((char *)buffer->data + boms[i].length,
+	      size - boms[i].length);
+      }
+    } else {
+      text = g_convert ((char *)buffer->data + boms[i].length,
+	  size - boms[i].length, "UTF-8", boms[i].name, NULL, NULL, NULL);
+      if (text == NULL)
+	SWFDEC_ERROR ("downloaded data is not valid %s", boms[i].name);
+    }
+  } else {
+    text = g_convert ((char *)buffer->data, size, "UTF-8", "LATIN1", NULL,
+	NULL, NULL);
+    if (text == NULL)
+      SWFDEC_ERROR ("downloaded data is not valid LATIN1");
+  }
+
+  swfdec_buffer_unref (buffer);
+
+  return text;
+}
+
diff --git a/swfdec/swfdec_buffer.h b/swfdec/swfdec_buffer.h
index 248f425..84e4bd6 100644
--- a/swfdec/swfdec_buffer.h
+++ b/swfdec/swfdec_buffer.h
@@ -77,6 +77,7 @@ void swfdec_buffer_queue_push (SwfdecBufferQueue * queue,
     SwfdecBuffer * buffer);
 SwfdecBuffer *swfdec_buffer_queue_pull (SwfdecBufferQueue * queue, guint length);
 SwfdecBuffer *swfdec_buffer_queue_pull_buffer (SwfdecBufferQueue * queue);
+char *swfdec_buffer_queue_pull_text (SwfdecBufferQueue *queue, guint version);
 SwfdecBuffer *swfdec_buffer_queue_peek (SwfdecBufferQueue * queue, guint length);
 SwfdecBuffer *swfdec_buffer_queue_peek_buffer (SwfdecBufferQueue * queue);
 SwfdecBufferQueue *swfdec_buffer_queue_ref (SwfdecBufferQueue * queue);
diff --git a/swfdec/swfdec_load_object.c b/swfdec/swfdec_load_object.c
index 0e6e58d..d18a372 100644
--- a/swfdec/swfdec_load_object.c
+++ b/swfdec/swfdec_load_object.c
@@ -80,18 +80,16 @@ static void
 swfdec_load_object_stream_target_close (SwfdecStreamTarget *target,
     SwfdecStream *stream)
 {
-  SwfdecLoader *loader = SWFDEC_LOADER (stream);
   SwfdecLoadObject *load_object = SWFDEC_LOAD_OBJECT (target);
   char *text;
 
   // get text
-  text =
-    swfdec_loader_get_text (loader, load_object->version);
+  text = swfdec_buffer_queue_pull_text (swfdec_stream_get_queue (stream), load_object->version);
 
   /* break reference to the loader */
   swfdec_stream_set_target (stream, NULL);
   load_object->loader = NULL;
-  g_object_unref (loader);
+  g_object_unref (stream);
 
   /* call finish */
   swfdec_sandbox_use (load_object->sandbox);
diff --git a/swfdec/swfdec_loader.c b/swfdec/swfdec_loader.c
index 9868eac..9b96681 100644
--- a/swfdec/swfdec_loader.c
+++ b/swfdec/swfdec_loader.c
@@ -366,78 +366,3 @@ swfdec_loader_data_type_get_extension (SwfdecLoaderDataType type)
   }
 }
 
-typedef struct {
-  const char		*name;
-  guint			length;
-  guchar		data[4];
-} ByteOrderMark;
-
-static ByteOrderMark boms[] = {
-  { "UTF-8", 3, {0xEF, 0xBB, 0xBF, 0} },
-  { "UTF-16BE", 2, {0xFE, 0xFF, 0, 0} },
-  { "UTF-16LE", 2, {0xFF, 0xFE, 0, 0} },
-  { "UTF-8", 0, {0, 0, 0, 0} }
-};
-
-char *
-swfdec_loader_get_text (SwfdecLoader *loader, guint version)
-{
-  SwfdecBufferQueue *queue;
-  SwfdecBuffer *buffer;
-  char *text;
-  guint size, i, j;
-
-  /* get the text from the loader */
-  queue = swfdec_stream_get_queue (SWFDEC_STREAM (loader));
-  size = swfdec_buffer_queue_get_depth (queue);
-  if (size == 0) {
-    SWFDEC_LOG ("empty loader, returning empty string");
-    return g_strdup ("");
-  }
-
-  buffer = swfdec_buffer_queue_peek (queue, size);
-  if (!buffer)
-    return NULL;
-
-  if (version > 5) {
-    for (i = 0; boms[i].length > 0; i++) {
-      // FIXME: test what happens if we have BOM and nothing else
-      if (size < boms[i].length)
-	continue;
-
-      for (j = 0; j < boms[i].length; j++) {
-	if (buffer->data[j] != boms[i].data[j])
-	  break;
-      }
-      if (j == boms[i].length)
-	break;
-    }
-
-    if (!strcmp (boms[i].name, "UTF-8")) {
-      if (!g_utf8_validate ((char *)buffer->data + boms[i].length,
-	    size - boms[i].length, NULL)) {
-	SWFDEC_ERROR ("downloaded data is not valid UTF-8");
-	text = NULL;
-      } else {
-	text =
-	  g_strndup ((char *)buffer->data + boms[i].length,
-	      size - boms[i].length);
-      }
-    } else {
-      text = g_convert ((char *)buffer->data + boms[i].length,
-	  size - boms[i].length, "UTF-8", boms[i].name, NULL, NULL, NULL);
-      if (text == NULL)
-	SWFDEC_ERROR ("downloaded data is not valid %s", boms[i].name);
-    }
-  } else {
-    text = g_convert ((char *)buffer->data, size, "UTF-8", "LATIN1", NULL,
-	NULL, NULL);
-    if (text == NULL)
-      SWFDEC_ERROR ("downloaded data is not valid LATIN1");
-  }
-
-  swfdec_buffer_unref (buffer);
-
-  return text;
-}
-
diff --git a/swfdec/swfdec_loader_internal.h b/swfdec/swfdec_loader_internal.h
index c19ba9f..88d4dbf 100644
--- a/swfdec/swfdec_loader_internal.h
+++ b/swfdec/swfdec_loader_internal.h
@@ -35,8 +35,6 @@ void			swfdec_stream_set_target	(SwfdecStream *		stream,
 /* swfdec_loader.c */
 void			swfdec_loader_set_data_type	(SwfdecLoader *		loader,
 							 SwfdecLoaderDataType	type);
-char *			swfdec_loader_get_text		(SwfdecLoader *		loader,
-							 guint			version);
 
 /* swfdec_socket.c */
 void			swfdec_socket_send		(SwfdecSocket *		sock,
diff --git a/swfdec/swfdec_policy_file.c b/swfdec/swfdec_policy_file.c
index 890494d..842091a 100644
--- a/swfdec/swfdec_policy_file.c
+++ b/swfdec/swfdec_policy_file.c
@@ -174,7 +174,7 @@ swfdec_policy_file_target_close (SwfdecStreamTarget *target,
   char *text;
 
   if (SWFDEC_IS_LOADER (stream)) {
-    text = swfdec_loader_get_text (SWFDEC_LOADER (stream), 8);
+    text = swfdec_buffer_queue_pull_text (swfdec_stream_get_queue (stream), 8);
   } else {
     SWFDEC_FIXME ("rewrite swfdec_loader_get_text() to swfdec_buffer_queue_get_text()");
     text = NULL;


More information about the Swfdec-commits mailing list