comparison src/protocols/msn/page.c @ 9092:9e5a709c30a8

[gaim-migrate @ 9869] More patches by shx. These prevent disconnects with message lengths that are past the allowed MSN message length, fixes pager messages, and provides a better error dialog stuff for MSN errors. I hope I got that all right. :) committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Thu, 27 May 2004 08:19:29 +0000
parents 1e211dde3cae
children ab6636c5a136
comparison
equal deleted inserted replaced
9091:97a1fb329cd2 9092:9e5a709c30a8
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */ 21 */
22 #include "msn.h" 22 #include "msn.h"
23 #include "page.h" 23 #include "page.h"
24 24
25 #define GET_NEXT(tmp) \
26 while (*(tmp) && *(tmp) != ' ' && *(tmp) != '\r') \
27 (tmp)++; \
28 if (*(tmp) != '\0') *(tmp)++ = '\0'; \
29 if (*(tmp) == '\n') *(tmp)++; \
30 while (*(tmp) && *(tmp) == ' ') \
31 (tmp)++
32
33 #define GET_NEXT_LINE(tmp) \
34 while (*(tmp) && *(tmp) != '\r') \
35 (tmp)++; \
36 if (*(tmp) != '\0') *(tmp)++ = '\0'; \
37 if (*(tmp) == '\n') *(tmp)++
38
39 /*
40 * <TEXT xml:space="preserve" enc="utf-8"> == 39
41 * </TEXT> == 7
42 * ----
43 * 46
44 */
45 #define MSN_PAGE_BASE_SIZE 46
46
47 MsnPage * 25 MsnPage *
48 msn_page_new(void) 26 msn_page_new(void)
49 { 27 {
50 MsnPage *page; 28 MsnPage *page;
51 29
52 page = g_new0(MsnPage, 1); 30 page = g_new0(MsnPage, 1);
53
54 page->size = MSN_PAGE_BASE_SIZE;
55 31
56 return page; 32 return page;
57 } 33 }
58 34
59 void 35 void
82 58
83 str = 59 str =
84 g_strdup_printf("<TEXT xml:space=\"preserve\" enc=\"utf-8\">%s</TEXT>", 60 g_strdup_printf("<TEXT xml:space=\"preserve\" enc=\"utf-8\">%s</TEXT>",
85 msn_page_get_body(page)); 61 msn_page_get_body(page));
86 62
87 if (page->size != strlen(str))
88 {
89 gaim_debug(GAIM_DEBUG_ERROR, "msn",
90 "Outgoing page size (%d) and string length (%d) "
91 "do not match!\n", page->size, strlen(str));
92 }
93
94 if (ret_size != NULL) 63 if (ret_size != NULL)
95 *ret_size = page->size - 1; 64 *ret_size = strlen(str);
96 65
97 return str; 66 return str;
98 } 67 }
99 68
100 void 69 void
102 { 71 {
103 g_return_if_fail(page != NULL); 72 g_return_if_fail(page != NULL);
104 g_return_if_fail(body != NULL); 73 g_return_if_fail(body != NULL);
105 74
106 if (page->body != NULL) 75 if (page->body != NULL)
107 {
108 page->size -= strlen(page->body);
109 g_free(page->body); 76 g_free(page->body);
110 }
111 77
112 page->body = g_strdup(body); 78 page->body = g_strdup(body);
113
114 page->size += strlen(body);
115 } 79 }
116 80
117 const char * 81 const char *
118 msn_page_get_body(const MsnPage *page) 82 msn_page_get_body(const MsnPage *page)
119 { 83 {
120 g_return_val_if_fail(page != NULL, NULL); 84 g_return_val_if_fail(page != NULL, NULL);
121 85
122 return page->body; 86 return page->body;
123 } 87 }
124