Mercurial > pidgin
comparison src/server.c @ 6622:a4622f1fb5a1
[gaim-migrate @ 7146]
(10:10:23) Robot101: kills off OPT_CONN_* in favour of an enum, and deprecates all
the IM_FLAGS_* except IM_FLAG_AWAY which is made into GAIM_IM_AUTO_RESP in a
GaimImFlags enum.
committer: Tailor Script <tailor@pidgin.im>
| author | Luke Schierer <lschiere@pidgin.im> |
|---|---|
| date | Mon, 25 Aug 2003 14:12:28 +0000 |
| parents | 42fdf16f1dad |
| children | 22346bcb50c2 |
comparison
equal
deleted
inserted
replaced
| 6621:42fdf16f1dad | 6622:a4622f1fb5a1 |
|---|---|
| 256 } | 256 } |
| 257 } | 257 } |
| 258 } | 258 } |
| 259 | 259 |
| 260 int serv_send_im(GaimConnection *gc, const char *name, const char *message, | 260 int serv_send_im(GaimConnection *gc, const char *name, const char *message, |
| 261 int len, int imflags) | 261 int len, GaimImFlags imflags) |
| 262 { | 262 { |
| 263 GaimConversation *c; | 263 GaimConversation *c; |
| 264 int val = -EINVAL; | 264 int val = -EINVAL; |
| 265 GaimPluginProtocolInfo *prpl_info = NULL; | 265 GaimPluginProtocolInfo *prpl_info = NULL; |
| 266 | 266 |
| 270 c = gaim_find_conversation(name); | 270 c = gaim_find_conversation(name); |
| 271 | 271 |
| 272 if (prpl_info && prpl_info->send_im) | 272 if (prpl_info && prpl_info->send_im) |
| 273 val = prpl_info->send_im(gc, name, message, len, imflags); | 273 val = prpl_info->send_im(gc, name, message, len, imflags); |
| 274 | 274 |
| 275 if (!(imflags & IM_FLAG_AWAY)) | 275 if (!(imflags & GAIM_MESSAGE_AUTO_RESP)) |
| 276 serv_touch_idle(gc); | 276 serv_touch_idle(gc); |
| 277 | 277 |
| 278 if (gc->away && | 278 if (gc->away && |
| 279 (gc->flags & OPT_CONN_AUTO_RESP) && | 279 (gc->flags & GAIM_CONNECTION_AUTO_RESP) && |
| 280 gaim_prefs_get_bool("/core/away/auto_response/enabled") && | 280 gaim_prefs_get_bool("/core/away/auto_response/enabled") && |
| 281 !gaim_prefs_get_bool("/core/away/auto_response/in_active_conv")) { | 281 !gaim_prefs_get_bool("/core/away/auto_response/in_active_conv")) { |
| 282 | 282 |
| 283 struct last_auto_response *lar; | 283 struct last_auto_response *lar; |
| 284 lar = get_last_auto_response(gc, name); | 284 lar = get_last_auto_response(gc, name); |
| 811 /* | 811 /* |
| 812 * woo. i'm actually going to comment this function. isn't that fun. make | 812 * woo. i'm actually going to comment this function. isn't that fun. make |
| 813 * sure to follow along, kids | 813 * sure to follow along, kids |
| 814 */ | 814 */ |
| 815 void serv_got_im(GaimConnection *gc, const char *who, const char *msg, | 815 void serv_got_im(GaimConnection *gc, const char *who, const char *msg, |
| 816 guint32 imflags, time_t mtime, gint len) | 816 GaimImFlags imflags, time_t mtime, gint len) |
| 817 { | 817 { |
| 818 char *buffy; | 818 GaimConversation *cnv; |
| 819 char *angel; | 819 GaimMessageFlags auto_resp; |
| 820 char *message, *name; | |
| 821 char *angel, *buffy; | |
| 820 int plugin_return; | 822 int plugin_return; |
| 821 GaimMessageFlags away = 0; | |
| 822 | |
| 823 GaimConversation *cnv; | |
| 824 | |
| 825 char *message, *name; | |
| 826 | |
| 827 /* | |
| 828 * Pay no attention to the man behind the curtain. | |
| 829 * | |
| 830 * The reason i feel okay with this is because it's useful to some | |
| 831 * plugins. Gaim doesn't ever use it itself. Besides, it's not entirely | |
| 832 * accurate; it's possible to have false negatives with most protocols. | |
| 833 * Also with some it's easy to have false positives as well. So if you're | |
| 834 * a plugin author, don't rely on this, still do your own checks. But uh. | |
| 835 * It's a start. | |
| 836 */ | |
| 837 | |
| 838 if (imflags & IM_FLAG_GAIMUSER) | |
| 839 gaim_debug(GAIM_DEBUG_MISC, "server", "%s is a gaim user.\n", who); | |
| 840 | 823 |
| 841 /* | 824 /* |
| 842 * We should update the conversation window buttons and menu, | 825 * We should update the conversation window buttons and menu, |
| 843 * if it exists. | 826 * if it exists. |
| 844 */ | 827 */ |
| 891 * Um. When we call gaim_conversation_write with the message we received, | 874 * Um. When we call gaim_conversation_write with the message we received, |
| 892 * it's nice to pass whether or not it was an auto-response. So if it | 875 * it's nice to pass whether or not it was an auto-response. So if it |
| 893 * was an auto-response, we set the appropriate flag. This is just so | 876 * was an auto-response, we set the appropriate flag. This is just so |
| 894 * prpls don't have to know about GAIM_MESSAGE_* (though some do anyway) | 877 * prpls don't have to know about GAIM_MESSAGE_* (though some do anyway) |
| 895 */ | 878 */ |
| 896 if (imflags & IM_FLAG_AWAY) | 879 if (imflags & GAIM_IM_AUTO_RESP) |
| 897 away = GAIM_MESSAGE_AUTO_RESP; | 880 auto_resp = GAIM_MESSAGE_AUTO_RESP; |
| 881 else | |
| 882 auto_resp = 0; | |
| 898 | 883 |
| 899 /* | 884 /* |
| 900 * Alright. Two cases for how to handle this. Either we're away or | 885 * Alright. Two cases for how to handle this. Either we're away or |
| 901 * we're not. If we're not, then it's easy. If we are, then there | 886 * we're not. If we're not, then it's easy. If we are, then there |
| 902 * are three or four different ways of handling it and different | 887 * are three or four different ways of handling it and different |
| 934 qm = g_new0(struct queued_message, 1); | 919 qm = g_new0(struct queued_message, 1); |
| 935 g_snprintf(qm->name, sizeof(qm->name), "%s", name); | 920 g_snprintf(qm->name, sizeof(qm->name), "%s", name); |
| 936 qm->message = g_memdup(message, len == -1 ? strlen(message) + 1 : len); | 921 qm->message = g_memdup(message, len == -1 ? strlen(message) + 1 : len); |
| 937 qm->account = gc->account; | 922 qm->account = gc->account; |
| 938 qm->tm = mtime; | 923 qm->tm = mtime; |
| 939 qm->flags = GAIM_MESSAGE_RECV | away; | 924 qm->flags = GAIM_MESSAGE_RECV | auto_resp; |
| 940 qm->len = len; | 925 qm->len = len; |
| 941 message_queue = g_slist_append(message_queue, qm); | 926 message_queue = g_slist_append(message_queue, qm); |
| 942 | 927 |
| 943 row = find_queue_row_by_name(qm->name); | 928 row = find_queue_row_by_name(qm->name); |
| 944 if (row >= 0) { | 929 if (row >= 0) { |
| 971 */ | 956 */ |
| 972 if (cnv == NULL) | 957 if (cnv == NULL) |
| 973 cnv = gaim_conversation_new(GAIM_CONV_IM, gc->account, name); | 958 cnv = gaim_conversation_new(GAIM_CONV_IM, gc->account, name); |
| 974 | 959 |
| 975 gaim_im_write(GAIM_IM(cnv), NULL, message, len, | 960 gaim_im_write(GAIM_IM(cnv), NULL, message, len, |
| 976 away | GAIM_MESSAGE_RECV, mtime); | 961 GAIM_MESSAGE_RECV | auto_resp, mtime); |
| 977 } | 962 } |
| 978 | 963 |
| 979 /* | 964 /* |
| 980 * Regardless of whether we queue it or not, we should send an | 965 * Regardless of whether we queue it or not, we should send an |
| 981 * auto-response. That is, of course, unless the horse.... no wait. | 966 * auto-response. That is, of course, unless the horse.... no wait. |
| 985 * - or it's disabled | 970 * - or it's disabled |
| 986 * - or the away message is empty | 971 * - or the away message is empty |
| 987 * - or we're not idle and the 'only auto respond if idle' pref | 972 * - or we're not idle and the 'only auto respond if idle' pref |
| 988 * is set | 973 * is set |
| 989 */ | 974 */ |
| 990 if (!(gc->flags & OPT_CONN_AUTO_RESP) || | 975 if (!(gc->flags & GAIM_CONNECTION_AUTO_RESP) || |
| 991 !gaim_prefs_get_bool("/core/away/auto_response/enabled") || | 976 !gaim_prefs_get_bool("/core/away/auto_response/enabled") || |
| 992 *gc->away == '\0' || | 977 *gc->away == '\0' || |
| 993 (!gc->is_idle && | 978 (!gc->is_idle && |
| 994 gaim_prefs_get_bool("/core/away/auto_response/idle_only"))) { | 979 gaim_prefs_get_bool("/core/away/auto_response/idle_only"))) { |
| 995 | 980 |
| 1017 } | 1002 } |
| 1018 lar->sent = t; | 1003 lar->sent = t; |
| 1019 | 1004 |
| 1020 /* apply default fonts and colors */ | 1005 /* apply default fonts and colors */ |
| 1021 tmpmsg = stylize(gc->away, MSG_LEN); | 1006 tmpmsg = stylize(gc->away, MSG_LEN); |
| 1022 serv_send_im(gc, name, away_subs(tmpmsg, alias), -1, IM_FLAG_AWAY); | 1007 serv_send_im(gc, name, away_subs(tmpmsg, alias), -1, GAIM_IM_AUTO_RESP); |
| 1023 if (!cnv && awayqueue && | 1008 if (!cnv && awayqueue && |
| 1024 gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) { | 1009 gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) { |
| 1025 | 1010 |
| 1026 struct queued_message *qm; | 1011 struct queued_message *qm; |
| 1027 | 1012 |
| 1061 qm = g_new0(struct queued_message, 1); | 1046 qm = g_new0(struct queued_message, 1); |
| 1062 g_snprintf(qm->name, sizeof(qm->name), "%s", name); | 1047 g_snprintf(qm->name, sizeof(qm->name), "%s", name); |
| 1063 qm->message = g_strdup(message); | 1048 qm->message = g_strdup(message); |
| 1064 qm->account = gc->account; | 1049 qm->account = gc->account; |
| 1065 qm->tm = mtime; | 1050 qm->tm = mtime; |
| 1066 qm->flags = away | GAIM_MESSAGE_RECV; | 1051 qm->flags = GAIM_MESSAGE_RECV | auto_resp; |
| 1067 qm->len = len; | 1052 qm->len = len; |
| 1068 unread_message_queue = g_slist_append(unread_message_queue, qm); | 1053 unread_message_queue = g_slist_append(unread_message_queue, qm); |
| 1069 } | 1054 } |
| 1070 else { | 1055 else { |
| 1071 if (cnv == NULL) | 1056 if (cnv == NULL) |
| 1072 cnv = gaim_conversation_new(GAIM_CONV_IM, gc->account, name); | 1057 cnv = gaim_conversation_new(GAIM_CONV_IM, gc->account, name); |
| 1073 | 1058 |
| 1074 gaim_im_write(GAIM_IM(cnv), NULL, message, len, | 1059 gaim_im_write(GAIM_IM(cnv), NULL, message, len, |
| 1075 away | GAIM_MESSAGE_RECV, mtime); | 1060 GAIM_MESSAGE_RECV | auto_resp, mtime); |
| 1076 gaim_window_flash(gaim_conversation_get_window(cnv)); | 1061 gaim_window_flash(gaim_conversation_get_window(cnv)); |
| 1077 } | 1062 } |
| 1078 } | 1063 } |
| 1079 | 1064 |
| 1080 g_free(name); | 1065 g_free(name); |
