Mercurial > pidgin.yaz
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 |