Mercurial > pidgin
changeset 738:97c7b2f61cb5
[gaim-migrate @ 748]
ulimit -direct unlimited
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Tue, 22 Aug 2000 01:44:11 +0000 |
parents | c3a920cee3fc |
children | bb4cdefce62f |
files | TODO src/conversation.c |
diffstat | 2 files changed, 32 insertions(+), 41 deletions(-) [+] |
line wrap: on
line diff
--- a/TODO Tue Aug 22 00:57:59 2000 +0000 +++ b/TODO Tue Aug 22 01:44:11 2000 +0000 @@ -14,8 +14,6 @@ but I dont want to tie gnome into gaim. oh life sucks sometimes hehe. - Oscar can send messages longer than TOC, and DirectIM has no limit. - Syd is cool and gave all of these ideas: Have multiple tickers in the same window, one for buddies like it is now, one for who just came online/offline
--- a/src/conversation.c Tue Aug 22 00:57:59 2000 +0000 +++ b/src/conversation.c Tue Aug 22 01:44:11 2000 +0000 @@ -519,72 +519,68 @@ void send_callback(GtkWidget *widget, struct conversation *c) { - char *buf = g_malloc(BUF_LEN * 4); - char *buf2; - char *buf3; - gchar *buf4; - int hdrlen; + char *buf, *buf2, *buf3; + int hdrlen, limit; - /* FIXME : for USE_OSCAR, libfaim can send messages much longer - * than this (I think it's about 7K rather than 4K. So we need - * to do these checks a little bit differently here */ - buf4 = gtk_editable_get_chars(GTK_EDITABLE(c->entry), 0, -1); - g_snprintf(buf, BUF_LONG, "%s", buf4); - g_free(buf4); + if (c->is_direct) limit = 0x1ffffff; + else if (c->is_chat && USE_OSCAR) limit = MAXCHATMSGLEN; + else if (USE_OSCAR) limit = MAXMSGLEN; + else limit = MSG_LEN; + limit <<= 2; - if (!strlen(buf)) { - return; - } - + buf = g_malloc(limit); + + buf2 = gtk_editable_get_chars(GTK_EDITABLE(c->entry), 0, -1); + if (!strlen(buf2)) return; + g_snprintf(buf, limit, "%s", buf2); gtk_editable_delete_text(GTK_EDITABLE(c->entry), 0, -1); - if (general_options & OPT_GEN_SEND_LINKS) { - linkify_text(buf); - } - + if (general_options & OPT_GEN_SEND_LINKS) + linkify_text(buf); + + buf2 = g_malloc(limit); + /* Let us determine how long the message CAN be. * toc_send_im is 11 chars long + 2 quotes. - * + 2 spaces + 6 for the header + 2 for good - * measure = 23 bytes + the length of normalize c->name */ - - buf2 = g_malloc(BUF_LONG); - - hdrlen = 23 + strlen(normalize(c->name)); - -/* printf("%d %d %d\n", strlen(buf), hdrlen, BUF_LONG);*/ + * + 2 spaces + 6 for the header + 2 for good + * measure = 23 bytes + the length of normalize c->name */ + if (!USE_OSCAR) + hdrlen = 23 + strlen(normalize(c->name)); + else + hdrlen = 0; if (font_options & OPT_FONT_BOLD) { - g_snprintf(buf2, BUF_LONG, "<B>%s</B>", buf); + g_snprintf(buf2, limit, "<B>%s</B>", buf); strcpy(buf, buf2); } if (font_options & OPT_FONT_ITALIC) { - g_snprintf(buf2, BUF_LONG, "<I>%s</I>", buf); + g_snprintf(buf2, limit, "<I>%s</I>", buf); strcpy(buf, buf2); } if (font_options & OPT_FONT_UNDERLINE) { - g_snprintf(buf2, BUF_LONG, "<U>%s</U>", buf); + g_snprintf(buf2, limit, "<U>%s</U>", buf); strcpy(buf, buf2); } if (font_options & OPT_FONT_STRIKE) { - g_snprintf(buf2, BUF_LONG, "<STRIKE>%s</STRIKE>", buf); + g_snprintf(buf2, limit, "<STRIKE>%s</STRIKE>", buf); strcpy(buf, buf2); } if ((font_options & OPT_FONT_FACE) || c->hasfont) { - g_snprintf(buf2, BUF_LONG, "<FONT FACE=\"%s\">%s</FONT>", c->fontface, buf); + g_snprintf(buf2, limit, "<FONT FACE=\"%s\">%s</FONT>", c->fontface, buf); strcpy(buf, buf2); } if ((font_options & OPT_FONT_FGCOL) || c->hasfg) { - g_snprintf(buf2, BUF_LONG, "<FONT COLOR=\"#%02X%02X%02X\">%s</FONT>", c->fgcol.red, c->fgcol.green, c->fgcol.blue, buf); + g_snprintf(buf2, limit, "<FONT COLOR=\"#%02X%02X%02X\">%s</FONT>", c->fgcol.red, c->fgcol.green, c->fgcol.blue, buf); strcpy(buf, buf2); } if ((font_options & OPT_FONT_BGCOL) || c->hasbg) { - g_snprintf(buf2, BUF_LONG, "<BODY BGCOLOR=\"#%02X%02X%02X\">%s</BODY>", c->bgcol.red, c->bgcol.green, c->bgcol.blue, buf); + g_snprintf(buf2, limit, "<BODY BGCOLOR=\"#%02X%02X%02X\">%s</BODY>", c->bgcol.red, c->bgcol.green, c->bgcol.blue, buf); strcpy(buf, buf2); } @@ -607,7 +603,7 @@ g_free(buf2); return; } - g_snprintf(buf, BUF_LONG, "%s", buffy); + g_snprintf(buf, limit, "%s", buffy); g_free(buffy); } #endif @@ -617,7 +613,7 @@ write_to_conv(c, buf3, WFLAG_SEND, NULL); g_free(buf3); escape_text(buf); - if (escape_message(buf) > MSG_LEN - hdrlen) + if (escape_message(buf) > limit/4 - hdrlen) do_error_dialog(_("Message too long, some data truncated."), _("Error")); serv_send_im(c->name, buf, 0); @@ -643,9 +639,6 @@ } gtk_widget_grab_focus(c->entry); - - g_free(buf2); - g_free(buf); } static int