plugins/gaiminc.c

Wed, 05 Nov 2003 06:39:05 +0000

author
Sean Egan <seanegan@pidgin.im>
date
Wed, 05 Nov 2003 06:39:05 +0000
changeset 7433
76909f0112c5
parent 6982
12f08de92674
child 7746
d7cdf0d60f5d
permissions
-rw-r--r--

[gaim-migrate @ 8038]
Because all the log reading and writing is abstracted, it makes it real easy
to tell Gaim, "give me entire contents of the last conversation," which is
useful for, say, a history.c plugin. This code is now much simpler, and it
took no time at all to port it.

Sort-by-log will be a bit harder.

And because two people asked me within a minute of me committing it, there
exists an "old log" GaimLogLogger that doesn't write logs, but can list and
read them. So, you'll be able to seamlessly see your old logs along with
your new logs together in the log viewer.

5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
1 //#include <gtk/gtk.h>
91
5d2be994dcf4 [gaim-migrate @ 101]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2 #include <time.h>
5d2be994dcf4 [gaim-migrate @ 101]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 #include <stdio.h>
5d2be994dcf4 [gaim-migrate @ 101]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
4 #include <fcntl.h>
94
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
5 #include <string.h>
91
5d2be994dcf4 [gaim-migrate @ 101]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 #include "gaim.h"
5d2be994dcf4 [gaim-migrate @ 101]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
8 #define GAIMINC_PLUGIN_ID "core-gaiminc"
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
9
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
10 static void
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
11 echo_hi(void *m)
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
12 {
94
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
13 /* this doesn't do much, just lets you know who we are :) */
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
14 show_about(NULL, NULL);
91
5d2be994dcf4 [gaim-migrate @ 101]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 }
92
b2cc29da946e [gaim-migrate @ 102]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 91
diff changeset
16
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
17 static void
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
18 reverse(struct gaim_connection *gc, char **who, char **message, void *m)
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
19 {
94
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
20 /* this will drive you insane. whenever you receive a message,
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
21 * the text of the message (HTML and all) will be reversed. */
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
22 int i, l;
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
23 char tmp;
99
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 96
diff changeset
24
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 96
diff changeset
25 /* this check is necessary in case bad plugins do bad things */
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 96
diff changeset
26 if (message == NULL || *message == NULL)
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 96
diff changeset
27 return;
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 96
diff changeset
28
94
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
29 l = strlen(*message);
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
30
1047
783f8520d9a0 [gaim-migrate @ 1057]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 99
diff changeset
31 if (!strcmp(*who, gc->username))
94
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
32 return;
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
33
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
34 for (i = 0; i < l/2; i++) {
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
35 tmp = (*message)[i];
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
36 (*message)[i] = (*message)[l - i - 1];
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
37 (*message)[l - i - 1] = tmp;
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
38 }
92
b2cc29da946e [gaim-migrate @ 102]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 91
diff changeset
39 }
94
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
40
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
41 static void
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
42 bud(struct gaim_connection *gc, char *who, void *m)
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
43 {
94
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
44 /* whenever someone comes online, it sends them a message. if i
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
45 * cared more, i'd make it so it popped up on your screen too */
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6485
diff changeset
46 serv_send_im(gc, who, "Hello!", 0);
94
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
47 }
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
48
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
49 /*
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
50 * EXPORTED FUNCTIONS
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
51 */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
52
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
53 static gboolean
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
54 plugin_load(GaimPlugin *plugin)
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
55 {
94
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
56 /* this is for doing something fun when we sign on */
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
57 gaim_signal_connect(gaim_connections_get_handle(), "signed-on",
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
58 plugin, GAIM_CALLBACK(echo_hi), NULL);
94
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
59
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
60 /* this is for doing something fun when we get a message */
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
61 gaim_signal_connect(gaim_conversations_get_handle(), "received-im",
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
62 plugin, GAIM_CALLBACK(reverse), NULL);
94
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
63
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
64 /* this is for doing something fun when a buddy comes online */
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
65 gaim_signal_connect(gaim_blist_get_handle(), "buddy-signed-on",
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
66 plugin, GAIM_CALLBACK(bud), NULL);
1047
783f8520d9a0 [gaim-migrate @ 1057]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 99
diff changeset
67
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
68 return TRUE;
94
0c6ba3d3fa90 [gaim-migrate @ 104]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 92
diff changeset
69 }
96
2b8586ab9456 [gaim-migrate @ 106]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 94
diff changeset
70
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
71 static GaimPluginInfo info =
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
72 {
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
73 2, /**< api_version */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
74 GAIM_PLUGIN_STANDARD, /**< type */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
75 NULL, /**< ui_requirement */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
76 0, /**< flags */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
77 NULL, /**< dependencies */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
78 GAIM_PRIORITY_DEFAULT, /**< priority */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
79
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
80 GAIMINC_PLUGIN_ID, /**< id */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
81 N_("Gaim Demonstration Plugin"), /**< name */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
82 VERSION, /**< version */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
83 /** summary */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
84 N_("An example plugin that does stuff - see the description."),
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
85 /** description */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
86 N_("This is a really cool plugin that does a lot of stuff:\n"
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
87 "- It tells you who wrote the program when you log in\n"
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
88 "- It reverses all incoming text\n"
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
89 "- It sends a message to people on your list immediately"
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
90 " when they sign on"),
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
91 "Eric Warmenhoven <eric@warmenhoven.org>", /**< author */
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
92 GAIM_WEBSITE, /**< homepage */
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
93
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
94 plugin_load, /**< load */
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
95 NULL, /**< unload */
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
96 NULL, /**< destroy */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
97
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
98 NULL, /**< ui_info */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
99 NULL /**< extra_info */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
100 };
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
101
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
102 static void
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5255
diff changeset
103 init_plugin(GaimPlugin *plugin)
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5205
diff changeset
104 {
3551
acce66c34dbd [gaim-migrate @ 3626]
Sean Egan <seanegan@pidgin.im>
parents: 1047
diff changeset
105 }
acce66c34dbd [gaim-migrate @ 3626]
Sean Egan <seanegan@pidgin.im>
parents: 1047
diff changeset
106
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 5920
diff changeset
107 GAIM_INIT_PLUGIN(gaiminc, init_plugin, info)

mercurial