comparison src/oscar.c @ 1881:a02584b98823

[gaim-migrate @ 1891] C:) committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Wed, 23 May 2001 07:59:05 +0000
parents 4836d30127df
children 5df1e36f26e1
comparison
equal deleted inserted replaced
1880:b8245bcce7e6 1881:a02584b98823
51 #include "pixmaps/free_icon.xpm" 51 #include "pixmaps/free_icon.xpm"
52 52
53 /* constants to identify proto_opts */ 53 /* constants to identify proto_opts */
54 #define USEROPT_AUTH 0 54 #define USEROPT_AUTH 0
55 #define USEROPT_AUTHPORT 1 55 #define USEROPT_AUTHPORT 1
56 #define USEROPT_PROXYHOST 2
57 #define USEROPT_PROXYPORT 3
58 #define USEROPT_PROXYTYPE 4
59 #define USEROPT_USER 5
60 #define USEROPT_PASS 6
61 56
62 #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3" 57 #define AIMHASHDATA "http://gaim.sourceforge.net/aim_data.php3"
63 58
64 static int gaim_caps = AIM_CAPS_CHAT | AIM_CAPS_GETFILE | AIM_CAPS_IMIMAGE; 59 static int gaim_caps = AIM_CAPS_CHAT | AIM_CAPS_GETFILE | AIM_CAPS_IMIMAGE;
65 60
471 466
472 conn->fd = proxy_connect(user->proto_opt[USEROPT_AUTH][0] ? 467 conn->fd = proxy_connect(user->proto_opt[USEROPT_AUTH][0] ?
473 user->proto_opt[USEROPT_AUTH] : FAIM_LOGIN_SERVER, 468 user->proto_opt[USEROPT_AUTH] : FAIM_LOGIN_SERVER,
474 user->proto_opt[USEROPT_AUTHPORT][0] ? 469 user->proto_opt[USEROPT_AUTHPORT][0] ?
475 atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT, 470 atoi(user->proto_opt[USEROPT_AUTHPORT]) : FAIM_LOGIN_PORT,
476 user->proto_opt[USEROPT_PROXYHOST],
477 atoi(user->proto_opt[USEROPT_PROXYPORT]),
478 atoi(user->proto_opt[USEROPT_PROXYTYPE]),
479 user->proto_opt[USEROPT_USER], user->proto_opt[USEROPT_PASS],
480 oscar_login_connect, gc); 471 oscar_login_connect, gc);
481 if (!user->gc || (conn->fd < 0)) { 472 if (!user->gc || (conn->fd < 0)) {
482 hide_login_progress(gc, _("Couldn't connect to host")); 473 hide_login_progress(gc, _("Couldn't connect to host"));
483 signoff(gc); 474 signoff(gc);
484 return; 475 return;
666 break; 657 break;
667 } 658 }
668 } 659 }
669 host = g_strndup(bosip, i); 660 host = g_strndup(bosip, i);
670 bosconn->priv = g_memdup(cookie, AIM_COOKIELEN); 661 bosconn->priv = g_memdup(cookie, AIM_COOKIELEN);
671 bosconn->fd = proxy_connect(host, port, 662 bosconn->fd = proxy_connect(host, port, oscar_bos_connect, gc);
672 gc->user->proto_opt[USEROPT_PROXYHOST],
673 atoi(gc->user->proto_opt[USEROPT_PROXYPORT]),
674 atoi(gc->user->proto_opt[USEROPT_PROXYTYPE]),
675 gc->user->proto_opt[USEROPT_USER], gc->user->proto_opt[USEROPT_PASS],
676 oscar_bos_connect, gc);
677 g_free(host); 663 g_free(host);
678 if (!user->gc || (bosconn->fd < 0)) { 664 if (!user->gc || (bosconn->fd < 0)) {
679 if (bosconn->priv) 665 if (bosconn->priv)
680 g_free(bosconn->priv); 666 g_free(bosconn->priv);
681 bosconn->priv = NULL; 667 bosconn->priv = NULL;
762 /* size of icbmui.ocm, the largest module in AIM 3.5 */ 748 /* size of icbmui.ocm, the largest module in AIM 3.5 */
763 #define AIM_MAX_FILE_SIZE 98304 749 #define AIM_MAX_FILE_SIZE 98304
764 750
765 int gaim_memrequest(struct aim_session_t *sess, 751 int gaim_memrequest(struct aim_session_t *sess,
766 struct command_rx_struct *command, ...) { 752 struct command_rx_struct *command, ...) {
767 struct gaim_connection *gc = sess->aux_data;
768 va_list ap; 753 va_list ap;
769 struct pieceofcrap *pos; 754 struct pieceofcrap *pos;
770 unsigned long offset, len; 755 unsigned long offset, len;
771 char *modname; 756 char *modname;
772 int fd; 757 int fd;
817 802
818 pos->offset = offset; 803 pos->offset = offset;
819 pos->len = len; 804 pos->len = len;
820 pos->modname = modname ? g_strdup(modname) : NULL; 805 pos->modname = modname ? g_strdup(modname) : NULL;
821 806
822 fd = proxy_connect("gaim.sourceforge.net", 80, 807 fd = proxy_connect("gaim.sourceforge.net", 80, straight_to_hell, pos);
823 gc->user->proto_opt[USEROPT_PROXYHOST],
824 atoi(gc->user->proto_opt[USEROPT_PROXYPORT]),
825 atoi(gc->user->proto_opt[USEROPT_PROXYTYPE]),
826 gc->user->proto_opt[USEROPT_USER], gc->user->proto_opt[USEROPT_PASS],
827 straight_to_hell, pos);
828 if (fd < 0) { 808 if (fd < 0) {
829 if (pos->modname) 809 if (pos->modname)
830 g_free(pos->modname); 810 g_free(pos->modname);
831 g_free(pos); 811 g_free(pos);
832 do_error_dialog("Gaim was unable to get a valid hash for logging into AIM." 812 do_error_dialog("Gaim was unable to get a valid hash for logging into AIM."
1017 va_list ap; 997 va_list ap;
1018 int serviceid; 998 int serviceid;
1019 char *ip; 999 char *ip;
1020 unsigned char *cookie; 1000 unsigned char *cookie;
1021 struct gaim_connection *gc = sess->aux_data; 1001 struct gaim_connection *gc = sess->aux_data;
1022 struct aim_user *user = gc->user;
1023 struct aim_conn_t *tstconn; 1002 struct aim_conn_t *tstconn;
1024 int i; 1003 int i;
1025 char *host; int port = FAIM_LOGIN_PORT, fd; 1004 char *host; int port = FAIM_LOGIN_PORT, fd;
1026 1005
1027 va_start(ap, command); 1006 va_start(ap, command);
1051 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0003, gaim_info_change, 0); 1030 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0003, gaim_info_change, 0);
1052 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0005, gaim_info_change, 0); 1031 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0005, gaim_info_change, 0);
1053 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0007, gaim_account_confirm, 0); 1032 aim_conn_addhandler(sess, tstconn, 0x0007, 0x0007, gaim_account_confirm, 0);
1054 1033
1055 tstconn->priv = g_memdup(cookie, AIM_COOKIELEN); 1034 tstconn->priv = g_memdup(cookie, AIM_COOKIELEN);
1056 fd = proxy_connect(host, port, user->proto_opt[USEROPT_PROXYHOST], 1035 fd = proxy_connect(host, port, oscar_auth_connect, gc);
1057 atoi(user->proto_opt[USEROPT_PROXYPORT]),
1058 atoi(user->proto_opt[USEROPT_PROXYTYPE]),
1059 user->proto_opt[USEROPT_USER], user->proto_opt[USEROPT_PASS],
1060 oscar_auth_connect, gc);
1061 if (fd < 0) { 1036 if (fd < 0) {
1062 if (tstconn->priv) 1037 if (tstconn->priv)
1063 g_free(tstconn->priv); 1038 g_free(tstconn->priv);
1064 tstconn->priv = NULL; 1039 tstconn->priv = NULL;
1065 aim_conn_kill(sess, &tstconn); 1040 aim_conn_kill(sess, &tstconn);
1077 return 1; 1052 return 1;
1078 } 1053 }
1079 aim_conn_addhandler(sess, tstconn, 0x0001, 0x0003, gaim_server_ready, 0); 1054 aim_conn_addhandler(sess, tstconn, 0x0001, 0x0003, gaim_server_ready, 0);
1080 1055
1081 tstconn->priv = g_memdup(cookie, AIM_COOKIELEN); 1056 tstconn->priv = g_memdup(cookie, AIM_COOKIELEN);
1082 fd = proxy_connect(host, port, user->proto_opt[USEROPT_PROXYHOST], 1057 fd = proxy_connect(host, port, oscar_chatnav_connect, gc);
1083 atoi(user->proto_opt[USEROPT_PROXYPORT]),
1084 atoi(user->proto_opt[USEROPT_PROXYTYPE]),
1085 user->proto_opt[USEROPT_USER], user->proto_opt[USEROPT_PASS],
1086 oscar_chatnav_connect, gc);
1087 if (fd < 0) { 1058 if (fd < 0) {
1088 if (tstconn->priv) 1059 if (tstconn->priv)
1089 g_free(tstconn->priv); 1060 g_free(tstconn->priv);
1090 tstconn->priv = NULL; 1061 tstconn->priv = NULL;
1091 aim_conn_kill(sess, &tstconn); 1062 aim_conn_kill(sess, &tstconn);
1115 ccon->name = g_strdup(roomname); 1086 ccon->name = g_strdup(roomname);
1116 ccon->exchange = exchange; 1087 ccon->exchange = exchange;
1117 ccon->show = extract_name(roomname); 1088 ccon->show = extract_name(roomname);
1118 1089
1119 ccon->priv = g_memdup(cookie, AIM_COOKIELEN); 1090 ccon->priv = g_memdup(cookie, AIM_COOKIELEN);
1120 fd = proxy_connect(host, port, user->proto_opt[USEROPT_PROXYHOST], 1091 fd = proxy_connect(host, port, oscar_chat_connect, ccon);
1121 atoi(user->proto_opt[USEROPT_PROXYPORT]),
1122 atoi(user->proto_opt[USEROPT_PROXYTYPE]),
1123 user->proto_opt[USEROPT_USER], user->proto_opt[USEROPT_PASS],
1124 oscar_chat_connect, ccon);
1125 if (fd < 0) { 1092 if (fd < 0) {
1126 aim_conn_kill(sess, &tstconn); 1093 aim_conn_kill(sess, &tstconn);
1127 debug_printf("unable to connect to chat server\n"); 1094 debug_printf("unable to connect to chat server\n");
1128 g_free(host); 1095 g_free(host);
1129 g_free(ccon->priv); 1096 g_free(ccon->priv);
1276 port = atoi(&(d->priv->ip[i+1])); 1243 port = atoi(&(d->priv->ip[i+1]));
1277 break; 1244 break;
1278 } 1245 }
1279 } 1246 }
1280 host = g_strndup(d->priv->ip, i); 1247 host = g_strndup(d->priv->ip, i);
1281 dim->conn->fd = proxy_connect(host, port, 1248 dim->conn->fd = proxy_connect(host, port, oscar_directim_callback, dim);
1282 gc->user->proto_opt[USEROPT_PROXYHOST],
1283 atoi(gc->user->proto_opt[USEROPT_PROXYPORT]),
1284 atoi(gc->user->proto_opt[USEROPT_PROXYTYPE]),
1285 gc->user->proto_opt[USEROPT_USER],
1286 gc->user->proto_opt[USEROPT_PASS],
1287 oscar_directim_callback, dim);
1288 g_free(host); 1249 g_free(host);
1289 if (dim->conn->fd < 0) { 1250 if (dim->conn->fd < 0) {
1290 aim_conn_kill(od->sess, &dim->conn); 1251 aim_conn_kill(od->sess, &dim->conn);
1291 g_free(dim); 1252 g_free(dim);
1292 cancel_direct_im(w, d); 1253 cancel_direct_im(w, d);
2773 g_snprintf(user->proto_opt[USEROPT_AUTH], 2734 g_snprintf(user->proto_opt[USEROPT_AUTH],
2774 sizeof(user->proto_opt[USEROPT_AUTH]), "%s", gtk_entry_get_text(entry)); 2735 sizeof(user->proto_opt[USEROPT_AUTH]), "%s", gtk_entry_get_text(entry));
2775 } else if (entrynum == USEROPT_AUTHPORT) { 2736 } else if (entrynum == USEROPT_AUTHPORT) {
2776 g_snprintf(user->proto_opt[USEROPT_AUTHPORT], 2737 g_snprintf(user->proto_opt[USEROPT_AUTHPORT],
2777 sizeof(user->proto_opt[USEROPT_AUTHPORT]), "%s", gtk_entry_get_text(entry)); 2738 sizeof(user->proto_opt[USEROPT_AUTHPORT]), "%s", gtk_entry_get_text(entry));
2778 } else if (entrynum == USEROPT_PROXYHOST) { 2739 }
2779 g_snprintf(user->proto_opt[USEROPT_PROXYHOST],
2780 sizeof(user->proto_opt[USEROPT_PROXYHOST]), "%s", gtk_entry_get_text(entry));
2781 } else if (entrynum == USEROPT_PROXYPORT) {
2782 g_snprintf(user->proto_opt[USEROPT_PROXYPORT],
2783 sizeof(user->proto_opt[USEROPT_PROXYPORT]), "%s", gtk_entry_get_text(entry));
2784 } else if (entrynum == USEROPT_USER) {
2785 g_snprintf(user->proto_opt[USEROPT_USER],
2786 sizeof(user->proto_opt[USEROPT_USER]), "%s", gtk_entry_get_text(entry));
2787 } else if (entrynum == USEROPT_PASS) {
2788 g_snprintf(user->proto_opt[USEROPT_PASS],
2789 sizeof(user->proto_opt[USEROPT_PASS]), "%s", gtk_entry_get_text(entry));
2790 }
2791 }
2792
2793 static void oscar_print_optionrad(GtkRadioButton * entry, struct aim_user *user)
2794 {
2795 int entrynum;
2796
2797 entrynum = (int)gtk_object_get_user_data(GTK_OBJECT(entry));
2798
2799 g_snprintf(user->proto_opt[USEROPT_PROXYTYPE],
2800 sizeof(user->proto_opt[USEROPT_PROXYTYPE]), "%d", entrynum);
2801 } 2740 }
2802 2741
2803 static void oscar_user_opts(GtkWidget *book, struct aim_user *user) 2742 static void oscar_user_opts(GtkWidget *book, struct aim_user *user)
2804 { 2743 {
2805 /* so here, we create the new notebook page */ 2744 /* so here, we create the new notebook page */
2806 GtkWidget *vbox; 2745 GtkWidget *vbox;
2807 GtkWidget *hbox; 2746 GtkWidget *hbox;
2808 GtkWidget *label; 2747 GtkWidget *label;
2809 GtkWidget *entry; 2748 GtkWidget *entry;
2810 GtkWidget *first, *opt;
2811 2749
2812 vbox = gtk_vbox_new(FALSE, 5); 2750 vbox = gtk_vbox_new(FALSE, 5);
2813 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); 2751 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
2814 gtk_notebook_append_page(GTK_NOTEBOOK(book), vbox, gtk_label_new("Oscar Options")); 2752 gtk_notebook_append_page(GTK_NOTEBOOK(book), vbox, gtk_label_new("Oscar Options"));
2815 gtk_widget_show(vbox); 2753 gtk_widget_show(vbox);
2849 debug_printf("setting text %s\n", user->proto_opt[USEROPT_AUTHPORT]); 2787 debug_printf("setting text %s\n", user->proto_opt[USEROPT_AUTHPORT]);
2850 gtk_entry_set_text(GTK_ENTRY(entry), user->proto_opt[USEROPT_AUTHPORT]); 2788 gtk_entry_set_text(GTK_ENTRY(entry), user->proto_opt[USEROPT_AUTHPORT]);
2851 } else 2789 } else
2852 gtk_entry_set_text(GTK_ENTRY(entry), "9898"); 2790 gtk_entry_set_text(GTK_ENTRY(entry), "9898");
2853 2791
2854 gtk_widget_show(entry);
2855
2856 hbox = gtk_hbox_new(TRUE, 0);
2857 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
2858 gtk_widget_show(hbox);
2859
2860 first = gtk_radio_button_new_with_label(NULL, "No proxy");
2861 gtk_box_pack_start(GTK_BOX(hbox), first, FALSE, FALSE, 0);
2862 gtk_object_set_user_data(GTK_OBJECT(first), (void *)PROXY_NONE);
2863 gtk_signal_connect(GTK_OBJECT(first), "clicked", GTK_SIGNAL_FUNC(oscar_print_optionrad), user);
2864 gtk_widget_show(first);
2865 if (atoi(user->proto_opt[USEROPT_PROXYTYPE]) == PROXY_NONE)
2866 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(first), TRUE);
2867
2868 opt =
2869 gtk_radio_button_new_with_label(gtk_radio_button_group(GTK_RADIO_BUTTON(first)), "SOCKS 4");
2870 gtk_box_pack_start(GTK_BOX(hbox), opt, FALSE, FALSE, 0);
2871 gtk_object_set_user_data(GTK_OBJECT(opt), (void *)PROXY_SOCKS4);
2872 gtk_signal_connect(GTK_OBJECT(opt), "clicked", GTK_SIGNAL_FUNC(oscar_print_optionrad), user);
2873 gtk_widget_show(opt);
2874 if (atoi(user->proto_opt[USEROPT_PROXYTYPE]) == PROXY_SOCKS4)
2875 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE);
2876
2877 hbox = gtk_hbox_new(TRUE, 0);
2878 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
2879 gtk_widget_show(hbox);
2880
2881 opt =
2882 gtk_radio_button_new_with_label(gtk_radio_button_group(GTK_RADIO_BUTTON(first)), "SOCKS 5");
2883 gtk_box_pack_start(GTK_BOX(hbox), opt, FALSE, FALSE, 0);
2884 gtk_object_set_user_data(GTK_OBJECT(opt), (void *)PROXY_SOCKS5);
2885 gtk_signal_connect(GTK_OBJECT(opt), "clicked", GTK_SIGNAL_FUNC(oscar_print_optionrad), user);
2886 gtk_widget_show(opt);
2887 if (atoi(user->proto_opt[USEROPT_PROXYTYPE]) == PROXY_SOCKS5)
2888 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE);
2889
2890 opt = gtk_radio_button_new_with_label(gtk_radio_button_group(GTK_RADIO_BUTTON(first)), "HTTP");
2891 gtk_box_pack_start(GTK_BOX(hbox), opt, FALSE, FALSE, 0);
2892 gtk_object_set_user_data(GTK_OBJECT(opt), (void *)PROXY_HTTP);
2893 gtk_signal_connect(GTK_OBJECT(opt), "clicked", GTK_SIGNAL_FUNC(oscar_print_optionrad), user);
2894 gtk_widget_show(opt);
2895 if (atoi(user->proto_opt[USEROPT_PROXYTYPE]) == PROXY_HTTP)
2896 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE);
2897
2898 hbox = gtk_hbox_new(FALSE, 0);
2899 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
2900 gtk_widget_show(hbox);
2901
2902 label = gtk_label_new("Proxy Host:");
2903 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
2904 gtk_widget_show(label);
2905
2906 entry = gtk_entry_new();
2907 gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 0);
2908 gtk_object_set_user_data(GTK_OBJECT(entry), (void *)USEROPT_PROXYHOST);
2909 gtk_signal_connect(GTK_OBJECT(entry), "changed", GTK_SIGNAL_FUNC(oscar_print_option), user);
2910 if (user->proto_opt[USEROPT_PROXYHOST][0]) {
2911 debug_printf("setting text %s\n", user->proto_opt[USEROPT_PROXYHOST]);
2912 gtk_entry_set_text(GTK_ENTRY(entry), user->proto_opt[USEROPT_PROXYHOST]);
2913 }
2914 gtk_widget_show(entry);
2915
2916 hbox = gtk_hbox_new(FALSE, 0);
2917 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
2918 gtk_widget_show(hbox);
2919
2920 label = gtk_label_new("Proxy Port:");
2921 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
2922 gtk_widget_show(label);
2923
2924 entry = gtk_entry_new();
2925 gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 0);
2926 gtk_object_set_user_data(GTK_OBJECT(entry), (void *)USEROPT_PROXYPORT);
2927 gtk_signal_connect(GTK_OBJECT(entry), "changed", GTK_SIGNAL_FUNC(oscar_print_option), user);
2928 if (user->proto_opt[USEROPT_PROXYPORT][0]) {
2929 debug_printf("setting text %s\n", user->proto_opt[USEROPT_PROXYPORT]);
2930 gtk_entry_set_text(GTK_ENTRY(entry), user->proto_opt[USEROPT_PROXYPORT]);
2931 }
2932 gtk_widget_show(entry);
2933
2934 hbox = gtk_hbox_new(FALSE, 0);
2935 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
2936 gtk_widget_show(hbox);
2937
2938 label = gtk_label_new("Proxy User:");
2939 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
2940 gtk_widget_show(label);
2941
2942 entry = gtk_entry_new();
2943 gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 0);
2944 gtk_object_set_user_data(GTK_OBJECT(entry), (void *)USEROPT_USER);
2945 gtk_signal_connect(GTK_OBJECT(entry), "changed", GTK_SIGNAL_FUNC(oscar_print_option), user);
2946 if (user->proto_opt[USEROPT_USER][0]) {
2947 debug_printf("setting text %s\n", user->proto_opt[USEROPT_USER]);
2948 gtk_entry_set_text(GTK_ENTRY(entry), user->proto_opt[USEROPT_USER]);
2949 }
2950 gtk_widget_show(entry);
2951
2952 hbox = gtk_hbox_new(FALSE, 5);
2953 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
2954 gtk_widget_show(hbox);
2955
2956 label = gtk_label_new("Proxy Password:");
2957 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
2958 gtk_widget_show(label);
2959
2960 entry = gtk_entry_new();
2961 gtk_box_pack_end(GTK_BOX(hbox), entry, FALSE, FALSE, 0);
2962 gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE);
2963 gtk_object_set_user_data(GTK_OBJECT(entry), (void *)USEROPT_PASS);
2964 gtk_signal_connect(GTK_OBJECT(entry), "changed", GTK_SIGNAL_FUNC(oscar_print_option), user);
2965 if (user->proto_opt[USEROPT_PASS][0]) {
2966 debug_printf("setting text %s\n", user->proto_opt[USEROPT_PASS]);
2967 gtk_entry_set_text(GTK_ENTRY(entry), user->proto_opt[USEROPT_PASS]);
2968 }
2969 gtk_widget_show(entry); 2792 gtk_widget_show(entry);
2970 } 2793 }
2971 2794
2972 static void oscar_set_permit_deny(struct gaim_connection *gc) { 2795 static void oscar_set_permit_deny(struct gaim_connection *gc) {
2973 struct oscar_data *od = (struct oscar_data *)gc->proto_data; 2796 struct oscar_data *od = (struct oscar_data *)gc->proto_data;