diff src/protocols/msn/page.c @ 8646:1e211dde3cae

[gaim-migrate @ 9398] Added a patch by shx to clean up the message-handling code and split the command stuff from it, among a few other things. Also, I fixed a crash in message parsing, which I think may close a couple bug reports. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Tue, 13 Apr 2004 04:08:22 +0000
parents 06f57183e29f
children 9e5a709c30a8
line wrap: on
line diff
--- a/src/protocols/msn/page.c	Tue Apr 13 03:53:37 2004 +0000
+++ b/src/protocols/msn/page.c	Tue Apr 13 04:08:22 2004 +0000
@@ -56,25 +56,11 @@
 	return page;
 }
 
-MsnPage *
-msn_page_new_from_str(MsnSession *session, const char *str)
-{
-	g_return_val_if_fail(str != NULL, NULL);
-
-	return NULL;
-}
-
 void
 msn_page_destroy(MsnPage *page)
 {
 	g_return_if_fail(page != NULL);
 
-	if (page->sender != NULL)
-		msn_user_unref(page->sender);
-
-	if (page->receiver != NULL)
-		msn_user_unref(page->receiver);
-
 	if (page->body != NULL)
 		g_free(page->body);
 
@@ -88,138 +74,37 @@
 }
 
 char *
-msn_page_build_string(const MsnPage *page)
+msn_page_gen_payload(const MsnPage *page, size_t *ret_size)
 {
-	char *page_start;
 	char *str;
-	char buf[MSN_BUF_LEN];
-	int len;
 
-	/*
-	 * Okay, how we do things here is just bad. I don't like writing to
-	 * a static buffer and then copying to the string. Unfortunately,
-	 * just trying to append to the string is causing issues.. Such as
-	 * the string you're appending to being erased. Ugh. So, this is
-	 * good enough for now.
-	 *
-	 *     -- ChipX86
-	 */
 	g_return_val_if_fail(page != NULL, NULL);
 
-	if (msn_page_is_incoming(page)) {
-		/* We don't know this yet :) */
-		return NULL;
-	}
-	else {
-		MsnUser *receiver = msn_page_get_receiver(page);
+	str =
+		g_strdup_printf("<TEXT xml:space=\"preserve\" enc=\"utf-8\">%s</TEXT>",
+						msn_page_get_body(page));
 
-		g_snprintf(buf, sizeof(buf), "PGD %d %s 1 %d\r\n",
-				   msn_page_get_transaction_id(page),
-				   msn_user_get_passport(receiver),
-				   (int)page->size);
+	if (page->size != strlen(str))
+	{
+		gaim_debug(GAIM_DEBUG_ERROR, "msn",
+				   "Outgoing page size (%d) and string length (%d) "
+				   "do not match!\n", page->size, strlen(str));
 	}
 
-	len = strlen(buf) + page->size + 1;
-
-	str = g_new0(char, len);
-
-	g_strlcpy(str, buf, len);
-
-	page_start = str + strlen(str);
-
-	g_snprintf(buf, sizeof(buf),
-			   "<TEXT xml:space=\"preserve\" enc=\"utf-8\">%s</TEXT>",
-			   msn_page_get_body(page));
-
-	g_strlcat(str, buf, len);
-
-	if (page->size != strlen(page_start)) {
-		gaim_debug(GAIM_DEBUG_ERROR, "msn",
-				   "Outgoing page size (%d) and string length (%d) "
-				   "do not match!\n", page->size, strlen(page_start));
-	}
+	if (ret_size != NULL)
+		*ret_size = page->size - 1;
 
 	return str;
 }
 
-gboolean
-msn_page_is_outgoing(const MsnPage *page)
-{
-	g_return_val_if_fail(page != NULL, FALSE);
-
-	return !page->incoming;
-}
-
-gboolean
-msn_page_is_incoming(const MsnPage *page)
-{
-	g_return_val_if_fail(page != NULL, FALSE);
-
-	return page->incoming;
-}
-
-void
-msn_page_set_sender(MsnPage *page, MsnUser *user)
-{
-	g_return_if_fail(page != NULL);
-	g_return_if_fail(user != NULL);
-
-	page->sender = user;
-
-	msn_user_ref(page->sender);
-}
-
-MsnUser *
-msn_page_get_sender(const MsnPage *page)
-{
-	g_return_val_if_fail(page != NULL, NULL);
-
-	return page->sender;
-}
-
-void
-msn_page_set_receiver(MsnPage *page, MsnUser *user)
-{
-	g_return_if_fail(page != NULL);
-	g_return_if_fail(user != NULL);
-
-	page->receiver = user;
-
-	msn_user_ref(page->receiver);
-}
-
-MsnUser *
-msn_page_get_receiver(const MsnPage *page)
-{
-	g_return_val_if_fail(page != NULL, NULL);
-
-	return page->receiver;
-}
-
-void
-msn_page_set_transaction_id(MsnPage *page, unsigned int tid)
-{
-	g_return_if_fail(page != NULL);
-	g_return_if_fail(tid > 0);
-
-	page->trId = tid;
-}
-
-unsigned int
-msn_page_get_transaction_id(const MsnPage *page)
-{
-	g_return_val_if_fail(page != NULL, 0);
-
-	return page->trId;
-}
-
 void
 msn_page_set_body(MsnPage *page, const char *body)
 {
 	g_return_if_fail(page != NULL);
 	g_return_if_fail(body != NULL);
 
-	if (page->body != NULL) {
+	if (page->body != NULL)
+	{
 		page->size -= strlen(page->body);
 		g_free(page->body);
 	}