You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(106) |
Oct
(334) |
Nov
(246) |
Dec
(145) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(42) |
Feb
(53) |
Mar
(232) |
Apr
(109) |
May
(137) |
Jun
(63) |
Jul
(26) |
Aug
(263) |
Sep
(193) |
Oct
(507) |
Nov
(440) |
Dec
(241) |
2003 |
Jan
(567) |
Feb
(195) |
Mar
(504) |
Apr
(481) |
May
(524) |
Jun
(522) |
Jul
(594) |
Aug
(502) |
Sep
(643) |
Oct
(508) |
Nov
(430) |
Dec
(377) |
2004 |
Jan
(361) |
Feb
(251) |
Mar
(219) |
Apr
(499) |
May
(461) |
Jun
(419) |
Jul
(314) |
Aug
(519) |
Sep
(416) |
Oct
(247) |
Nov
(305) |
Dec
(382) |
2005 |
Jan
(267) |
Feb
(282) |
Mar
(327) |
Apr
(338) |
May
(189) |
Jun
(400) |
Jul
(462) |
Aug
(530) |
Sep
(316) |
Oct
(523) |
Nov
(481) |
Dec
(650) |
2006 |
Jan
(536) |
Feb
(361) |
Mar
(287) |
Apr
(146) |
May
(101) |
Jun
(169) |
Jul
(221) |
Aug
(498) |
Sep
(300) |
Oct
(236) |
Nov
(209) |
Dec
(205) |
2007 |
Jan
(30) |
Feb
(23) |
Mar
(26) |
Apr
(15) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Eric W. <war...@us...> - 2001-12-02 04:24:56
|
Update of /cvsroot/gaim/gaim In directory usw-pr-cvs1:/tmp/cvs-serv2239 Modified Files: ChangeLog Log Message: i really wanted this just now Index: ChangeLog =================================================================== RCS file: /cvsroot/gaim/gaim/ChangeLog,v retrieving revision 1.368 retrieving revision 1.369 diff -u -d -r1.368 -r1.369 --- ChangeLog 2001/12/02 00:35:33 1.368 +++ ChangeLog 2001/12/02 04:24:54 1.369 @@ -4,6 +4,7 @@ * Updated polish translation (Thanks Przemyslaw Sulek) * Able to import GnomeICU contact lists * Galeon as browser option (Thanks Rob McQueen) + * IRC /list version 0.49 (11/29/2001): * Can compile against GTK+ 2.0 (version 1.3.10/1.3.11) |
From: Eric W. <war...@us...> - 2001-12-02 04:24:56
|
Update of /cvsroot/gaim/gaim/src/protocols/irc In directory usw-pr-cvs1:/tmp/cvs-serv2239/src/protocols/irc Modified Files: irc.c Log Message: i really wanted this just now Index: irc.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/irc/irc.c,v retrieving revision 1.61 retrieving revision 1.62 diff -u -d -r1.61 -r1.62 --- irc.c 2001/11/30 21:16:27 1.61 +++ irc.c 2001/12/02 04:24:54 1.62 @@ -64,7 +64,8 @@ gboolean six_modes; gboolean in_whois; - GString *whois_str; + gboolean in_list; + GString *liststr; }; static char *irc_name() @@ -558,40 +559,54 @@ if (!id->in_whois) { id->in_whois = TRUE; - id->whois_str = g_string_new(""); + id->liststr = g_string_new(""); } else { /* I can't decide if we should have one break or two */ - id->whois_str = g_string_append(id->whois_str, "<BR>"); + id->liststr = g_string_append(id->liststr, "<BR>"); id->in_whois = TRUE; } switch (num) { case 311: - id->whois_str = g_string_append(id->whois_str, "<b>User: </b>"); + id->liststr = g_string_append(id->liststr, "<b>User: </b>"); break; case 312: - id->whois_str = g_string_append(id->whois_str, "<b>Server: </b>"); + id->liststr = g_string_append(id->liststr, "<b>Server: </b>"); break; case 313: g_snprintf(tmp, sizeof(tmp), "<b>IRC Operator:</b> %s ", word[4]); - id->whois_str = g_string_append(id->whois_str, tmp); + id->liststr = g_string_append(id->liststr, tmp); break; case 317: - id->whois_str = g_string_append(id->whois_str, "<b>Idle Time: </b>"); + id->liststr = g_string_append(id->liststr, "<b>Idle Time: </b>"); break; case 319: - id->whois_str = g_string_append(id->whois_str, "<b>Channels: </b>"); + id->liststr = g_string_append(id->liststr, "<b>Channels: </b>"); break; default: break; } if (word_eol[5][0] == ':') - id->whois_str = g_string_append(id->whois_str, word_eol[5] + 1); + id->liststr = g_string_append(id->liststr, word_eol[5] + 1); else - id->whois_str = g_string_append(id->whois_str, word_eol[5]); + id->liststr = g_string_append(id->liststr, word_eol[5]); +} + +static void handle_roomlist(struct gaim_connection *gc, char *word[], char *word_eol[]) +{ + struct irc_data *id = gc->proto_data; + if (!id->in_list) { + id->in_list = TRUE; + id->liststr = g_string_new(""); + } else { + id->liststr = g_string_append(id->liststr, "<BR>"); + id->in_list = TRUE; + } + + id->liststr = g_string_append(id->liststr, word_eol[4]); } static void process_numeric(struct gaim_connection *gc, char *word[], char *word_eol[]) @@ -617,12 +632,12 @@ break; case 301: if (id->in_whois) { - id->whois_str = g_string_append(id->whois_str, "<BR><b>Away: </b>"); + id->liststr = g_string_append(id->liststr, "<BR><b>Away: </b>"); if (word_eol[5][0] == ':') - id->whois_str = g_string_append(id->whois_str, word_eol[5] + 1); + id->liststr = g_string_append(id->liststr, word_eol[5] + 1); else - id->whois_str = g_string_append(id->whois_str, word_eol[5]); + id->liststr = g_string_append(id->liststr, word_eol[5]); } else irc_got_im(gc, word[4], word_eol[5], IM_FLAG_AWAY, time(NULL)); break; @@ -636,14 +651,19 @@ case 319: handle_whois(gc, word, word_eol, n); break; + case 322: + handle_roomlist(gc, word, word_eol); + break; + case 323: case 318: - if (id->in_whois && id->whois_str) { - GString *str = decode_html(id->whois_str->str); + if ((id->in_whois || id->in_list) && id->liststr) { + GString *str = decode_html(id->liststr->str); g_show_info_text(gc, NULL, 2, str->str, NULL); g_string_free(str, TRUE); - g_string_free(id->whois_str, TRUE); - id->whois_str = NULL; + g_string_free(id->liststr, TRUE); + id->liststr = NULL; id->in_whois = FALSE; + id->in_list = FALSE; } break; case 324: @@ -1089,8 +1109,8 @@ g_free(idata->nickmodes); g_string_free(idata->str, TRUE); - if (idata->whois_str) - g_string_free(idata->whois_str, TRUE); + if (idata->liststr) + g_string_free(idata->liststr, TRUE); if (idata->timer) g_source_remove(idata->timer); @@ -1334,6 +1354,9 @@ } else if (!g_strcasecmp(pdibuf, "WHOIS")) { g_snprintf(buf, sizeof(buf), "WHOIS %s\r\n", word_eol[2]); irc_write(id->fd, buf, strlen(buf)); + } else if (!g_strcasecmp(pdibuf, "LIST")) { + g_snprintf(buf, sizeof(buf), "LIST\r\n"); + irc_write(id->fd, buf, strlen(buf)); } else if (!g_strcasecmp(pdibuf, "HELP")) { struct conversation *c = NULL; if (is_channel(gc, who)) { @@ -1344,7 +1367,7 @@ if (!c) return -EINVAL; write_to_conv(c, "<B>Currently supported commands:<BR>" - "JOIN PART TOPIC WHOIS<BR>" + "JOIN PART LIST TOPIC WHOIS<BR>" "OP DEOP VOICE DEVOICE KICK<BR>" "NICK ME MSG QUOTE SAY</B>", WFLAG_NOLOG, NULL, time(NULL)); |
From: Eric W. <war...@us...> - 2001-12-02 00:47:38
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv2251 Modified Files: browser.c Log Message: i love myself better than you Index: browser.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/browser.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- browser.c 2001/12/02 00:35:33 1.20 +++ browser.c 2001/12/02 00:47:33 1.21 @@ -565,12 +565,12 @@ { if (web_browser == BROWSER_NETSCAPE) { - char *command = g_malloc(1024); + char *command; if (misc_options & OPT_MISC_BROWSER_POPUP) - g_snprintf(command, 1024, "OpenURL(%s, new-window)", url); + command = g_strdup_printf("OpenURL(%s, new-window)", url); else - g_snprintf(command, 1024, "OpenURL(%s)", url); + command = g_strdup_printf("OpenURL(%s)", url); netscape_command(command); g_free(command); |
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv32369/src Modified Files: about.c aim.c browser.c conversation.c dialogs.c prefs.c prpl.c prpl.h server.c ui.h Log Message: heh. Index: about.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/about.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -d -r1.56 -r1.57 --- about.c 2001/11/15 22:47:03 1.56 +++ about.c 2001/12/02 00:35:33 1.57 @@ -53,7 +53,7 @@ static void about_click(GtkWidget *w, gpointer m) { - open_url_nw(NULL, WEBSITE); + open_url(NULL, WEBSITE); } char *name() Index: aim.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/aim.c,v retrieving revision 1.173 retrieving revision 1.174 diff -u -d -r1.173 -r1.174 --- aim.c 2001/12/01 01:48:26 1.173 +++ aim.c 2001/12/02 00:35:33 1.174 @@ -212,7 +212,7 @@ #endif GtkWidget *signon; GtkWidget *cancel; - GtkWidget *help; + GtkWidget *reg; GtkWidget *bbox; GtkWidget *hbox; GtkWidget *sbox; @@ -330,32 +330,32 @@ gtk_box_pack_start(GTK_BOX(sbox), hbox, TRUE, TRUE, 0); gtk_widget_show(hbox); - help = gtk_button_new_with_label(_("Help!")); + reg = gtk_button_new_with_label(_("Help")); options = gtk_button_new_with_label(_("Options")); #ifdef GAIM_PLUGINS plugs = gtk_button_new_with_label(_("Plugins")); #endif if (misc_options & OPT_MISC_COOL_LOOK) { - gtk_button_set_relief(GTK_BUTTON(help), GTK_RELIEF_NONE); + gtk_button_set_relief(GTK_BUTTON(reg), GTK_RELIEF_NONE); gtk_button_set_relief(GTK_BUTTON(options), GTK_RELIEF_NONE); #ifdef GAIM_PLUGINS gtk_button_set_relief(GTK_BUTTON(plugs), GTK_RELIEF_NONE); #endif } - gtk_signal_connect(GTK_OBJECT(help), "clicked", GTK_SIGNAL_FUNC(gaim_help), NULL); + gtk_signal_connect(GTK_OBJECT(reg), "clicked", GTK_SIGNAL_FUNC(gaim_help), NULL); gtk_signal_connect(GTK_OBJECT(options), "clicked", GTK_SIGNAL_FUNC(show_prefs), NULL); #ifdef GAIM_PLUGINS gtk_signal_connect(GTK_OBJECT(plugs), "clicked", GTK_SIGNAL_FUNC(show_plugins), NULL); #endif - gtk_box_pack_start(GTK_BOX(hbox), help, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(hbox), reg, TRUE, TRUE, 0); gtk_box_pack_start(GTK_BOX(hbox), options, TRUE, TRUE, 0); #ifdef GAIM_PLUGINS gtk_box_pack_start(GTK_BOX(hbox), plugs, TRUE, TRUE, 0); #endif - gtk_widget_show(help); + gtk_widget_show(reg); gtk_widget_show(options); #ifdef GAIM_PLUGINS gtk_widget_show(plugs); Index: browser.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/browser.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- browser.c 2001/11/20 20:19:43 1.19 +++ browser.c 2001/12/02 00:35:33 1.20 @@ -567,68 +567,50 @@ if (web_browser == BROWSER_NETSCAPE) { char *command = g_malloc(1024); - g_snprintf(command, 1024, "OpenURL(%s)", url); + if (misc_options & OPT_MISC_BROWSER_POPUP) + g_snprintf(command, 1024, "OpenURL(%s, new-window)", url); + else + g_snprintf(command, 1024, "OpenURL(%s)", url); netscape_command(command); g_free(command); - } else if (web_browser == BROWSER_KFM) { - pid_t pid; - - pid = fork(); - - if (pid == 0) { - char *args[4]; - - args[0] = g_strdup("kfmclient"); - args[1] = g_strdup("openURL"); - args[2] = url; - args[3] = NULL; - - execvp(args[0], args); - _exit(0); - } else { - gtk_timeout_add(1000, (GtkFunction)clean_pid, NULL); - } - } else if (web_browser == BROWSER_OPERA) { - pid_t pid; - - pid = fork(); - - if (pid == 0) { - char *args[4]; - args[0] = g_strdup("opera"); - args[1] = g_strdup("-newwindow"); - args[2] = url; - args[3] = NULL; - - execvp(args[0], args); - _exit(0); - } else { - gtk_timeout_add(1000, (GtkFunction)clean_pid, NULL); - } #ifdef USE_GNOME } else if (web_browser == BROWSER_GNOME) { gnome_url_show(url); #endif /* USE_GNOME */ - } else if (web_browser == BROWSER_MANUAL) { + } else { pid_t pid; pid = fork(); if (pid == 0) { char *args[4]; - char command[1024]; - g_snprintf(command, sizeof(command), web_command, url); + if (web_browser == BROWSER_OPERA) { + args[0] = g_strdup("opera"); + args[1] = g_strdup("-newwindow"); + args[2] = url; + args[3] = NULL; + } else if (web_browser == BROWSER_KFM) { + args[0] = g_strdup("kfmclient"); + args[1] = g_strdup("openURL"); + args[2] = url; + args[3] = NULL; + } else if (web_browser == BROWSER_GALEON) { + args[0] = g_strdup("galeon"); + args[1] = url; + args[2] = NULL; + } else if (web_browser == BROWSER_MANUAL) { + g_snprintf(command, sizeof(command), web_command, url); - args[0] = "sh"; - args[1] = "-c"; - args[2] = command; - args[3] = NULL; + args[0] = "sh"; + args[1] = "-c"; + args[2] = command; + args[3] = NULL; + } execvp(args[0], args); - _exit(0); } else { gtk_timeout_add(1000, (GtkFunction)clean_pid, NULL); @@ -648,20 +630,6 @@ } } -void open_url_nw(GtkWidget *w, char *url) -{ - if (web_browser == BROWSER_NETSCAPE) { - char *command = g_malloc(1024); - - g_snprintf(command, 1024, "OpenURL(%s, new-window)", url); - - netscape_command(command); - g_free(command); - } else { - open_url(w, url); - } -} - #else /* Sooner or later, I shall support Windows clicking! */ @@ -670,9 +638,6 @@ { } void open_url_nw(GtkWidget *w, char *url) -{ -} -void open_url(GtkWidget *w, char *url) { } Index: conversation.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/conversation.c,v retrieving revision 1.307 retrieving revision 1.308 diff -u -d -r1.307 -r1.308 --- conversation.c 2001/11/27 20:50:58 1.307 +++ conversation.c 2001/12/02 00:35:33 1.308 @@ -96,7 +96,7 @@ g_return_if_fail(GTK_IS_IMHTML(imhtml)); if (!(convo_options & OPT_CONVO_SHOW_SMILEY)) gtk_imhtml_show_smileys(GTK_IMHTML(imhtml), FALSE); - gtk_signal_connect(GTK_OBJECT(imhtml), "url_clicked", GTK_SIGNAL_FUNC(open_url_nw), NULL); + gtk_signal_connect(GTK_OBJECT(imhtml), "url_clicked", GTK_SIGNAL_FUNC(open_url), NULL); gtk_imhtml_associate_smiley(GTK_IMHTML(imhtml), "C:)", luke03_xpm); gtk_imhtml_associate_smiley(GTK_IMHTML(imhtml), "C:-)", luke03_xpm); gtk_imhtml_associate_smiley(GTK_IMHTML(imhtml), "O-)", oneeye_xpm); Index: dialogs.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/dialogs.c,v retrieving revision 1.293 retrieving revision 1.294 diff -u -d -r1.293 -r1.294 --- dialogs.c 2001/11/27 01:09:33 1.293 +++ dialogs.c 2001/12/02 00:35:33 1.294 @@ -3758,7 +3758,7 @@ gtk_container_add(GTK_CONTAINER(frame), sw); gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(layout), "url_clicked", GTK_SIGNAL_FUNC(open_url_nw), NULL); + gtk_signal_connect(GTK_OBJECT(layout), "url_clicked", GTK_SIGNAL_FUNC(open_url), NULL); gtk_container_add(GTK_CONTAINER(sw), layout); gaim_setup_imhtml(layout); Index: prefs.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/prefs.c,v retrieving revision 1.205 retrieving revision 1.206 diff -u -d -r1.205 -r1.206 --- prefs.c 2001/12/01 01:48:26 1.205 +++ prefs.c 2001/12/02 00:35:34 1.206 @@ -292,6 +292,7 @@ #ifdef USE_GNOME opt = browser_radio(_("GNOME URL Handler"), BROWSER_GNOME, vbox, opt); #endif /* USE_GNOME */ + opt = browser_radio(_("Galeon"), BROWSER_GALEON, vbox, opt); opt = browser_radio(_("Manual"), BROWSER_MANUAL, vbox, opt); browser_entry = gtk_entry_new(); Index: prpl.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/prpl.c,v retrieving revision 1.48 retrieving revision 1.49 diff -u -d -r1.48 -r1.49 --- prpl.c 2001/11/15 22:47:04 1.48 +++ prpl.c 2001/12/02 00:35:34 1.49 @@ -444,7 +444,7 @@ mn->url = g_strdup(url); urlbut = picture_button(mn->email_win, _("Open Mail"), tb_forward_xpm); gtk_box_pack_end(GTK_BOX(hbox), urlbut, 0, 0, 5); - gtk_signal_connect(GTK_OBJECT(urlbut), "clicked", GTK_SIGNAL_FUNC(open_url_nw), mn->url); + gtk_signal_connect(GTK_OBJECT(urlbut), "clicked", GTK_SIGNAL_FUNC(open_url), mn->url); gtk_signal_connect(GTK_OBJECT(urlbut), "clicked", GTK_SIGNAL_FUNC(des_email_win), mn); } @@ -574,4 +574,107 @@ do_error_dialog(buf, "Added to List"); else do_ask_dialog(buf, ga, do_add, dont_add); +} + +static GtkWidget *regdlg = NULL; +static GtkWidget *reg_list = NULL; +static GtkWidget *reg_area = NULL; +static GtkWidget *reg_reg = NULL; + +static void delete_regdlg() +{ + GtkWidget *tmp = regdlg; + regdlg = NULL; + if (tmp) + gtk_widget_destroy(tmp); +} + +static void reset_reg_dlg() +{ + GSList *P = protocols; + + if (!regdlg) + return; + + while (GTK_BOX(reg_list)->children) + gtk_container_remove(GTK_CONTAINER(reg_list), + ((GtkBoxChild *)GTK_BOX(reg_list)->children->data)->widget); + + while (GTK_BOX(reg_area)->children) + gtk_container_remove(GTK_CONTAINER(reg_area), + ((GtkBoxChild *)GTK_BOX(reg_area)->children->data)->widget); + + while (P) { + struct prpl *p = P->data; + if (p->register_user) + break; + P = P->next; + } + + if (!P) { + GtkWidget *no = gtk_label_new(_("You do not currently have any plugins loaded" + " that are able to register new accounts.")); + gtk_box_pack_start(GTK_BOX(reg_area), no, FALSE, FALSE, 5); + gtk_widget_show(no); + + gtk_widget_set_sensitive(reg_reg, FALSE); + + return; + } +} + +void register_dialog() +{ + /* this is just one big hack */ + GtkWidget *vbox; + GtkWidget *frame; + GtkWidget *hbox; + GtkWidget *close; + + if (regdlg) { + gdk_window_raise(regdlg->window); + return; + } + + regdlg = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_window_set_title(GTK_WINDOW(regdlg), _("Gaim - Registration")); + gtk_window_set_wmclass(GTK_WINDOW(regdlg), "register", "Gaim"); + gtk_widget_realize(regdlg); + aol_icon(regdlg->window); + gtk_signal_connect(GTK_OBJECT(regdlg), "destroy", GTK_SIGNAL_FUNC(delete_regdlg), NULL); + + vbox = gtk_vbox_new(FALSE, 5); + gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); + gtk_container_add(GTK_CONTAINER(regdlg), vbox); + gtk_widget_show(vbox); + + reg_list = gtk_hbox_new(FALSE, 5); + gtk_box_pack_start(GTK_BOX(vbox), reg_list, FALSE, FALSE, 5); + gtk_widget_show(reg_list); + + frame = gtk_frame_new(_("Registration Information")); + gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 5); + gtk_widget_show(frame); + + reg_area = gtk_hbox_new(FALSE, 5); + gtk_container_add(GTK_CONTAINER(frame), reg_area); + gtk_widget_show(reg_area); + + hbox = gtk_hbox_new(FALSE, 5); + gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); + gtk_widget_show(hbox); + + close = picture_button(regdlg, _("Close"), cancel_xpm); + gtk_box_pack_end(GTK_BOX(hbox), close, FALSE, FALSE, 5); + gtk_signal_connect(GTK_OBJECT(close), "clicked", GTK_SIGNAL_FUNC(delete_regdlg), NULL); + gtk_widget_show(close); + + reg_reg = picture_button(regdlg, _("Register"), ok_xpm); + gtk_box_pack_end(GTK_BOX(hbox), reg_reg, FALSE, FALSE, 5); + gtk_widget_show(reg_reg); + + /* fuck me */ + reset_reg_dlg(); + + gtk_widget_show(regdlg); } Index: prpl.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/prpl.h,v retrieving revision 1.57 retrieving revision 1.58 diff -u -d -r1.57 -r1.58 --- prpl.h 2001/11/20 01:01:20 1.57 +++ prpl.h 2001/12/02 00:35:34 1.58 @@ -143,6 +143,9 @@ int (* chat_send) (struct gaim_connection *, int id, char *message); void (* keepalive) (struct gaim_connection *); + /* new user registration */ + void (* register_user) (struct gaim_connection *); + void (* buddy_free) (struct buddy *); /* this is really bad. */ Index: server.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/server.c,v retrieving revision 1.212 retrieving revision 1.213 diff -u -d -r1.212 -r1.213 --- server.c 2001/11/21 12:15:37 1.212 +++ server.c 2001/12/02 00:35:34 1.213 @@ -982,7 +982,7 @@ button = picture_button(window, _("More Info"), tb_search_xpm); gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(open_url_nw), url); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(open_url), url); gtk_widget_show_all(window); Index: ui.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/ui.h,v retrieving revision 1.22 retrieving revision 1.23 diff -u -d -r1.22 -r1.23 --- ui.h 2001/11/28 21:06:45 1.22 +++ ui.h 2001/12/02 00:35:34 1.23 @@ -60,6 +60,7 @@ /*#define BROWSER_INTERNAL 3*/ #define BROWSER_GNOME 4 #define BROWSER_OPERA 5 +#define BROWSER_GALEON 6 #define FACE_ANGEL 0 #define FACE_BIGSMILE 1 @@ -296,7 +297,6 @@ /* Functions in browser.c */ extern void open_url(GtkWidget *, char *); -extern void open_url_nw(GtkWidget *, char *); extern void add_bookmark(GtkWidget *, char *); /* Functions in buddy.c */ @@ -439,6 +439,9 @@ extern GtkWidget *prefs_away_menu; extern GtkWidget *pref_fg_picture; extern GtkWidget *pref_bg_picture; + +/* Functions in prpl.c */ +extern void register_dialog(); /* Functions in sound.c */ extern void play_sound(int); |
From: Eric W. <war...@us...> - 2001-12-02 00:35:36
|
Update of /cvsroot/gaim/gaim In directory usw-pr-cvs1:/tmp/cvs-serv32369 Modified Files: ChangeLog Log Message: heh. Index: ChangeLog =================================================================== RCS file: /cvsroot/gaim/gaim/ChangeLog,v retrieving revision 1.367 retrieving revision 1.368 diff -u -d -r1.367 -r1.368 --- ChangeLog 2001/12/01 21:38:29 1.367 +++ ChangeLog 2001/12/02 00:35:33 1.368 @@ -3,6 +3,7 @@ version 0.50: * Updated polish translation (Thanks Przemyslaw Sulek) * Able to import GnomeICU contact lists + * Galeon as browser option (Thanks Rob McQueen) version 0.49 (11/29/2001): * Can compile against GTK+ 2.0 (version 1.3.10/1.3.11) |
From: Eric W. <war...@us...> - 2001-12-01 22:53:54
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv10984 Modified Files: gtkimhtml.c Log Message: eh Index: gtkimhtml.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/gtkimhtml.c,v retrieving revision 1.84 retrieving revision 1.85 diff -u -d -r1.84 -r1.85 --- gtkimhtml.c 2001/11/30 09:51:23 1.84 +++ gtkimhtml.c 2001/12/01 22:53:51 1.85 @@ -1929,6 +1929,8 @@ } else newvals = g_memdup (xflds, 16 * sizeof (xflds)); + newvals [FNDRY] = "*"; + if ((i > ADSTYL) && !xflds [ADSTYL][0]) newvals [ADSTYL] = "*"; |
From: Eric W. <war...@us...> - 2001-12-01 21:38:32
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv29283/src Modified Files: list.c Log Message: come on baby let's take a chance Index: list.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/list.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- list.c 2001/11/06 23:58:21 1.9 +++ list.c 2001/12/01 21:38:29 1.10 @@ -481,46 +481,46 @@ } /* translate an AIM 3 buddylist (*.lst) to a Gaim buddylist */ -static void translate_lst(FILE *src_fp, char *dest) +static GString *translate_lst(FILE *src_fp) { char line[BUF_LEN], *line2; char *name; int i; - sprintf(dest, "m 1\n"); + GString *dest = g_string_new("m 1\n"); while (fgets(line, BUF_LEN, src_fp)) { line2 = g_strchug(line); if (strstr(line2, "group") == line2) { name = strpbrk(line2, " \t\n\r\f") + 1; - strcat(dest, "g "); + dest = g_string_append(dest, "g "); for (i = 0; i < strcspn(name, "\n\r"); i++) if (name[i] != '\"') - strncat(dest, &name[i], 1); - strcat(dest, "\n"); + dest = g_string_append_c(dest, name[i]); + dest = g_string_append_c(dest, '\n'); } if (strstr(line2, "buddy") == line2) { name = strpbrk(line2, " \t\n\r\f") + 1; - strcat(dest, "b "); + dest = g_string_append(dest, "b "); for (i = 0; i < strcspn(name, "\n\r"); i++) if (name[i] != '\"') - strncat(dest, &name[i], 1); - strcat(dest, "\n"); + dest = g_string_append_c(dest, name[i]); + dest = g_string_append_c(dest, '\n'); } } - return; + return dest; } /* translate an AIM 4 buddylist (*.blt) to Gaim format */ -static void translate_blt(FILE *src_fp, char *dest) +static GString *translate_blt(FILE *src_fp) { int i; char line[BUF_LEN]; char *buddy; - sprintf(dest, "m 1\n"); + GString *dest = g_string_new("m 1\n"); while (strstr(fgets(line, BUF_LEN, src_fp), "Buddy") == NULL); while (strstr(fgets(line, BUF_LEN, src_fp), "list") == NULL); @@ -533,32 +533,31 @@ if (strchr(line, '{') != NULL) { /* Syntax starting with "<group> {" */ - strcat(dest, "g "); + dest = g_string_append(dest, "g "); buddy = g_strchug(strtok(line, "{")); - for (i = 0; i < strlen(buddy); i++) { - if (buddy[i] != '\"') { - strncat(dest, &buddy[i], 1); - } - } - strcat(dest, "\n"); + for (i = 0; i < strlen(buddy); i++) + if (buddy[i] != '\"') + dest = g_string_append_c(dest, buddy[i]); + dest = g_string_append_c(dest, '\n'); while (strchr(fgets(line, BUF_LEN, src_fp), '}') == NULL) { gboolean pounce = FALSE; + char *e; g_strchomp(line); buddy = g_strchug(line); debug_printf("\nbuddy: \"%s\"\n\n", buddy); - strcat(dest, "b "); + dest = g_string_append(dest, "b "); if (strchr(buddy, '{') != NULL) { /* buddy pounce, etc */ char *pos = strchr(buddy, '{') - 1; *pos = 0; pounce = TRUE; } - if (strchr(buddy, '\"') != NULL) { + if ((e = strchr(buddy, '\"')) != NULL) { + *e = '\0'; buddy++; - strncat(dest, buddy, strchr(buddy, '\"') - buddy); - } else - strcat(dest, buddy); - strcat(dest, "\n"); + } + dest = g_string_append(dest, buddy); + dest = g_string_append_c(dest, '\n'); if (pounce) do fgets(line, BUF_LEN, src_fp); @@ -568,42 +567,71 @@ /* Syntax "group buddy buddy ..." */ buddy = g_strchug(strtok(line, " \n")); - strcat(dest, "g "); + dest = g_string_append(dest, "g "); if (strchr(buddy, '\"') != NULL) { - strcat(dest, &buddy[1]); - strcat(dest, " "); + dest = g_string_append(dest, &buddy[1]); + dest = g_string_append_c(dest, ' '); buddy = g_strchug(strtok(NULL, " \n")); while (strchr(buddy, '\"') == NULL) { - strcat(dest, buddy); - strcat(dest, " "); + dest = g_string_append(dest, buddy); + dest = g_string_append_c(dest, ' '); buddy = g_strchug(strtok(NULL, " \n")); } - strncat(dest, buddy, strlen(buddy) - 1); + buddy[strlen(buddy) - 1] = '\0'; + dest = g_string_append(dest, buddy); } else { - strcat(dest, buddy); + dest = g_string_append(dest, buddy); } - strcat(dest, "\n"); + dest = g_string_append_c(dest, '\n'); while ((buddy = g_strchug(strtok(NULL, " \n"))) != NULL) { - strcat(dest, "b "); + dest = g_string_append(dest, "b "); if (strchr(buddy, '\"') != NULL) { - strcat(dest, &buddy[1]); - strcat(dest, " "); + dest = g_string_append(dest, &buddy[1]); + dest = g_string_append_c(dest, ' '); buddy = g_strchug(strtok(NULL, " \n")); while (strchr(buddy, '\"') == NULL) { - strcat(dest, buddy); - strcat(dest, " "); + dest = g_string_append(dest, buddy); + dest = g_string_append_c(dest, ' '); buddy = g_strchug(strtok(NULL, " \n")); } - strncat(dest, buddy, strlen(buddy) - 1); + buddy[strlen(buddy) - 1] = '\0'; + dest = g_string_append(dest, buddy); } else { - strcat(dest, buddy); + dest = g_string_append(dest, buddy); } - strcat(dest, "\n"); + dest = g_string_append_c(dest, '\n'); } } } - return; + return dest; +} + +static GString *translate_gnomeicu(FILE *src_fp) +{ + char line[BUF_LEN]; + GString *dest = g_string_new("m 1\ng Buddies\n"); + + while (strstr(fgets(line, BUF_LEN, src_fp), "NewContacts") == NULL); + + while (fgets(line, BUF_LEN, src_fp)) { + char *eq; + g_strchomp(line); + if (line[0] == '\n' || line[0] == '[') + break; + eq = strchr(line, '='); + if (!eq) + break; + *eq = ':'; + eq = strchr(eq, ','); + if (eq) + *eq = '\0'; + dest = g_string_append(dest, "b "); + dest = g_string_append(dest, line); + dest = g_string_append_c(dest, '\n'); + } + + return dest; } static gchar *get_screenname_filename(const char *name) @@ -658,85 +686,83 @@ void do_import(struct gaim_connection *gc, char *filename) { - char *buf = g_malloc(BUF_LONG * 2); - char *buf2; - char *first = g_malloc(64); - char *file; + GString *buf = NULL; + char first[64]; char path[PATHSIZE]; - char *g_screenname; int len; FILE *f; + struct stat st; if (filename) { g_snprintf(path, sizeof(path), "%s", filename); } else { - g_screenname = get_screenname_filename(gc->username); + char *g_screenname = get_screenname_filename(gc->username); + char *file = gaim_user_dir(); - file = gaim_user_dir(); if (file != (char *)NULL) { sprintf(path, "%s/%s.%d.blist", file, g_screenname, gc->protocol); g_free(file); g_free(g_screenname); } else { g_free(g_screenname); - g_free(buf); - g_free(first); return; } } + if (stat(path, &st)) { + debug_printf("Unable to stat %s.\n", path); + return; + } + if (!(f = fopen(path, "r"))) { debug_printf("Unable to open %s.\n", path); - g_free(buf); - g_free(first); return; } fgets(first, 64, f); - /* AIM 4 buddy list */ + if ((first[0] == '\n') || (first[0] == '\r' && first[1] == '\n')) + fgets(first, 64, f); + if (!g_strncasecmp(first, "Config {", strlen("Config {"))) { + /* AIM 4 buddy list */ debug_printf("aim 4\n"); rewind(f); - translate_blt(f, buf); - debug_printf("%s\n", buf); - buf2 = buf; - buf = g_malloc(8193); - g_snprintf(buf, 8192, "toc_set_config {%s}\n", buf2); - g_free(buf2); - /* AIM 3 buddy list */ + buf = translate_blt(f); } else if (strstr(first, "group") != NULL) { + /* AIM 3 buddy list */ debug_printf("aim 3\n"); rewind(f); - translate_lst(f, buf); - debug_printf("%s\n", buf); - buf2 = buf; - buf = g_malloc(8193); - g_snprintf(buf, 8192, "toc_set_config {%s}\n", buf2); - g_free(buf2); - /* Gaim buddy list - no translation */ + buf = translate_lst(f); + } else if (!g_strncasecmp(first, "[User]", strlen("[User]"))) { + /* GnomeICU (hopefully) */ + debug_printf("gnomeicu\n"); + rewind(f); + buf = translate_gnomeicu(f); } else if (first[0] == 'm') { + /* Gaim buddy list - no translation */ + char buf2[BUF_LONG * 2]; + buf = g_string_new(""); rewind(f); - len = fread(buf, 1, BUF_LONG * 2, f); - buf[len] = '\0'; - buf2 = buf; - buf = g_malloc(8193); - g_snprintf(buf, 8192, "toc_set_config {%s}\n", buf2); - g_free(buf2); - /* Something else */ - } else { - g_free(buf); - g_free(first); - fclose(f); - return; + while (1) { + len = fread(buf2, 1, BUF_LONG * 2 - 1, f); + if (len <= 0) + break; + buf2[len] = '\0'; + buf = g_string_append(buf, buf2); + if (len != BUF_LONG * 2 - 1) + break; + } } - parse_toc_buddy_list(gc, buf); - fclose(f); - g_free(buf); - g_free(first); + if (buf) { + buf = g_string_prepend(buf, "toc_set_config {"); + buf = g_string_append(buf, "}\n"); + parse_toc_buddy_list(gc, buf->str); + g_string_free(buf, TRUE); + } } void do_export(struct gaim_connection *g) |
From: Eric W. <war...@us...> - 2001-12-01 21:38:32
|
Update of /cvsroot/gaim/gaim In directory usw-pr-cvs1:/tmp/cvs-serv29283 Modified Files: ChangeLog Log Message: come on baby let's take a chance Index: ChangeLog =================================================================== RCS file: /cvsroot/gaim/gaim/ChangeLog,v retrieving revision 1.366 retrieving revision 1.367 diff -u -d -r1.366 -r1.367 --- ChangeLog 2001/11/30 07:59:36 1.366 +++ ChangeLog 2001/12/01 21:38:29 1.367 @@ -2,6 +2,7 @@ version 0.50: * Updated polish translation (Thanks Przemyslaw Sulek) + * Able to import GnomeICU contact lists version 0.49 (11/29/2001): * Can compile against GTK+ 2.0 (version 1.3.10/1.3.11) |
From: Eric W. <war...@us...> - 2001-12-01 02:14:50
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv7081/src Modified Files: buddy.c Log Message: hi Index: buddy.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/buddy.c,v retrieving revision 1.278 retrieving revision 1.279 diff -u -d -r1.278 -r1.279 --- buddy.c 2001/11/21 12:15:37 1.278 +++ buddy.c 2001/12/01 02:14:47 1.279 @@ -246,6 +246,9 @@ GtkCTreeNode *c; char buf[256]; + if (!strcmp(b->show, prevname)) + g_snprintf(b->show, sizeof(b->show), "%s", b->name); + /* well you shouldn't be calling this if nothing changed. duh. */ do_export(b->gc); |
From: Eric W. <war...@us...> - 2001-12-01 02:14:49
|
Update of /cvsroot/gaim/gaim/plugins In directory usw-pr-cvs1:/tmp/cvs-serv7081/plugins Modified Files: raw.c Log Message: hi Index: raw.c =================================================================== RCS file: /cvsroot/gaim/gaim/plugins/raw.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- raw.c 2001/10/12 22:51:10 1.1 +++ raw.c 2001/12/01 02:14:47 1.2 @@ -5,7 +5,7 @@ #undef MAX #undef MIN #endif -#include "jabber/jabber.h" +#include "protocols/jabber/jabber.h" static GtkWidget *window = NULL; static GtkWidget *optmenu = NULL; |
From: Eric W. <war...@us...> - 2001-12-01 01:48:29
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv1836 Modified Files: aim.c gaim.h module.c prefs.c util.c Log Message: remove DEBUG Index: aim.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/aim.c,v retrieving revision 1.172 retrieving revision 1.173 diff -u -d -r1.172 -r1.173 --- aim.c 2001/11/19 08:23:32 1.172 +++ aim.c 2001/12/01 01:48:26 1.173 @@ -80,6 +80,7 @@ int opt_away = 0; char *opt_away_arg = NULL; char *opt_rcfile_arg = NULL; +int opt_debug = 0; void BuddyTickerCreateWindow(void); @@ -540,6 +541,8 @@ "Use account NAME", "NAME"}, {"file", 'f', POPT_ARG_STRING, &opt_rcfile_arg, 'f', "Use FILE as config", "FILE"}, + {"debug", 'd', POPT_ARG_NONE, &opt_debug, 'd', + "Print debugging messages to stdout", NULL}, {0, 0, 0, 0, 0, 0, 0} }; #endif /* USE_GNOME */ @@ -550,11 +553,15 @@ /*{"login", optional_argument, NULL, 'l'}, */ {"user", required_argument, NULL, 'u'}, {"file", required_argument, NULL, 'f'}, + {"debug", no_argument, NULL, 'd'}, {"version", no_argument, NULL, 'v'}, {0, 0, 0, 0} }; #endif +#ifdef DEBUG + opt_debug = 1; +#endif #ifdef ENABLE_NLS bindtextdomain(PACKAGE, LOCALEDIR); @@ -660,7 +667,7 @@ #else opterr = 1; #endif - while ((opt = getopt_long(argc, argv, "ahu:f:v", long_options, NULL)) != -1) { + while ((opt = getopt_long(argc, argv, "adhu:f:v", long_options, NULL)) != -1) { switch (opt) { case 'u': /* set user */ opt_user = 1; @@ -668,6 +675,9 @@ break; case 'a': /* account editor */ opt_acct = 1; + break; + case 'd': /* debug */ + opt_debug = 1; break; case 'f': opt_rcfile_arg = g_strdup(optarg); Index: gaim.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/gaim.h,v retrieving revision 1.300 retrieving revision 1.301 diff -u -d -r1.300 -r1.301 --- gaim.h 2001/11/30 21:16:27 1.300 +++ gaim.h 2001/12/01 01:48:26 1.301 @@ -189,6 +189,7 @@ extern int opt_away; extern char *opt_away_arg; extern char *opt_rcfile_arg; +extern int opt_debug; extern guint misc_options; #define OPT_MISC_DEBUG 0x00000001 Index: module.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/module.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- module.c 2001/11/02 01:41:37 1.13 +++ module.c 2001/12/01 01:48:26 1.14 @@ -369,10 +369,9 @@ static void debug_event(enum gaim_event event, void *arg1, void *arg2, void *arg3, void *arg4) { -#ifndef DEBUG - if (!(misc_options & OPT_MISC_DEBUG)) + if (!opt_debug && !(misc_options & OPT_MISC_DEBUG)) return; -#endif + switch (event) { case event_quit: debug_printf("%s\n", event_name(event)); Index: prefs.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/prefs.c,v retrieving revision 1.204 retrieving revision 1.205 diff -u -d -r1.204 -r1.205 --- prefs.c 2001/11/26 22:33:21 1.204 +++ prefs.c 2001/12/01 01:48:26 1.205 @@ -2516,9 +2516,8 @@ if (scroll) gtk_adjustment_set_value(adj, adj->upper - adj->lower - adj->page_size); } -#ifdef DEBUG - g_print("%s", s); -#endif + if (opt_debug) + g_print("%s", s); g_free(s); } Index: util.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/util.c,v retrieving revision 1.111 retrieving revision 1.112 diff -u -d -r1.111 -r1.112 --- util.c 2001/11/02 01:41:37 1.111 +++ util.c 2001/12/01 01:48:26 1.112 @@ -771,6 +771,7 @@ " account(s) to use)\n" " -u, --user=NAME use account NAME\n" " -f, --file=FILE use FILE as config\n" + " -d, --debug print debugging messages to stdout\n" " -v, --version display version information window\n" " -h, --help display this help and exit\n", name); break; |
From: Eric W. <war...@us...> - 2001-12-01 01:13:16
|
Update of /cvsroot/gaim/gaim/src/protocols/oscar In directory usw-pr-cvs1:/tmp/cvs-serv27900/protocols/oscar Modified Files: oscar.c Log Message: i think this is better. Index: oscar.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/oscar.c,v retrieving revision 1.78 retrieving revision 1.79 diff -u -d -r1.78 -r1.79 --- oscar.c 2001/12/01 00:56:31 1.78 +++ oscar.c 2001/12/01 01:13:12 1.79 @@ -82,8 +82,7 @@ guint cnpa; guint paspa; - int create_exchange; - char *create_name; + GSList *create_rooms; gboolean conf; gboolean reqemail; @@ -102,6 +101,11 @@ GSList *evilhack; }; +struct create_room { + char *name; + int exchange; +}; + struct chat_connection { char *name; char *show; /* AOL did something funny to us */ @@ -365,10 +369,12 @@ gaim_input_remove(odata->cnpa); odata->cnpa = 0; debug_printf("removing chatnav input watcher\n"); - if (odata->create_exchange) { - odata->create_exchange = 0; - g_free(odata->create_name); - odata->create_name = NULL; + while (odata->create_rooms) { + struct create_room *cr = odata->create_rooms->data; + g_free(cr->name); + odata->create_rooms = + g_slist_remove(odata->create_rooms, cr); + g_free(cr); do_error_dialog(_("Chat is currently unavailable"), _("Gaim - Chat")); } @@ -446,7 +452,6 @@ char buf[256]; struct gaim_connection *gc = new_gaim_conn(user); struct oscar_data *odata = gc->proto_data = g_new0(struct oscar_data, 1); - odata->create_exchange = 0; if (isdigit(*user->username)) { odata->icq = TRUE; @@ -526,8 +531,12 @@ g_free(odata->evilhack->data); odata->evilhack = g_slist_remove(odata->evilhack, odata->evilhack->data); } - if (odata->create_name) - g_free(odata->create_name); + while (odata->create_rooms) { + struct create_room *cr = odata->create_rooms->data; + g_free(cr->name); + odata->create_rooms = g_slist_remove(odata->create_rooms, cr); + g_free(cr); + } if (odata->email) g_free(odata->email); if (odata->newp) @@ -1680,13 +1689,13 @@ debug_printf("chat info: \tExchange List: (%d total)\n", exchangecount); for (i = 0; i < exchangecount; i++) debug_printf("chat info: \t\t%d\n", exchanges[i].number); - if (odata->create_exchange) { - debug_printf("creating room %s\n", odata->create_name); - aim_chatnav_createroom(sess, fr->conn, odata->create_name, - odata->create_exchange); - odata->create_exchange = 0; - g_free(odata->create_name); - odata->create_name = NULL; + while (odata->create_rooms) { + struct create_room *cr = odata->create_rooms->data; + debug_printf("creating room %s\n", cr->name); + aim_chatnav_createroom(sess, fr->conn, cr->name, cr->exchange); + g_free(cr->name); + odata->create_rooms = g_slist_remove(odata->create_rooms, cr); + g_free(cr); } } break; @@ -2452,9 +2461,11 @@ aim_chatnav_createroom(odata->sess, cur, name, *exchange); } else { /* this gets tricky */ + struct create_room *cr = g_new0(struct create_room, 1); debug_printf("chatnav does not exist, opening chatnav\n"); - odata->create_exchange = *exchange; - odata->create_name = g_strdup(name); + cr->exchange = *exchange; + cr->name = g_strdup(name); + odata->create_rooms = g_slist_append(odata->create_rooms, cr); aim_reqservice(odata->sess, odata->conn, AIM_CONN_TYPE_CHATNAV); } } |
Update of /cvsroot/gaim/gaim/src/protocols/oscar In directory usw-pr-cvs1:/tmp/cvs-serv24543/protocols/oscar Modified Files: aim.h aim_cbtypes.h aim_internal.h auth.c chat.c chatnav.c conn.c misc.c oscar.c service.c tlv.c Log Message: new libfaim stuff. Index: aim.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/aim.h,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- aim.h 2001/11/19 12:23:40 1.23 +++ aim.h 2001/12/01 00:56:30 1.24 @@ -130,48 +130,42 @@ #define AIM_MD5_STRING "AOL Instant Messenger (SM)" /* - * Client info. Filled in by the client and passed - * in to aim_login(). The information ends up - * getting passed to OSCAR through the initial - * login command. - * - * XXX: Should this be per-session? -mid + * Client info. Filled in by the client and passed in to + * aim_send_login(). The information ends up getting passed to OSCAR + * through the initial login command. * */ struct client_info_s { - char clientstring[100]; /* arbitrary size */ + const char *clientstring; + fu16_t clientid; int major; int minor; + int point; int build; - char country[3]; - char lang[3]; - int major2; - int minor2; - long unknown; + const char *country; /* two-letter abbrev */ + const char *lang; /* two-letter abbrev */ }; #define AIM_CLIENTINFO_KNOWNGOOD_3_5_1670 { \ "AOL Instant Messenger (SM), version 3.5.1670/WIN32", \ + 0x0004, \ 0x0003, \ 0x0005, \ + 0x0000, \ 0x0686, \ "us", \ "en", \ - 0x0004, \ - 0x0000, \ - 0x0000002a, \ } #define AIM_CLIENTINFO_KNOWNGOOD_4_1_2010 { \ "AOL Instant Messenger (SM), version 4.1.2010/WIN32", \ 0x0004, \ + 0x0004, \ 0x0001, \ + 0x0000, \ 0x07da, \ "us", \ "en", \ - 0x0004, \ - 0x0000, \ - 0x0000004b, \ } /* @@ -336,14 +330,6 @@ int (*tx_enqueue)(struct aim_session_s *, aim_frame_t *); /* - * This is a dreadful solution to the what-room-are-we-joining - * problem. (There's no connection between the service - * request and the resulting redirect.) - */ - char *pendingjoin; - fu16_t pendingjoinexchange; - - /* * Outstanding snac handling * * XXX: Should these be per-connection? -mid @@ -465,6 +451,7 @@ faim_internal fu16_t aim_gettlv16(aim_tlvlist_t *list, const fu16_t t, const int n); faim_internal fu32_t aim_gettlv32(aim_tlvlist_t *list, const fu16_t t, const int n); faim_internal int aim_writetlvchain(aim_bstream_t *bs, aim_tlvlist_t **list); +faim_internal int aim_addtlvtochain8(aim_tlvlist_t **list, const fu16_t t, const fu8_t v); faim_internal int aim_addtlvtochain16(aim_tlvlist_t **list, const fu16_t t, const fu16_t v); faim_internal int aim_addtlvtochain32(aim_tlvlist_t **list, const fu16_t type, const fu32_t v); faim_internal int aim_addtlvtochain_raw(aim_tlvlist_t **list, const fu16_t t, const fu16_t l, const fu8_t *v); @@ -520,6 +507,18 @@ struct aim_clientrelease latestbeta; }; +/* Callback data for redirect. */ +struct aim_redirect_data { + fu16_t group; + const char *ip; + const fu8_t *cookie; + struct { /* group == AIM_CONN_TYPE_CHAT */ + fu16_t exchange; + const char *room; + fu16_t instance; + } chat; +}; + faim_export int aim_clientready(aim_session_t *sess, aim_conn_t *conn); faim_export int aim_sendflapver(aim_session_t *sess, aim_conn_t *conn); faim_export int aim_request_login(aim_session_t *sess, aim_conn_t *conn, const char *sn); @@ -926,8 +925,15 @@ /* aim_search.c */ faim_export int aim_usersearch_address(aim_session_t *, aim_conn_t *, const char *); +/* These apply to exchanges as well. */ +#define AIM_CHATROOM_FLAG_EVILABLE 0x0001 +#define AIM_CHATROOM_FLAG_NAV_ONLY 0x0002 +#define AIM_CHATROOM_FLAG_INSTANCING_ALLOWED 0x0004 +#define AIM_CHATROOM_FLAG_OCCUPANT_PEEK_ALLOWED 0x0008 + struct aim_chat_exchangeinfo { fu16_t number; + fu16_t flags; char *name; char *charset1; char *lang1; @@ -939,7 +945,7 @@ #define AIM_CHATFLAGS_AWAY 0x0002 faim_export int aim_chat_send_im(aim_session_t *sess, aim_conn_t *conn, fu16_t flags, const char *msg, int msglen); faim_export int aim_chat_join(aim_session_t *sess, aim_conn_t *conn, fu16_t exchange, const char *roomname, fu16_t instance); -faim_export int aim_chat_attachname(aim_conn_t *conn, const char *roomname); +faim_export int aim_chat_attachname(aim_conn_t *conn, fu16_t exchange, const char *roomname, fu16_t instance); faim_export char *aim_chat_getname(aim_conn_t *conn); faim_export aim_conn_t *aim_chat_getconn(aim_session_t *, const char *name); Index: aim_cbtypes.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/aim_cbtypes.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- aim_cbtypes.h 2001/11/18 00:21:49 1.4 +++ aim_cbtypes.h 2001/12/01 00:56:30 1.5 @@ -236,7 +236,6 @@ #define AIM_CB_SPECIAL_CONNCOMPLETE 0x0004 #define AIM_CB_SPECIAL_FLAPVER 0x0005 #define AIM_CB_SPECIAL_CONNINITDONE 0x0006 -#define AIM_CB_SPECIAL_DEBUGCONN_CONNECT 0xe001 #define AIM_CB_SPECIAL_UNKNOWN 0xffff #define AIM_CB_SPECIAL_DEFAULT AIM_CB_SPECIAL_UNKNOWN Index: aim_internal.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/aim_internal.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- aim_internal.h 2001/11/17 13:57:30 1.10 +++ aim_internal.h 2001/12/01 00:56:30 1.11 @@ -127,6 +127,13 @@ faim_internal int aim_parse_unknown(aim_session_t *, aim_frame_t *, ...); +/* Stored in ->priv of the service request SNAC for chats. */ +struct chatsnacinfo { + fu16_t exchange; + char name[128]; + fu16_t instance; +}; + /* these are used by aim_*_clientready */ #define AIM_TOOL_JAVA 0x0001 #define AIM_TOOL_MAC 0x0002 @@ -209,6 +216,8 @@ faim_internal int aim_request_sendfile(aim_session_t *sess, const char *sn, const char *filename, fu16_t numfiles, fu32_t totsize, fu8_t *ip, fu16_t port, fu8_t *ckret); faim_internal void aim_conn_close_rend(aim_session_t *sess, aim_conn_t *conn); faim_internal void aim_conn_kill_rend(aim_session_t *sess, aim_conn_t *conn); + +faim_internal void aim_conn_kill_chat(aim_session_t *sess, aim_conn_t *conn); /* These are all handled internally now. */ faim_internal int aim_setversions(aim_session_t *sess, aim_conn_t *conn); Index: auth.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/auth.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- auth.c 2001/11/10 02:07:37 1.4 +++ auth.c 2001/12/01 00:56:30 1.5 @@ -172,12 +172,12 @@ aim_addtlvtochain_raw(&tl, 0x0001, strlen(sn), sn); aim_addtlvtochain_raw(&tl, 0x0002, strlen(password), password_encoded); aim_addtlvtochain_raw(&tl, 0x0003, strlen(clientstr), clientstr); - aim_addtlvtochain16(&tl, 0x0016, 0x010a); - aim_addtlvtochain16(&tl, 0x0017, 0x0004); - aim_addtlvtochain16(&tl, 0x0018, 0x0041); - aim_addtlvtochain16(&tl, 0x0019, 0x0001); - aim_addtlvtochain16(&tl, 0x001a, 0x0cd1); - aim_addtlvtochain32(&tl, 0x0014, 0x00000055); + aim_addtlvtochain16(&tl, 0x0016, 0x010a); /* cliend ID */ + aim_addtlvtochain16(&tl, 0x0017, 0x0004); /* major version */ + aim_addtlvtochain16(&tl, 0x0018, 0x0041); /* minor version */ + aim_addtlvtochain16(&tl, 0x0019, 0x0001); /* point version */ + aim_addtlvtochain16(&tl, 0x001a, 0x0cd1); /* build */ + aim_addtlvtochain32(&tl, 0x0014, 0x00000055); /* distribution chan */ aim_addtlvtochain_raw(&tl, 0x000f, strlen(lang), lang); aim_addtlvtochain_raw(&tl, 0x000e, strlen(country), country); @@ -200,12 +200,22 @@ * then the client information you send here must exactly match the * executable that you're pulling the data from. * - * Latest WinAIM: + * WinAIM 4.8.2540 + * clientstring = "AOL Instant Messenger (SM), version 4.8.2540/WIN32" + * clientid = 0x0109 + * major = 0x0004 + * minor = 0x0008 + * point = 0x0000 + * build = 0x09ec + * t(0x0014) = 0x000000af + * t(0x004a) = 0x01 + * + * WinAIM 4.3.2188: * clientstring = "AOL Instant Messenger (SM), version 4.3.2188/WIN32" - * major2 = 0x0109 + * clientid = 0x0109 * major = 0x0400 * minor = 0x0003 - * minor2 = 0x0000 + * point = 0x0000 * build = 0x088c * unknown = 0x00000086 * lang = "en" @@ -214,70 +224,64 @@ * * Latest WinAIM that libfaim can emulate without server-side buddylists: * clientstring = "AOL Instant Messenger (SM), version 4.1.2010/WIN32" - * major2 = 0x0004 + * clientid = 0x0004 * major = 0x0004 * minor = 0x0001 - * minor2 = 0x0000 + * point = 0x0000 * build = 0x07da * unknown= 0x0000004b * * WinAIM 3.5.1670: * clientstring = "AOL Instant Messenger (SM), version 3.5.1670/WIN32" - * major2 = 0x0004 + * clientid = 0x0004 * major = 0x0003 * minor = 0x0005 - * minor2 = 0x0000 + * point = 0x0000 * build = 0x0686 * unknown =0x0000002a * * Java AIM 1.1.19: * clientstring = "AOL Instant Messenger (TM) version 1.1.19 for Java built 03/24/98, freeMem 215871 totalMem 1048567, i686, Linus, #2 SMP Sun Feb 11 03:41:17 UTC 2001 2.4.1-ac9, IBM Corporation, 1.1.8, 45.3, Tue Mar 27 12:09:17 PST 2001" - * major2 = 0x0001 + * clientid = 0x0001 * major = 0x0001 * minor = 0x0001 - * minor2 = (not sent) + * point = (not sent) * build = 0x0013 * unknown= (not sent) * * AIM for Linux 1.1.112: * clientstring = "AOL Instant Messenger (SM)" - * major2 = 0x1d09 + * clientid = 0x1d09 * major = 0x0001 * minor = 0x0001 - * minor2 = 0x0001 + * point = 0x0001 * build = 0x0070 * unknown= 0x0000008b * serverstore = 0x01 * */ -faim_export int aim_send_login(aim_session_t *sess, aim_conn_t *conn, const char *sn, const char *password, struct client_info_s *clientinfo, const char *key) +faim_export int aim_send_login(aim_session_t *sess, aim_conn_t *conn, const char *sn, const char *password, struct client_info_s *ci, const char *key) { aim_frame_t *fr; aim_tlvlist_t *tl = NULL; fu8_t digest[16]; aim_snacid_t snacid; - if (!clientinfo || !sn || !password) + if (!ci || !sn || !password) return -EINVAL; + /* + * What the XORLOGIN flag _really_ means is that its an ICQ login, + * which is really stupid and painful, so its not done here. + * + */ if (sess->flags & AIM_SESS_FLAGS_XORLOGIN) return goddamnicq2(sess, conn, sn, password); + if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 1152))) return -ENOMEM; - if (sess->flags & AIM_SESS_FLAGS_XORLOGIN) { - fr->hdr.flap.type = 0x01; - - /* Use very specific version numbers to further indicate hack */ - clientinfo->major2 = 0x010a; - clientinfo->major = 0x0004; - clientinfo->minor = 0x003c; - clientinfo->minor2 = 0x0001; - clientinfo->build = 0x0cce; - clientinfo->unknown = 0x00000055; - } - snacid = aim_cachesnac(sess, 0x0017, 0x0002, 0x0000, NULL, 0); aim_putsnac(&fr->data, 0x0017, 0x0002, 0x0000, snacid); @@ -286,15 +290,22 @@ aim_encode_password_md5(password, key, digest); aim_addtlvtochain_raw(&tl, 0x0025, 16, digest); - aim_addtlvtochain_raw(&tl, 0x0003, strlen(clientinfo->clientstring), clientinfo->clientstring); - aim_addtlvtochain16(&tl, 0x0016, (fu16_t)clientinfo->major2); - aim_addtlvtochain16(&tl, 0x0017, (fu16_t)clientinfo->major); - aim_addtlvtochain16(&tl, 0x0018, (fu16_t)clientinfo->minor); - aim_addtlvtochain16(&tl, 0x0019, (fu16_t)clientinfo->minor2); - aim_addtlvtochain16(&tl, 0x001a, (fu16_t)clientinfo->build); - aim_addtlvtochain_raw(&tl, 0x000e, strlen(clientinfo->country), clientinfo->country); - aim_addtlvtochain_raw(&tl, 0x000f, strlen(clientinfo->lang), clientinfo->lang); - aim_addtlvtochain16(&tl, 0x0009, 0x0015); + if (ci->clientstring) + aim_addtlvtochain_raw(&tl, 0x0003, strlen(ci->clientstring), ci->clientstring); + aim_addtlvtochain16(&tl, 0x0016, (fu16_t)ci->clientid); + aim_addtlvtochain16(&tl, 0x0017, (fu16_t)ci->major); + aim_addtlvtochain16(&tl, 0x0018, (fu16_t)ci->minor); + aim_addtlvtochain16(&tl, 0x0019, (fu16_t)ci->point); + aim_addtlvtochain16(&tl, 0x001a, (fu16_t)ci->build); + aim_addtlvtochain_raw(&tl, 0x000e, strlen(ci->country), ci->country); + aim_addtlvtochain_raw(&tl, 0x000f, strlen(ci->lang), ci->lang); + + /* + * If set, old-fashioned buddy lists will not work. You will need + * to use SSI. + */ + if (0) + aim_addtlvtochain8(&tl, 0x004a, 0x01); aim_writetlvchain(&fr->data, &tl); Index: chat.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/chat.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- chat.c 2001/11/05 02:05:06 1.6 +++ chat.c 2001/12/01 00:56:30 1.7 @@ -8,16 +8,37 @@ #define FAIM_INTERNAL #include <aim.h> +/* Stored in the ->priv of chat connections */ +struct chatconnpriv { + fu16_t exchange; + char *name; + fu16_t instance; +}; + +faim_internal void aim_conn_kill_chat(aim_session_t *sess, aim_conn_t *conn) +{ + struct chatconnpriv *ccp = (struct chatconnpriv *)conn->priv; + + if (ccp) + free(ccp->name); + free(ccp); + + return; +} + faim_export char *aim_chat_getname(aim_conn_t *conn) { - + struct chatconnpriv *ccp; + if (!conn) return NULL; - + if (conn->type != AIM_CONN_TYPE_CHAT) return NULL; - return (char *)conn->priv; /* yuck ! */ + ccp = (struct chatconnpriv *)conn->priv; + + return ccp->name; } /* XXX get this into conn.c -- evil!! */ @@ -26,21 +47,25 @@ aim_conn_t *cur; for (cur = sess->connlist; cur; cur = cur->next) { + struct chatconnpriv *ccp = (struct chatconnpriv *)cur->priv; + if (cur->type != AIM_CONN_TYPE_CHAT) continue; if (!cur->priv) { faimdprintf(sess, 0, "faim: chat: chat connection with no name! (fd = %d)\n", cur->fd); continue; } - if (strcmp((char *)cur->priv, name) == 0) + + if (strcmp(ccp->name, name) == 0) break; } return cur; } -faim_export int aim_chat_attachname(aim_conn_t *conn, const char *roomname) +faim_export int aim_chat_attachname(aim_conn_t *conn, fu16_t exchange, const char *roomname, fu16_t instance) { + struct chatconnpriv *ccp; if (!conn || !roomname) return -EINVAL; @@ -48,8 +73,15 @@ if (conn->priv) free(conn->priv); - conn->priv = strdup(roomname); + if (!(ccp = malloc(sizeof(struct chatconnpriv)))) + return -ENOMEM; + ccp->exchange = exchange; + ccp->name = strdup(roomname); + ccp->instance = instance; + + conn->priv = (void *)ccp; + return 0; } @@ -95,7 +127,7 @@ aimutil_put8(ckstr+i, (fu8_t) rand()); cookie = aim_mkcookie(ckstr, AIM_COOKIETYPE_CHAT, NULL); - cookie->data = strdup(conn->priv); /* chat hack dependent */ + cookie->data = NULL; /* XXX store something useful here */ aim_cachecookie(sess, cookie); @@ -186,15 +218,20 @@ aim_frame_t *fr; aim_snacid_t snacid; aim_tlvlist_t *tl = NULL; + struct chatsnacinfo csi; if (!sess || !conn || !roomname || !strlen(roomname)) return -EINVAL; - if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+9+strlen(roomname)+2))) + if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 512))) return -ENOMEM; + memset(&csi, 0, sizeof(csi)); + csi.exchange = exchange; + strncpy(csi.name, roomname, sizeof(csi.name)); + csi.instance = instance; - snacid = aim_cachesnac(sess, 0x0001, 0x0004, 0x0000, roomname, strlen(roomname)+1); + snacid = aim_cachesnac(sess, 0x0001, 0x0004, 0x0000, &csi, sizeof(csi)); aim_putsnac(&fr->data, 0x0001, 0x0004, 0x0000, snacid); /* @@ -206,18 +243,6 @@ aim_writetlvchain(&fr->data, &tl); aim_freetlvchain(&tl); - /* - * Chat hack. - * - * XXX: A problem occurs here if we request a channel - * join but it fails....pendingjoin will be nonnull - * even though the channel is never going to get a - * redirect! - * - */ - sess->pendingjoin = strdup(roomname); - sess->pendingjoinexchange = exchange; - aim_tx_enqueue(sess, fr); return 0; @@ -371,7 +396,7 @@ fu16_t tlvcount = 0; aim_tlvlist_t *tlvlist; char *roomdesc = NULL; - fu16_t unknown_c9 = 0; + fu16_t flags = 0; fu32_t creationtime = 0; fu16_t maxmsglen = 0, maxvisiblemsglen = 0; fu16_t unknown_d2 = 0, unknown_d5 = 0; @@ -424,10 +449,10 @@ } /* - * Type 0x00c9: Unknown. (2 bytes) + * Type 0x00c9: Flags. (AIM_CHATROOM_FLAG) */ if (aim_gettlv(tlvlist, 0x00c9, 1)) - unknown_c9 = aim_gettlv16(tlvlist, 0x00c9, 1); + flags = aim_gettlv16(tlvlist, 0x00c9, 1); /* * Type 0x00ca: Creation time (4 bytes) @@ -504,7 +529,7 @@ usercount, userinfo, roomdesc, - unknown_c9, + flags, creationtime, maxmsglen, unknown_d2, Index: chatnav.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/chatnav.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- chatnav.c 2001/11/05 02:05:06 1.3 +++ chatnav.c 2001/12/01 00:56:30 1.4 @@ -20,11 +20,14 @@ faim_export int aim_chatnav_createroom(aim_session_t *sess, aim_conn_t *conn, const char *name, fu16_t exchange) { + static const char ck[] = {"create"}; + static const char lang[] = {"en"}; + static const char charset[] = {"us-ascii"}; aim_frame_t *fr; aim_snacid_t snacid; aim_tlvlist_t *tl = NULL; - if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10+12+strlen("invite")+strlen(name)))) + if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 1152))) return -ENOMEM; snacid = aim_cachesnac(sess, 0x000d, 0x0008, 0x0000, NULL, 0); @@ -33,9 +36,9 @@ /* exchange */ aimbs_put16(&fr->data, exchange); - /* room cookie */ - aimbs_put8(&fr->data, strlen("invite")); - aimbs_putraw(&fr->data, "invite", strlen("invite")); + /* action cookie */ + aimbs_put8(&fr->data, strlen(ck)); + aimbs_putraw(&fr->data, ck, strlen(ck)); /* * instance @@ -48,8 +51,9 @@ /* detail level */ aimbs_put8(&fr->data, 0x01); - /* room name */ aim_addtlvtochain_raw(&tl, 0x00d3, strlen(name), name); + aim_addtlvtochain_raw(&tl, 0x00d6, strlen(charset), charset); + aim_addtlvtochain_raw(&tl, 0x00d7, strlen(lang), lang); /* tlvcount */ aimbs_put16(&fr->data, aim_counttlvchain(&tl)); @@ -93,7 +97,7 @@ aim_bstream_init(&tbs, exchangetlv->value, exchangetlv->length); curexchange++; - + exchanges = realloc(exchanges, curexchange * sizeof(struct aim_chat_exchangeinfo)); /* exchange number */ @@ -101,6 +105,15 @@ innerlist = aim_readtlvchain(&tbs); /* + * Type 0x000a: Unknown. + * + * Usually three bytes: 0x0114 (exchange 1) or 0x010f (others). + * + */ + if (aim_gettlv(innerlist, 0x000a, 1)) + ; + + /* * Type 0x000d: Unknown. */ if (aim_gettlv(innerlist, 0x000d, 1)) @@ -124,10 +137,16 @@ } /* - * Type 0x00c9: Unknown + * Type 0x00c9: Flags + * + * 1 Evilable + * 2 Nav Only + * 4 Instancing Allowed + * 8 Occupant Peek Allowed + * */ if (aim_gettlv(innerlist, 0x00c9, 1)) - ; + exchanges[curexchange-1].flags = aim_gettlv16(innerlist, 0x00c9, 1); /* * Type 0x00ca: Creation Date @@ -154,7 +173,7 @@ ; /* - * Type 0x00d3: Exchange Name + * Type 0x00d3: Exchange Description */ if (aim_gettlv(innerlist, 0x00d3, 1)) exchanges[curexchange-1].name = aim_gettlv_str(innerlist, 0x00d3, 1); @@ -162,6 +181,12 @@ exchanges[curexchange-1].name = NULL; /* + * Type 0x00d4: Exchange Description URL + */ + if (aim_gettlv(innerlist, 0x00d4, 1)) + ; + + /* * Type 0x00d5: Creation Permissions * * 0 Creation not allowed @@ -207,6 +232,12 @@ else exchanges[curexchange-1].lang2 = NULL; + /* + * Type 0x00da: Unknown + */ + if (aim_gettlv(innerlist, 0x00da, 1)) + ; + aim_freetlvchain(&innerlist); } @@ -306,6 +337,18 @@ /* * Since multiple things can trigger this callback, we must lookup the * snacid to determine the original snac subtype that was called. + * + * XXX This isn't really how this works. But this is: Every d/9 response + * has a 16bit value at the beginning. That matches to: + * Short Desc = 1 + * Full Desc = 2 + * Instance Info = 4 + * Nav Short Desc = 8 + * Nav Instance Info = 16 + * And then everything is really asynchronous. There is no specific + * attachment of a response to a create room request, for example. Creating + * the room yields no different a response than requesting the room's info. + * */ static int parseinfo(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) { @@ -363,8 +406,8 @@ mod->family = 0x000d; mod->version = 0x0001; - mod->toolid = 0x0004; /* XXX this doesn't look right */ - mod->toolversion = 0x0001; /* XXX nor does this */ + mod->toolid = 0x0010; + mod->toolversion = 0x047c; mod->flags = 0; strncpy(mod->name, "chatnav", sizeof(mod->name)); mod->snachandler = snachandler; Index: conn.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/conn.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- conn.c 2001/11/17 13:57:30 1.8 +++ conn.c 2001/12/01 00:56:30 1.9 @@ -171,6 +171,8 @@ */ if ((*deadconn)->type == AIM_CONN_TYPE_RENDEZVOUS) aim_conn_kill_rend(sess, *deadconn); + else if ((*deadconn)->type == AIM_CONN_TYPE_CHAT) + aim_conn_kill_chat(sess, *deadconn); if ((*deadconn)->inside) { aim_conn_inside_t *inside = (aim_conn_inside_t *)(*deadconn)->inside; @@ -864,8 +866,6 @@ aim_connrst(sess); sess->queue_outgoing = NULL; sess->queue_incoming = NULL; - sess->pendingjoin = NULL; - sess->pendingjoinexchange = 0; aim_initsnachash(sess); sess->msgcookies = NULL; sess->snacid_next = 0x00000001; Index: misc.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/misc.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- misc.c 2001/11/10 01:48:17 1.9 +++ misc.c 2001/12/01 00:56:30 1.10 @@ -169,16 +169,6 @@ } /* - * aim_debugconn_sendconnect() - * - * For aimdebugd. If you don't know what it is, you don't want to. - */ -faim_export int aim_debugconn_sendconnect(aim_session_t *sess, aim_conn_t *conn) -{ - return aim_genericreq_n(sess, conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_DEBUGCONN_CONNECT); -} - -/* * Generic routine for sending commands. * * Index: oscar.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/oscar.c,v retrieving revision 1.77 retrieving revision 1.78 diff -u -d -r1.77 -r1.78 --- oscar.c 2001/11/30 21:16:28 1.77 +++ oscar.c 2001/12/01 00:56:31 1.78 @@ -105,7 +105,8 @@ struct chat_connection { char *name; char *show; /* AOL did something funny to us */ - fu16_t exchange; /* XXX should have instance here too */ + fu16_t exchange; + fu16_t instance; int fd; /* this is redundant since we have the conn below */ aim_conn_t *conn; int inpa; @@ -155,7 +156,7 @@ return m; } -static char *extract_name(char *name) { +static char *extract_name(const char *name) { char *tmp; int i, j; char *x = strchr(name, '-'); @@ -858,6 +859,7 @@ struct chat_connection *chatcon; static int id = 1; + aim_conn_addhandler(sess, fr->conn, 0x000e, 0x0001, gaim_parse_genericerr, 0); aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERJOIN, gaim_chat_join, 0); aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_USERLEAVE, gaim_chat_leave, 0); aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CHT, AIM_CB_CHT_ROOMINFOUPDATE, gaim_chat_info_update, 0); @@ -874,6 +876,7 @@ static int conninitdone_chatnav(aim_session_t *sess, aim_frame_t *fr, ...) { + aim_conn_addhandler(sess, fr->conn, 0x000d, 0x0001, gaim_parse_genericerr, 0); aim_conn_addhandler(sess, fr->conn, AIM_CB_FAM_CTN, AIM_CB_CTN_INFO, gaim_chatnav_info, 0); aim_clientready(sess, fr->conn); @@ -971,15 +974,12 @@ GAIM_INPUT_READ, oscar_callback, tstconn); odata->oscar_chats = g_slist_append(odata->oscar_chats, ccon); - aim_chat_attachname(tstconn, ccon->name); } /* Hrmph. I don't know how to make this look better. --mid */ static int gaim_handle_redirect(aim_session_t *sess, aim_frame_t *fr, ...) { va_list ap; - fu16_t serviceid; - char *ip; - fu8_t *cookie; + struct aim_redirect_data *redir; struct gaim_connection *gc = sess->aux_data; struct aim_user *user = gc->user; aim_conn_t *tstconn; @@ -991,19 +991,18 @@ atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT, va_start(ap, fr); - serviceid = (fu16_t)va_arg(ap, unsigned int); - ip = va_arg(ap, char *); - cookie = (fu8_t *)va_arg(ap, unsigned char *); + redir = va_arg(ap, struct aim_redirect_data *); + va_end(ap); - for (i = 0; i < (int)strlen(ip); i++) { - if (ip[i] == ':') { - port = atoi(&(ip[i+1])); + for (i = 0; i < (int)strlen(redir->ip); i++) { + if (redir->ip[i] == ':') { + port = atoi(&(redir->ip[i+1])); break; } } - host = g_strndup(ip, i); + host = g_strndup(redir->ip, i); - switch(serviceid) { + switch(redir->group) { case 0x7: /* Authorizer */ debug_printf("Reconnecting with authorizor...\n"); tstconn = aim_newconn(sess, AIM_CONN_TYPE_AUTH, NULL); @@ -1025,7 +1024,7 @@ g_free(host); return 1; } - aim_sendcookie(sess, tstconn, cookie); + aim_sendcookie(sess, tstconn, redir->cookie); break; case 0xd: /* ChatNav */ tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHATNAV, NULL); @@ -1044,17 +1043,12 @@ g_free(host); return 1; } - aim_sendcookie(sess, tstconn, cookie); + aim_sendcookie(sess, tstconn, redir->cookie); break; case 0xe: /* Chat */ { - char *roomname; - fu16_t exchange; struct chat_connection *ccon; - roomname = va_arg(ap, char *); - exchange = (fu16_t)va_arg(ap, unsigned int); - tstconn = aim_newconn(sess, AIM_CONN_TYPE_CHAT, NULL); if (tstconn == NULL) { debug_printf("unable to connect to chat server\n"); @@ -1068,9 +1062,10 @@ ccon->conn = tstconn; ccon->gc = gc; ccon->fd = -1; - ccon->name = g_strdup(roomname); - ccon->exchange = exchange; - ccon->show = extract_name(roomname); + ccon->name = g_strdup(redir->chat.room); + ccon->exchange = redir->chat.exchange; + ccon->instance = redir->chat.instance; + ccon->show = extract_name(redir->chat.room); ccon->conn->status |= AIM_CONN_STATUS_INPROGRESS; ccon->conn->fd = proxy_connect(host, port, oscar_chat_connect, ccon); @@ -1083,16 +1078,14 @@ g_free(ccon); return 1; } - aim_sendcookie(sess, tstconn, cookie); - debug_printf("Connected to chat room %s exchange %d\n", roomname, exchange); + aim_sendcookie(sess, tstconn, redir->cookie); + debug_printf("Connected to chat room %s exchange %d\n", ccon->name, ccon->exchange); } break; default: /* huh? */ - debug_printf("got redirect for unknown service 0x%04x\n", serviceid); + debug_printf("got redirect for unknown service 0x%04x\n", redir->group); break; } - - va_end(ap); g_free(host); return 1; Index: service.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/service.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- service.c 2001/11/17 13:57:30 1.2 +++ service.c 2001/12/01 00:56:31 1.3 @@ -100,15 +100,14 @@ /* Redirect (group 1, type 5) */ static int redirect(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) { - int serviceid; - fu8_t *cookie; - char *ip; + struct aim_redirect_data redir; aim_rxcallback_t userfunc; aim_tlvlist_t *tlvlist; - char *chathack = NULL; - int chathackex = 0; + aim_snac_t *origsnac = NULL; int ret = 0; + memset(&redir, 0, sizeof(redir)); + tlvlist = aim_readtlvchain(bs); if (!aim_gettlv(tlvlist, 0x000d, 1) || @@ -118,26 +117,30 @@ return 0; } - serviceid = aim_gettlv16(tlvlist, 0x000d, 1); - ip = aim_gettlv_str(tlvlist, 0x0005, 1); - cookie = aim_gettlv_str(tlvlist, 0x0006, 1); + redir.group = aim_gettlv16(tlvlist, 0x000d, 1); + redir.ip = aim_gettlv_str(tlvlist, 0x0005, 1); + redir.cookie = aim_gettlv_str(tlvlist, 0x0006, 1); - /* - * Chat hack. - */ - if ((serviceid == AIM_CONN_TYPE_CHAT) && sess->pendingjoin) { - chathack = sess->pendingjoin; - chathackex = sess->pendingjoinexchange; - sess->pendingjoin = NULL; - sess->pendingjoinexchange = 0; + /* Fetch original SNAC so we can get csi if needed */ + origsnac = aim_remsnac(sess, snac->id); + + if ((redir.group == AIM_CONN_TYPE_CHAT) && origsnac) { + struct chatsnacinfo *csi = (struct chatsnacinfo *)origsnac->data; + + redir.chat.exchange = csi->exchange; + redir.chat.room = csi->name; + redir.chat.instance = csi->instance; } if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) - ret = userfunc(sess, rx, serviceid, ip, cookie, chathack, chathackex); + ret = userfunc(sess, rx, &redir); - free(ip); - free(cookie); - free(chathack); + free((void *)redir.ip); + free((void *)redir.cookie); + + if (origsnac) + free(origsnac->data); + free(origsnac); aim_freetlvchain(&tlvlist); Index: tlv.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/tlv.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- tlv.c 2001/10/03 20:36:33 1.4 +++ tlv.c 2001/12/01 00:56:31 1.5 @@ -204,6 +204,24 @@ } /** + * aim_addtlvtochain8 - Add a 8bit integer to a TLV chain + * @list: Destination chain + * @type: TLV type to add + * @val: Value to add + * + * Adds a one-byte unsigned integer to a TLV chain. + * + */ +faim_internal int aim_addtlvtochain8(aim_tlvlist_t **list, const fu16_t t, const fu8_t v) +{ + fu8_t v8[1]; + + aimutil_put8(v8, v); + + return aim_addtlvtochain_raw(list, t, 1, v8); +} + +/** * aim_addtlvtochain16 - Add a 16bit integer to a TLV chain * @list: Destination chain * @type: TLV type to add |
From: Eric W. <war...@us...> - 2001-11-30 21:16:31
|
Update of /cvsroot/gaim/gaim/src/protocols/toc In directory usw-pr-cvs1:/tmp/cvs-serv2552/src/protocols/toc Modified Files: toc.c Log Message: remove chat reason Index: toc.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/toc/toc.c,v retrieving revision 1.35 retrieving revision 1.36 diff -u -d -r1.35 -r1.36 --- toc.c 2001/11/26 20:39:54 1.35 +++ toc.c 2001/11/30 21:16:28 1.36 @@ -720,7 +720,7 @@ add_chat_buddy(b, buddy); else while ((buddy = strtok(NULL, ":")) != NULL) - remove_chat_buddy(b, buddy); + remove_chat_buddy(b, buddy, NULL); } else if (!strcasecmp(c, "CHAT_INVITE")) { char *name, *who, *message; int *id = g_new0(int, 1); |
From: Eric W. <war...@us...> - 2001-11-30 21:16:31
|
Update of /cvsroot/gaim/gaim/src/protocols/oscar In directory usw-pr-cvs1:/tmp/cvs-serv2552/src/protocols/oscar Modified Files: oscar.c Log Message: remove chat reason Index: oscar.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/oscar.c,v retrieving revision 1.76 retrieving revision 1.77 diff -u -d -r1.76 -r1.77 --- oscar.c 2001/11/29 23:17:09 1.76 +++ oscar.c 2001/11/30 21:16:28 1.77 @@ -1774,7 +1774,7 @@ return 1; for (i = 0; i < count; i++) - remove_chat_buddy(c->cnv, info[i].sn); + remove_chat_buddy(c->cnv, info[i].sn, NULL); return 1; } |
From: Eric W. <war...@us...> - 2001-11-30 21:16:31
|
Update of /cvsroot/gaim/gaim/src/protocols/napster In directory usw-pr-cvs1:/tmp/cvs-serv2552/src/protocols/napster Modified Files: napster.c Log Message: remove chat reason Index: napster.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/napster/napster.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- napster.c 2001/11/10 01:22:31 1.14 +++ napster.c 2001/11/30 21:16:27 1.15 @@ -257,7 +257,7 @@ channel = find_channel_by_name(gc, res[0]); convo = find_conversation_by_id(gc, channel->id); - remove_chat_buddy(convo, res[1]); + remove_chat_buddy(convo, res[1], NULL); g_strfreev(res); g_free(buf); |
From: Eric W. <war...@us...> - 2001-11-30 21:16:30
|
Update of /cvsroot/gaim/gaim/src/protocols/msn In directory usw-pr-cvs1:/tmp/cvs-serv2552/src/protocols/msn Modified Files: msn.c Log Message: remove chat reason Index: msn.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/msn/msn.c,v retrieving revision 1.41 retrieving revision 1.42 diff -u -d -r1.41 -r1.42 --- msn.c 2001/11/20 01:01:22 1.41 +++ msn.c 2001/11/30 21:16:27 1.42 @@ -391,7 +391,7 @@ char *user, *tmp = buf; GET_NEXT(tmp); user = tmp; - remove_chat_buddy(ms->chat, user); + remove_chat_buddy(ms->chat, user, NULL); } else { msn_kill_switch(ms); return 0; |
From: Eric W. <war...@us...> - 2001-11-30 21:16:30
|
Update of /cvsroot/gaim/gaim/src/protocols/irc In directory usw-pr-cvs1:/tmp/cvs-serv2552/src/protocols/irc Modified Files: irc.c Log Message: remove chat reason Index: irc.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/irc/irc.c,v retrieving revision 1.60 retrieving revision 1.61 diff -u -d -r1.60 -r1.61 --- irc.c 2001/11/27 16:46:11 1.60 +++ irc.c 2001/11/30 21:16:27 1.61 @@ -677,7 +677,7 @@ return FALSE; } -static void irc_rem_chat_bud(struct gaim_connection *gc, char *nick) +static void irc_rem_chat_bud(struct gaim_connection *gc, char *nick, char *reason) { GSList *bcs = gc->buddy_chats; @@ -693,7 +693,7 @@ who++; if (!g_strcasecmp(who, nick)) { char *tmp = g_strdup(r->data); - remove_chat_buddy(b, tmp); + remove_chat_buddy(b, tmp, reason); g_free(tmp); break; } @@ -865,10 +865,14 @@ gc->buddy_chats = g_slist_remove(gc->buddy_chats, c); c->gc = NULL; g_snprintf(outbuf, sizeof(outbuf), _("You have been kicked from %s: %s"), - word[3], *word_eol[5] == ':' ? word_eol[5] + 1: word_eol[5]); + word[3], *word_eol[5] == ':' ? word_eol[5] + 1 : word_eol[5]); do_error_dialog(outbuf, _("IRC Error")); - } else - irc_rem_chat_bud(gc, word[4]); + } else { + char *reason = *word_eol[5] == ':' ? word_eol[5] + 1 : word_eol[5]; + char *msg = g_strdup_printf(_("Kicked by %s: %s"), nick, reason); + irc_rem_chat_bud(gc, word[4], msg); + g_free(msg); + } } else if (!strcmp(cmd, "KILL")) { /* */ } else if (!strcmp(cmd, "MODE")) { handle_mode(gc, word, word_eol, FALSE); @@ -884,9 +888,12 @@ } else if (!strcmp(cmd, "PART")) { char *chan = cmd + 5; struct conversation *c; + char *reason = word_eol[4]; GList *r; if (*chan == ':') chan++; + if (*reason == ':') + reason++; if (!(c = irc_find_chat(gc, chan))) return FALSE; if (!strcmp(nick, gc->displayname)) { @@ -902,7 +909,7 @@ who++; if (!g_strcasecmp(who, nick)) { char *tmp = g_strdup(r->data); - remove_chat_buddy(c, tmp); + remove_chat_buddy(c, tmp, reason); g_free(tmp); break; } @@ -923,7 +930,7 @@ } } else if (!strcmp(cmd, "PONG")) { /* */ } else if (!strcmp(cmd, "QUIT")) { - irc_rem_chat_bud(gc, nick); + irc_rem_chat_bud(gc, nick, *word_eol[3] == ':' ? word_eol[3] + 1 : word_eol[3]); } else if (!strcmp(cmd, "TOPIC")) { struct conversation *c = irc_find_chat(gc, word[3]); char *topic = *word_eol[4] == ':' ? word_eol[4] + 1 : word_eol[4]; |
From: Eric W. <war...@us...> - 2001-11-30 21:16:30
|
Update of /cvsroot/gaim/gaim/src/protocols/jabber In directory usw-pr-cvs1:/tmp/cvs-serv2552/src/protocols/jabber Modified Files: jabber.c Log Message: remove chat reason Index: jabber.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/jabber/jabber.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- jabber.c 2001/11/29 10:42:12 1.30 +++ jabber.c 2001/11/30 21:16:27 1.31 @@ -828,7 +828,7 @@ } jd = jc->gc->proto_data; if (strcmp(who->resource, jc->Jid->resource) && jc->b) { - remove_chat_buddy(jc->b, who->resource); + remove_chat_buddy(jc->b, who->resource, NULL); return; } |
From: Eric W. <war...@us...> - 2001-11-30 21:16:30
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv2552/src Modified Files: buddy_chat.c gaim.h Log Message: remove chat reason Index: buddy_chat.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/buddy_chat.c,v retrieving revision 1.132 retrieving revision 1.133 diff -u -d -r1.132 -r1.133 --- buddy_chat.c 2001/11/15 22:47:03 1.132 +++ buddy_chat.c 2001/11/30 21:16:27 1.133 @@ -958,7 +958,7 @@ } -void remove_chat_buddy(struct conversation *b, char *buddy) +void remove_chat_buddy(struct conversation *b, char *buddy, char *reason) { GList *names = b->in_room; GList *items = GTK_LIST(b->list)->children; @@ -998,7 +998,10 @@ play_sound(CHAT_LEAVE); if (chat_options & OPT_CHAT_LOGON) { - g_snprintf(tmp, sizeof(tmp), _("%s left the room."), buddy); + if (reason && *reason) + g_snprintf(tmp, sizeof(tmp), _("%s left the room (%s)."), buddy, reason); + else + g_snprintf(tmp, sizeof(tmp), _("%s left the room."), buddy); write_to_conv(b, tmp, WFLAG_SYSTEM, NULL, time(NULL)); } } Index: gaim.h =================================================================== RCS file: /cvsroot/gaim/gaim/src/gaim.h,v retrieving revision 1.299 retrieving revision 1.300 diff -u -d -r1.299 -r1.300 --- gaim.h 2001/11/26 22:33:21 1.299 +++ gaim.h 2001/11/30 21:16:27 1.300 @@ -326,7 +326,7 @@ extern void chat_set_topic(struct conversation*, char*, char*); extern void add_chat_buddy(struct conversation *, char *); extern void rename_chat_buddy(struct conversation *, char *, char *); -extern void remove_chat_buddy(struct conversation *, char *); +extern void remove_chat_buddy(struct conversation *, char *, char *); /* Functions in conversation.c */ extern void write_to_conv(struct conversation *, char *, int, char *, time_t); |
From: Eric W. <war...@us...> - 2001-11-30 09:51:26
|
Update of /cvsroot/gaim/gaim/src In directory usw-pr-cvs1:/tmp/cvs-serv23788 Modified Files: gtkimhtml.c Log Message: were you having...... prahhhhhhhhhblems?! Index: gtkimhtml.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/gtkimhtml.c,v retrieving revision 1.83 retrieving revision 1.84 diff -u -d -r1.83 -r1.84 --- gtkimhtml.c 2001/11/29 08:36:31 1.83 +++ gtkimhtml.c 2001/11/30 09:51:23 1.84 @@ -1929,7 +1929,7 @@ } else newvals = g_memdup (xflds, 16 * sizeof (xflds)); - if ((i < ADSTYL) && !xflds [ADSTYL][0]) + if ((i > ADSTYL) && !xflds [ADSTYL][0]) newvals [ADSTYL] = "*"; if (bold) |
From: Rob F. <rob...@us...> - 2001-11-30 07:59:41
|
Update of /cvsroot/gaim/gaim/doc In directory usw-pr-cvs1:/tmp/cvs-serv29259/doc Modified Files: gaim.1 Log Message: Bean sprouts taste sooooo good Index: gaim.1 =================================================================== RCS file: /cvsroot/gaim/gaim/doc/gaim.1,v retrieving revision 1.40 retrieving revision 1.41 diff -u -d -r1.40 -r1.41 --- gaim.1 2001/11/15 23:21:04 1.40 +++ gaim.1 2001/11/30 07:59:37 1.41 @@ -21,7 +21,7 @@ .\" USA. .TH gaim 1 .SH NAME -Gaim v0.49 \- Instant Messaging client +Gaim v0.50 \- Instant Messaging client .SH SYNOPSIS .TP 5 \fBgaim \fI[options]\fR |
From: Rob F. <rob...@us...> - 2001-11-30 07:59:40
|
Update of /cvsroot/gaim/gaim/po In directory usw-pr-cvs1:/tmp/cvs-serv29259/po Modified Files: pl.po Log Message: Bean sprouts taste sooooo good Index: pl.po =================================================================== RCS file: /cvsroot/gaim/gaim/po/pl.po,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- pl.po 2001/10/18 12:12:37 1.5 +++ pl.po 2001/11/30 07:59:37 1.6 @@ -4,341 +4,426 @@ # msgid "" msgstr "" -"Project-Id-Version: gaim 0.45\n" -"POT-Creation-Date: 2001-10-03 14:19+0200\n" -"PO-Revision-Date: 2001-09-29 22:00+0002\n" +"Project-Id-Version: gaim 0.49\n" +"POT-Creation-Date: 2001-11-29 12:57-0800\n" +"PO-Revision-Date: 2001-11-30 8:30+0200\n" "Last-Translator: Przemys³aw Su³ek <pb...@li...>\n" "Language-Team: POLISH <pl...@li...>\n" [...3265 lines suppressed...] -#: src/server.c:738 +#: src/server.c:737 msgid "Warned" msgstr "Ostrze¿ono" -#: src/server.c:809 +#: src/server.c:808 msgid "Yes" msgstr "Tak" -#: src/server.c:810 +#: src/server.c:809 msgid "No" msgstr "Nie" + +#: src/server.c:983 +msgid "More Info" +msgstr "Wiêcej informacji" |
From: Rob F. <rob...@us...> - 2001-11-30 07:59:40
|
Update of /cvsroot/gaim/gaim In directory usw-pr-cvs1:/tmp/cvs-serv29259 Modified Files: configure.ac ChangeLog NEWS Log Message: Bean sprouts taste sooooo good Index: configure.ac =================================================================== RCS file: /cvsroot/gaim/gaim/configure.ac,v retrieving revision 1.34 retrieving revision 1.35 diff -u -d -r1.34 -r1.35 --- configure.ac 2001/11/26 23:20:40 1.34 +++ configure.ac 2001/11/30 07:59:36 1.35 @@ -1,7 +1,7 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT(src/aim.c) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE([gaim], [0.49]) +AM_INIT_AUTOMAKE([gaim], [0.50]) AC_PATH_PROG(sedpath, sed) Index: ChangeLog =================================================================== RCS file: /cvsroot/gaim/gaim/ChangeLog,v retrieving revision 1.365 retrieving revision 1.366 diff -u -d -r1.365 -r1.366 --- ChangeLog 2001/11/29 20:50:42 1.365 +++ ChangeLog 2001/11/30 07:59:36 1.366 @@ -1,5 +1,8 @@ Gaim: The Pimpin' Penguin IM Clone thats good for the soul! +version 0.50: + * Updated polish translation (Thanks Przemyslaw Sulek) + version 0.49 (11/29/2001): * Can compile against GTK+ 2.0 (version 1.3.10/1.3.11) * Confirm before removing buddies Index: NEWS =================================================================== RCS file: /cvsroot/gaim/gaim/NEWS,v retrieving revision 1.102 retrieving revision 1.103 diff -u -d -r1.102 -r1.103 --- NEWS 2001/11/29 20:55:39 1.102 +++ NEWS 2001/11/30 07:59:36 1.103 @@ -1,5 +1,7 @@ -=[ Gaim ]=- The Pimpin' Penguin AIM Clone That's Good For The Soul! +version 0.50: + 0.49 (11/29/2001): Rob: *still mamboing* @@ -519,7 +521,7 @@ Rob: Yeah, we wouldn't be ourselves if we released it once and got it right, would we? :-) -0.9.16; +0.9.16: Rob: Blah Blah Blah. Eric: Looks like Rob didn't have much to say, so I'll write something |
From: Eric W. <war...@us...> - 2001-11-29 23:17:12
|
Update of /cvsroot/gaim/gaim/src/protocols/oscar In directory usw-pr-cvs1:/tmp/cvs-serv30325/src/protocols/oscar Modified Files: oscar.c Log Message: linefeed Index: oscar.c =================================================================== RCS file: /cvsroot/gaim/gaim/src/protocols/oscar/oscar.c,v retrieving revision 1.75 retrieving revision 1.76 diff -u -d -r1.75 -r1.76 --- oscar.c 2001/11/27 03:30:41 1.75 +++ oscar.c 2001/11/29 23:17:09 1.76 @@ -1339,6 +1339,7 @@ } else g_snprintf(tmp, BUF_LONG, "%s", args->msg); + strip_linefeed(tmp); serv_got_im(gc, userinfo->sn, tmp, flags, time(NULL)); g_free(tmp); @@ -2063,9 +2064,12 @@ if (msg->type == 0x0001) { char sender[32]; + char *tmp = g_strdup(msg->msg); time_t t = get_time(msg->year, msg->month, msg->day, msg->hour, msg->minute, 0); g_snprintf(sender, sizeof(sender), "%lu", msg->sender); - serv_got_im(gc, sender, msg->msg, 0, t); + strip_linefeed(tmp); + serv_got_im(gc, sender, tmp, 0, t); + g_free(tmp); } else { debug_printf("unknown offline message type 0x%04x\n", msg->type); } |