Diff between 26f20b39af69d847b4810c9f3c3078f9a5dbca34 and 814b06ed671f35fb8480bf632cc3cd47873742f7

Changed Files

File Additions Deletions Status
gobex/gobex-packet.c +22 -0 modified
gobex/gobex-packet.h +2 -0 modified

Full Patch

diff --git a/gobex/gobex-packet.c b/gobex/gobex-packet.c
index e55b205..29a6aa2 100644
--- a/gobex/gobex-packet.c
+++ b/gobex/gobex-packet.c
@@ -64,6 +64,28 @@ guint8 g_obex_packet_get_operation(GObexPacket *pkt, gboolean *final)
 	return pkt->opcode;
 }
 
+GObexHeader *g_obex_packet_find_header(GObexPacket *pkt, guint8 id)
+{
+	GSList *l;
+
+	for (l = pkt->headers; l != NULL; l = g_slist_next(l)) {
+		GObexHeader *hdr = l->data;
+
+		if (g_obex_header_get_id(hdr) == id)
+			return hdr;
+	}
+
+	return NULL;
+}
+
+gboolean g_obex_packet_prepend_header(GObexPacket *pkt, GObexHeader *header)
+{
+	pkt->headers = g_slist_prepend(pkt->headers, header);
+	pkt->hlen += g_obex_header_get_length(header);
+
+	return TRUE;
+}
+
 gboolean g_obex_packet_add_header(GObexPacket *pkt, GObexHeader *header)
 {
 	pkt->headers = g_slist_append(pkt->headers, header);
diff --git a/gobex/gobex-packet.h b/gobex/gobex-packet.h
index 16dcf0f..0d38c1d 100644
--- a/gobex/gobex-packet.h
+++ b/gobex/gobex-packet.h
@@ -82,6 +82,8 @@ typedef struct _GObexPacket GObexPacket;
 
 GObexHeader *g_obex_packet_get_header(GObexPacket *pkt, guint8 id);
 guint8 g_obex_packet_get_operation(GObexPacket *pkt, gboolean *final);
+GObexHeader *g_obex_packet_find_header(GObexPacket *pkt, guint8 id);
+gboolean g_obex_packet_prepend_header(GObexPacket *pkt, GObexHeader *header);
 gboolean g_obex_packet_add_header(GObexPacket *pkt, GObexHeader *header);
 gboolean g_obex_packet_set_data(GObexPacket *pkt, const void *data, gsize len,
 						GObexDataPolicy data_policy);