summaryrefslogtreecommitdiff
path: root/libsoup/content-sniffer
diff options
context:
space:
mode:
authorPatrick Griffis <pgriffis@igalia.com>2020-08-31 17:24:21 -0500
committerPatrick Griffis <pgriffis@igalia.com>2020-09-19 15:41:25 -0700
commit4b43e158799689666bcbe186045ddee356601f1c (patch)
tree7034aeb51657f2326ce1d7de3876a974b76fb711 /libsoup/content-sniffer
parent73cd3c7dc4207cacf5eb4311584201bf7133ff0f (diff)
downloadlibsoup-4b43e158799689666bcbe186045ddee356601f1c.tar.gz
Replace SoupBuffer with GBytes
Diffstat (limited to 'libsoup/content-sniffer')
-rw-r--r--libsoup/content-sniffer/soup-content-sniffer-stream.c6
-rw-r--r--libsoup/content-sniffer/soup-content-sniffer.c44
-rw-r--r--libsoup/content-sniffer/soup-content-sniffer.h4
3 files changed, 30 insertions, 24 deletions
diff --git a/libsoup/content-sniffer/soup-content-sniffer-stream.c b/libsoup/content-sniffer/soup-content-sniffer-stream.c
index 4b026e01..465648e5 100644
--- a/libsoup/content-sniffer/soup-content-sniffer-stream.c
+++ b/libsoup/content-sniffer/soup-content-sniffer-stream.c
@@ -112,7 +112,7 @@ read_and_sniff (GInputStream *stream, gboolean blocking,
SoupContentSnifferStreamPrivate *priv = soup_content_sniffer_stream_get_instance_private (sniffer);
gssize nread;
GError *my_error = NULL;
- SoupBuffer *buf;
+ GBytes *buf;
do {
nread = g_pollable_stream_read (G_FILTER_INPUT_STREAM (stream)->base_stream,
@@ -140,11 +140,11 @@ read_and_sniff (GInputStream *stream, gboolean blocking,
}
/* Sniff, then return the data */
- buf = soup_buffer_new (SOUP_MEMORY_TEMPORARY, priv->buffer, priv->buffer_nread);
+ buf = g_bytes_new (priv->buffer, priv->buffer_nread);
priv->sniffed_type =
soup_content_sniffer_sniff (priv->sniffer, priv->msg, buf,
&priv->sniffed_params);
- soup_buffer_free (buf);
+ g_bytes_unref (buf);
priv->sniffing = FALSE;
return priv->buffer_nread;
diff --git a/libsoup/content-sniffer/soup-content-sniffer.c b/libsoup/content-sniffer/soup-content-sniffer.c
index 14ff38ae..f5653417 100644
--- a/libsoup/content-sniffer/soup-content-sniffer.c
+++ b/libsoup/content-sniffer/soup-content-sniffer.c
@@ -86,12 +86,14 @@ typedef struct {
static char*
sniff_media (SoupContentSniffer *sniffer,
- SoupBuffer *buffer,
+ GBytes *buffer,
SoupContentSnifferMediaPattern table[],
int table_length)
{
- const guchar *resource = (const guchar *)buffer->data;
- guint resource_length = MIN (512, buffer->length);
+
+ gsize resource_length;
+ const guchar *resource = g_bytes_get_data (buffer, &resource_length);
+ resource_length = MIN (512, resource_length);
int i;
for (i = 0; i < table_length; i++) {
@@ -168,7 +170,7 @@ static SoupContentSnifferMediaPattern image_types_table[] = {
};
static char*
-sniff_images (SoupContentSniffer *sniffer, SoupBuffer *buffer)
+sniff_images (SoupContentSniffer *sniffer, GBytes *buffer)
{
return sniff_media (sniffer,
buffer,
@@ -223,10 +225,11 @@ static SoupContentSnifferMediaPattern audio_video_types_table[] = {
};
static gboolean
-sniff_mp4 (SoupContentSniffer *sniffer, SoupBuffer *buffer)
+sniff_mp4 (SoupContentSniffer *sniffer, GBytes *buffer)
{
- const char *resource = (const char *)buffer->data;
- guint resource_length = MIN (512, buffer->length);
+ gsize resource_length;
+ const char *resource = g_bytes_get_data (buffer, &resource_length);
+ resource_length = MIN (512, resource_length);
guint32 box_size = *((guint32*)resource);
guint i;
@@ -255,7 +258,7 @@ sniff_mp4 (SoupContentSniffer *sniffer, SoupBuffer *buffer)
}
static char*
-sniff_audio_video (SoupContentSniffer *sniffer, SoupBuffer *buffer)
+sniff_audio_video (SoupContentSniffer *sniffer, GBytes *buffer)
{
char *sniffed_type;
@@ -485,12 +488,13 @@ static char byte_looks_binary[] = {
/* HTML5: 2.7.4 Content-Type sniffing: unknown type */
static char*
-sniff_unknown (SoupContentSniffer *sniffer, SoupBuffer *buffer,
+sniff_unknown (SoupContentSniffer *sniffer, GBytes *buffer,
gboolean sniff_scriptable)
{
char *sniffed_type = NULL;
- const guchar *resource = (const guchar *)buffer->data;
- guint resource_length = MIN (512, buffer->length);
+ gsize resource_length;
+ const guchar *resource = g_bytes_get_data (buffer, &resource_length);
+ resource_length = MIN (512, resource_length);
guint i;
for (i = 0; i < G_N_ELEMENTS (types_table); i++) {
@@ -574,10 +578,11 @@ sniff_unknown (SoupContentSniffer *sniffer, SoupBuffer *buffer,
/* MIMESNIFF: 7.2 Sniffing a mislabeled binary resource */
static char*
-sniff_text_or_binary (SoupContentSniffer *sniffer, SoupBuffer *buffer)
+sniff_text_or_binary (SoupContentSniffer *sniffer, GBytes *buffer)
{
- const guchar *resource = (const guchar *)buffer->data;
- int resource_length = MIN (512, buffer->length);
+ gsize resource_length;
+ const guchar *resource = g_bytes_get_data (buffer, &resource_length);
+ resource_length = MIN (512, resource_length);
gboolean looks_binary = FALSE;
int i;
@@ -628,10 +633,11 @@ skip_insignificant_space (const char *resource, int *pos, int resource_length)
}
static char*
-sniff_feed_or_html (SoupContentSniffer *sniffer, SoupBuffer *buffer)
+sniff_feed_or_html (SoupContentSniffer *sniffer, GBytes *buffer)
{
- const char *resource = (const char *)buffer->data;
- int resource_length = MIN (512, buffer->length);
+ gsize resource_length;
+ const char *resource = g_bytes_get_data (buffer, &resource_length);
+ resource_length = MIN (512, resource_length);
int pos = 0;
if (resource_length < 3)
@@ -762,7 +768,7 @@ sniff_feed_or_html (SoupContentSniffer *sniffer, SoupBuffer *buffer)
static char *
soup_content_sniffer_real_sniff (SoupContentSniffer *sniffer, SoupMessage *msg,
- SoupBuffer *buffer, GHashTable **params)
+ GBytes *buffer, GHashTable **params)
{
const char *content_type;
const char *x_content_type_options;
@@ -915,7 +921,7 @@ soup_content_sniffer_new (void)
*/
char *
soup_content_sniffer_sniff (SoupContentSniffer *sniffer,
- SoupMessage *msg, SoupBuffer *buffer,
+ SoupMessage *msg, GBytes *buffer,
GHashTable **params)
{
g_return_val_if_fail (SOUP_IS_CONTENT_SNIFFER (sniffer), NULL);
diff --git a/libsoup/content-sniffer/soup-content-sniffer.h b/libsoup/content-sniffer/soup-content-sniffer.h
index cc9aa2b9..6931b6e4 100644
--- a/libsoup/content-sniffer/soup-content-sniffer.h
+++ b/libsoup/content-sniffer/soup-content-sniffer.h
@@ -19,7 +19,7 @@ struct _SoupContentSnifferClass {
char* (*sniff) (SoupContentSniffer *sniffer,
SoupMessage *msg,
- SoupBuffer *buffer,
+ GBytes *buffer,
GHashTable **params);
gsize (*get_buffer_size) (SoupContentSniffer *sniffer);
@@ -32,7 +32,7 @@ SoupContentSniffer *soup_content_sniffer_new (void);
SOUP_AVAILABLE_IN_2_28
char *soup_content_sniffer_sniff (SoupContentSniffer *sniffer,
SoupMessage *msg,
- SoupBuffer *buffer,
+ GBytes *buffer,
GHashTable **params);
SOUP_AVAILABLE_IN_2_28
gsize soup_content_sniffer_get_buffer_size (SoupContentSniffer *sniffer);