plugins/chkmail.c

Sun, 17 Oct 2004 23:55:49 +0000

author
Sean Egan <seanegan@pidgin.im>
date
Sun, 17 Oct 2004 23:55:49 +0000
changeset 10108
0897c42d6cb9
parent 9821
d02520c59822
child 10320
f5b0f5cf8562
permissions
-rw-r--r--

[gaim-migrate @ 11141]
Two things:
a. Added Enter as a gtk_binding to GtkIMHtml. This fixes everything.
Input methods now work. The "Enter sends" and "Ctrl-Enter sends" preferences
were removed and defaulted to yes and no respectively, BUT, in a very super-cool
turn of events, you can now add your own bindings to .gtkrc to make WHATEVER
YOU WANT send. Awesome. Someone should use g_signal_accumulator_true_handled
or something to make profiles and away messages able to insert newlines.

b. Removed "Use multi-colored screennames in chats," defaulted to yes, and
wrote a nifty algorithm to automatically adjust the colors to accomodate the
background (see http://gaim.sf.net/sean/porn-chat.png). People should play
around and tweak it a bit. The algorithm takes into consideration the
luminosity of the current background and the base hue to use for the screenname
in generating the new colors. Note that it does this while maintaining the hues.
Someone should optimize this so it skips over the floating point arithmatic when
the background color is white.

114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
1 /* This is some funky code. It is still being developed by Rob Flynn - rob@linuxpimps.com
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
2 * I recommend not using this code right now. :)
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
3 */
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
4
105
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
5 #define GAIM_PLUGINS
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
6
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
7 #include <stdio.h>
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
8 #include <stdlib.h>
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
9 #include <unistd.h>
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
10 #include <string.h>
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
11 #include <netinet/in.h>
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
12 #include <arpa/inet.h>
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
13 #include <sys/socket.h>
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
14 #include <netdb.h>
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
15 #include <netinet/in.h>
127
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
16 #include <pthread.h>
9821
d02520c59822 [gaim-migrate @ 10692]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
17
d02520c59822 [gaim-migrate @ 10692]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
18 #include "internal.h"
d02520c59822 [gaim-migrate @ 10692]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
19 #include "gtkgaim.h"
d02520c59822 [gaim-migrate @ 10692]
Mark Doliner <markdoliner@pidgin.im>
parents: 6308
diff changeset
20
105
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
21 #include "gaim.h"
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
22
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
23 char username[] = "";
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
24 char password[] = "";
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
25 char mailhost[] = "";
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
26 int mailport = 110;
127
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
27 int state = 0;
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
28
105
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
29 static void *handle = NULL;
124
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
30 extern GtkWidget *buddies;
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
31
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
32 int lastnum = 0;
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
33 int orig = 0;
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
34 int mytimer;
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
35
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
36 void update_mail();
127
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
37 void check_mail();
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
38
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
39 int num_msgs()
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
40 {
6308
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
41 struct in_addr *sin;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
42 char recv[1024];
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
43 char command[256];
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
44 int fd;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
45 int num = 0;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
46 int step = 0;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
47 int len;
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
48
6308
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
49 sin = (struct in_addr *)get_address(mailhost);
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
50 fd = connect_address(sin->s_addr, mailport);
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
51 while ((len = read(fd, recv, 1023))>0) {
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
52 recv[len] = 0;
6308
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
53 if (!strncmp(recv, "-ERR", strlen("-ERR"))) {
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
54 step = 4;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
55 break;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
56 } else if (!strncmp(recv, "+OK", strlen("+OK"))) {
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
57 if (step == 3) {
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
58 if (sscanf(recv, "+OK %d %d\n", &num, &step) != 2)
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
59 break;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
60 g_snprintf(command, sizeof(command), "QUIT\n");
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
61 write(fd, command, strlen(command));
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
62 close(fd);
6308
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
63 return num;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
64 }
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
65
6308
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
66 if (step == 0) {
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
67 g_snprintf(command, sizeof(command), "USER %s\n", username);
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
68 write(fd, command, strlen(command));
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
69 step = 1;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
70 } else if (step == 1) {
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
71 g_snprintf(command, sizeof(command), "PASS %s\n", password);
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
72 write(fd, command, strlen(command));
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
73 step = 2;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
74 } else if (step == 2) {
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
75 g_snprintf(command, sizeof(command), "STAT\n");
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
76 write(fd, command, strlen(command));
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
77 step = 3;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
78 }
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
79 }
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
80 }
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
81 close(fd);
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
82
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
83 return 0;
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
84 }
105
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
85
124
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
86 void destroy_mail_list()
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
87 {
6308
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
88 GList *list;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
89 GtkWidget *w;
124
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
90
6308
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
91 list = GTK_TREE(buddies)->children;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
92 while (list) {
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
93 w = (GtkWidget *)list->data;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
94 if (!strcmp(GTK_LABEL(GTK_BIN(w)->child)->label, _("Mail Server"))) {
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
95 gtk_tree_remove_items(GTK_TREE(buddies), list);
126
3d72ea2f8625 [gaim-migrate @ 136]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 124
diff changeset
96 list = GTK_TREE(buddies)->children;
6308
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
97 if (!list)
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
98 break;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
99 }
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
100 list = list->next;
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
101 }
124
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
102 }
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
103
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
104
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
105 void setup_mail_list()
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
106 {
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
107 GList *list;
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
108 GtkWidget *w;
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
109 GtkWidget *item;
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
110 GtkWidget *tree;
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
111 gchar *buf;
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
112
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
113 list = GTK_TREE(buddies)->children;
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
114
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
115 while (list) {
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
116 w = (GtkWidget *)list->data;
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4168
diff changeset
117 if (!strcmp(GTK_LABEL(GTK_BIN(w)->child)->label, _("Mail Server"))) {
124
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
118 gtk_tree_remove_items(GTK_TREE(buddies), list);
126
3d72ea2f8625 [gaim-migrate @ 136]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 124
diff changeset
119 list = GTK_TREE(buddies)->children;
124
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
120 if (!list)
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
121 break;
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
122 }
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
123 list = list->next;
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
124 }
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
125
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4168
diff changeset
126 item = gtk_tree_item_new_with_label(_("Mail Server"));
124
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
127 tree = gtk_tree_new();
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
128 gtk_widget_show(item);
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
129 gtk_widget_show(tree);
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
130 gtk_tree_append(GTK_TREE(buddies), item);
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
131 gtk_tree_item_set_subtree(GTK_TREE_ITEM(item), tree);
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
132 gtk_tree_item_expand(GTK_TREE_ITEM(item));
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
133
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
134 buf = g_malloc(BUF_LONG);
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
135
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4168
diff changeset
136 g_snprintf(buf, BUF_LONG, _("%s (%d new/%d total)"), mailhost, lastnum - orig, lastnum);
124
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
137 item = gtk_tree_item_new_with_label(buf);
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
138 g_free(buf);
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
139
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
140 gtk_tree_append(GTK_TREE(tree), item);
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
141 gtk_widget_show(item);
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
142 }
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
143
105
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
144 void gaim_plugin_init(void *h) {
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
145 handle = h;
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
146
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
147 orig = num_msgs();
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
148 lastnum = orig;
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
149
124
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
150 gaim_signal_connect(handle, event_blist_update, setup_mail_list, NULL);
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
151 setup_mail_list();
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
152
4168
46523d0de8ab [gaim-migrate @ 4397]
Nathan Walp <nwalp@pidgin.im>
parents: 127
diff changeset
153 mytimer = g_timeout_add(30000, check_mail, NULL);
127
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
154 }
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
155
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
156 void check_mail() {
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
157 pthread_t mail_thread;
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
158 pthread_attr_t attr;
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
159
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
160 if (state == 0) {
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
161 state = 1;
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
162 pthread_attr_init(&attr);
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
163 pthread_create(&mail_thread, &attr, (void *)&update_mail, NULL);
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
164 }
105
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
165 }
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
166
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
167 void update_mail () {
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
168 int newnum;
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
169
4168
46523d0de8ab [gaim-migrate @ 4397]
Nathan Walp <nwalp@pidgin.im>
parents: 127
diff changeset
170 g_source_remove(mytimer);
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
171
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
172 newnum = num_msgs();
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
173
6308
12d48b4e80db [gaim-migrate @ 6807]
Mark Doliner <markdoliner@pidgin.im>
parents: 5116
diff changeset
174 if ((newnum >= lastnum) && (newnum > 0)) {
127
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
175 newnum = newnum - lastnum;
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
176 } else {
124
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
177 newnum = 0;
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
178 }
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
179
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
180 if (newnum < lastnum) {
127
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
181 orig = lastnum;
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
182 }
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
183
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
184 lastnum = newnum;
4168
46523d0de8ab [gaim-migrate @ 4397]
Nathan Walp <nwalp@pidgin.im>
parents: 127
diff changeset
185 mytimer = g_timeout_add(30000, check_mail, NULL);
124
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
186 setup_mail_list();
127
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
187 state = 0;
114
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
188 }
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
189
d85569eea934 [gaim-migrate @ 124]
Rob Flynn <gaim@robflynn.com>
parents: 105
diff changeset
190
105
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
191 void gaim_plugin_remove() {
4168
46523d0de8ab [gaim-migrate @ 4397]
Nathan Walp <nwalp@pidgin.im>
parents: 127
diff changeset
192 g_source_remove(mytimer);
127
18d83b34d054 [gaim-migrate @ 137]
Rob Flynn <gaim@robflynn.com>
parents: 126
diff changeset
193 while (state == 1) { }
124
0c653bd6987f [gaim-migrate @ 134]
Rob Flynn <gaim@robflynn.com>
parents: 114
diff changeset
194 destroy_mail_list();
105
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
195 handle = NULL;
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
196 }
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
197
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
198 char *name() {
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4168
diff changeset
199 return _("Check Mail");
105
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
200 }
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
201
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
202 char *description() {
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4168
diff changeset
203 return _("Check email every X seconds.\n");
105
ed9cd76f7d19 [gaim-migrate @ 115]
Rob Flynn <gaim@robflynn.com>
parents:
diff changeset
204 }

mercurial