plugins/filectl.c

Sun, 12 Feb 2006 22:14:38 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Sun, 12 Feb 2006 22:14:38 +0000
changeset 13255
b318f395092d
parent 12397
aa64ec827fdf
child 13471
e01689a020dd
permissions
-rw-r--r--

[gaim-migrate @ 15620]
This is the way we clean the code, clean the code, clean the code
This is the way we clean the code, clean the code, clean the code
So early in the morning

10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
1 /**
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
2 * Send commands to Gaim via ~/.gaim/control
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
3 *
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
4 * Originally by Eric Warmenhoven <eric@warmenhoven.org>
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
5 * Compile fixes/mini hacks Alex Bennee <alex@bennee.com>
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
6 * and Brian Tarricone <bjt23@users.sourceforge.net>
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
7 */
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8
7658
4c49bd83c793 [gaim-migrate @ 8302]
Alex Bennee
parents: 6982
diff changeset
9 /* system includes */
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
10 #include <stdlib.h>
7658
4c49bd83c793 [gaim-migrate @ 8302]
Alex Bennee
parents: 6982
diff changeset
11 #include <stdio.h>
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 #include <unistd.h>
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 #include <sys/types.h>
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 #include <sys/stat.h>
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 #include <string.h>
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 #include <ctype.h>
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
18 #include "account.h"
7658
4c49bd83c793 [gaim-migrate @ 8302]
Alex Bennee
parents: 6982
diff changeset
19 #include "config.h"
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
20 #include "core.h"
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
21 #include "conversation.h"
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
22 #include "debug.h"
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
23 #include "eventloop.h"
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
24 #include "internal.h"
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
25 #include "util.h"
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9863
diff changeset
26 #include "version.h"
7658
4c49bd83c793 [gaim-migrate @ 8302]
Alex Bennee
parents: 6982
diff changeset
27
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
28 #define FILECTL_PLUGIN_ID "core-filectl"
179
3d1884b2ad14 [gaim-migrate @ 189]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 106
diff changeset
29 static int check;
3d1884b2ad14 [gaim-migrate @ 189]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 106
diff changeset
30 static time_t mtime;
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
31
12397
aa64ec827fdf [gaim-migrate @ 14704]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
32 static void init_file(void);
aa64ec827fdf [gaim-migrate @ 14704]
Richard Laager <rlaager@pidgin.im>
parents: 11338
diff changeset
33 static gboolean check_file(void);
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
34
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
35 /* parse char * as if were word array */
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
36 char *getarg(char *, int, int);
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
37
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
38 /* go through file and run any commands */
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
39 void
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
40 run_commands()
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
41 {
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
42 struct stat finfo;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
43 char filename[256];
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
44 char buffer[1024];
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
45 char *command, *arg1, *arg2;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
46 FILE *file;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
47
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
48 sprintf(filename, "%s" G_DIR_SEPARATOR_S "control", gaim_user_dir());
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
49
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10416
diff changeset
50 file = g_fopen(filename, "r+");
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
51 while (fgets(buffer, sizeof(buffer), file)) {
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
52
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
53 /* Read the next command */
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
54 if (buffer[strlen(buffer) - 1] == '\n')
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
55 buffer[strlen(buffer) - 1] = 0;
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
56 gaim_debug_misc("filectl", "read: %s\n", buffer);
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
57 command = getarg(buffer, 0, 0);
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
58
10272
29aff2eb9290 [gaim-migrate @ 11421]
Mark Doliner <markdoliner@pidgin.im>
parents: 10256
diff changeset
59 if (!strncasecmp(command, "login", 6)) {
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
60 GaimAccount *account;
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
61
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
62 arg1 = getarg(buffer, 1, 0);
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
63 arg2 = getarg(buffer, 2, 1);
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
64
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
65 account = gaim_accounts_find(arg1, arg2);
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
66 if (account != NULL) /* username found */
10744
cfcb930a50dc [gaim-migrate @ 12346]
Mark Doliner <markdoliner@pidgin.im>
parents: 10738
diff changeset
67 gaim_account_connect(account);
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
68
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
69 free(arg1);
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
70 free(arg2);
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
71
10272
29aff2eb9290 [gaim-migrate @ 11421]
Mark Doliner <markdoliner@pidgin.im>
parents: 10256
diff changeset
72 } else if (!strncasecmp(command, "logout", 7)) {
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
73 GaimAccount *account;
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
74
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
75 arg1 = getarg(buffer, 1, 1);
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
76 arg2 = getarg(buffer, 2, 1);
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
77
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
78 account = gaim_accounts_find(arg1, arg2);
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
79 if (account != NULL)
7658
4c49bd83c793 [gaim-migrate @ 8302]
Alex Bennee
parents: 6982
diff changeset
80 {
10738
63ca8277c234 [gaim-migrate @ 12340]
Mark Doliner <markdoliner@pidgin.im>
parents: 10589
diff changeset
81 gaim_account_disconnect(account);
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
82 }
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
83 else if (arg1 == NULL)
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
84 gaim_connections_disconnect_all();
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
85
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
86 free(arg1);
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
87 free(arg2);
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
88
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
89 } else if (!strncasecmp(command, "send", 4)) {
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
90 GaimConversation *conv;
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
91
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
92 arg1 = getarg(buffer, 1, 0);
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
93 arg2 = getarg(buffer, 2, 1);
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
94
11338
1a3663ac9b05 [gaim-migrate @ 13551]
Mark Doliner <markdoliner@pidgin.im>
parents: 11256
diff changeset
95 conv = gaim_find_conversation(GAIM_CONV_TYPE_ANY, arg1);
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
96 if (conv != NULL)
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
97 {
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
98 /*
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
99 gaim_conversation_write(conv, arg2, WFLAG_SEND, NULL, time(NULL), -1);
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
100 serv_send_im(conv->gc, arg1, arg2, 0);
9863
323e4fe28791 [gaim-migrate @ 10742]
Mark Doliner <markdoliner@pidgin.im>
parents: 8749
diff changeset
101 */
7658
4c49bd83c793 [gaim-migrate @ 8302]
Alex Bennee
parents: 6982
diff changeset
102 }
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
103
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
104 free(arg1);
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
105 free(arg2);
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
106
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
107 } else if (!strncasecmp(command, "away", 4)) {
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
108 arg1 = getarg(buffer, 1, 1);
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
109 /* serv_set_away_all(arg1); */
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
110 free(arg1);
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
111
3198
e66aac97c837 [gaim-migrate @ 3215]
Ari Pollak <ari@debian.org>
parents: 3061
diff changeset
112 } else if (!strncasecmp(command, "hide", 4)) {
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
113 gaim_blist_set_visible(FALSE);
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
114
3198
e66aac97c837 [gaim-migrate @ 3215]
Ari Pollak <ari@debian.org>
parents: 3061
diff changeset
115 } else if (!strncasecmp(command, "unhide", 6)) {
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
116 gaim_blist_set_visible(TRUE);
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
117
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
118 } else if (!strncasecmp(command, "back", 4)) {
9863
323e4fe28791 [gaim-migrate @ 10742]
Mark Doliner <markdoliner@pidgin.im>
parents: 8749
diff changeset
119 /* do_im_back(); */
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
120
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
121 } else if (!strncasecmp(command, "quit", 4)) {
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
122 gaim_core_quit();
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
123
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
124 }
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
125
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
126 free(command);
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
127 }
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
128
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
129 fclose(file);
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
130
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10416
diff changeset
131 if (g_stat(filename, &finfo) != 0)
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
132 return;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
133 mtime = finfo.st_mtime;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
134 }
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
135
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
136 /**
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
137 * Check to see if the size of the file is > 0. if so, run commands.
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
138 */
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
139 void
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
140 init_file()
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
141 {
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
142 /* most of this was taken from Bash v2.04 by the FSF */
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
143 struct stat finfo;
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
144 char filename[256];
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
145
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
146 sprintf(filename, "%s" G_DIR_SEPARATOR_S "control", gaim_user_dir());
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
147
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10416
diff changeset
148 if ((g_stat(filename, &finfo) == 0) && (finfo.st_size > 0))
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
149 run_commands();
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
150 }
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
151
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
152 /**
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
153 * Check to see if we need to run commands from the file.
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
154 */
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
155 gboolean
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
156 check_file()
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
157 {
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
158 /* most of this was taken from Bash v2.04 by the FSF */
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
159 struct stat finfo;
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
160 char filename[256];
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
161
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
162 sprintf(filename, "%s" G_DIR_SEPARATOR_S "control", gaim_user_dir());
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
163
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 10416
diff changeset
164 if ((g_stat(filename, &finfo) == 0) && (finfo.st_size > 0))
7658
4c49bd83c793 [gaim-migrate @ 8302]
Alex Bennee
parents: 6982
diff changeset
165 {
179
3d1884b2ad14 [gaim-migrate @ 189]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 106
diff changeset
166 if (mtime != finfo.st_mtime) {
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
167 gaim_debug_info("filectl", "control changed, checking\n");
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
168 run_commands();
179
3d1884b2ad14 [gaim-migrate @ 189]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 106
diff changeset
169 }
7658
4c49bd83c793 [gaim-migrate @ 8302]
Alex Bennee
parents: 6982
diff changeset
170 }
4c49bd83c793 [gaim-migrate @ 8302]
Alex Bennee
parents: 6982
diff changeset
171
4c49bd83c793 [gaim-migrate @ 8302]
Alex Bennee
parents: 6982
diff changeset
172 return TRUE;
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
173 }
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
174
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
175 char *
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
176 getarg(char *line, int which, int remain)
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
177 {
106
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
178 char *arr;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
179 char *val;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
180 int count = -1;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
181 int i;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
182 int state = 0;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
183
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
184 for (i = 0; i < strlen(line) && count < which; i++) {
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
185 switch (state) {
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
186 case 0: /* in whitespace, expecting word */
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
187 if (isalnum(line[i])) {
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
188 count++;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
189 state = 1;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
190 }
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
191 break;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
192 case 1: /* inside word, waiting for whitespace */
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
193 if (isspace(line[i])) {
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
194 state = 0;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
195 }
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
196 break;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
197 }
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
198 }
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
199
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
200 arr = strdup(&line[i - 1]);
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
201 if (remain)
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
202 return arr;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
203
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
204 for (i = 0; i < strlen(arr) && isalnum(arr[i]); i++);
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
205 arr[i] = 0;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
206 val = strdup(arr);
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
207 arr[i] = ' ';
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
208 free(arr);
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
209 return val;
420c81f47ca3 [gaim-migrate @ 116]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
210 }
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
211
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
212 /*
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
213 * EXPORTED FUNCTIONS
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
214 */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
215
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
216 static gboolean
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
217 plugin_load(GaimPlugin *plugin)
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
218 {
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
219 init_file();
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
220 check = gaim_timeout_add(5000, (GSourceFunc)check_file, NULL);
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
221
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
222 return TRUE;
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
223 }
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
224
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
225 static gboolean
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
226 plugin_unload(GaimPlugin *plugin)
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
227 {
10256
b03475373f0d [gaim-migrate @ 11397]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
228 gaim_timeout_remove(check);
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
229
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
230 return TRUE;
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
231 }
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
232
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
233 static GaimPluginInfo info =
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
234 {
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9863
diff changeset
235 GAIM_PLUGIN_MAGIC,
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9863
diff changeset
236 GAIM_MAJOR_VERSION,
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9863
diff changeset
237 GAIM_MINOR_VERSION,
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
238 GAIM_PLUGIN_STANDARD, /**< type */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
239 NULL, /**< ui_requirement */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
240 0, /**< flags */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
241 NULL, /**< dependencies */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
242 GAIM_PRIORITY_DEFAULT, /**< priority */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
243
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
244 FILECTL_PLUGIN_ID, /**< id */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
245 N_("Gaim File Control"), /**< name */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
246 VERSION, /**< version */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
247 /** summary */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
248 N_("Allows you to control Gaim by entering commands in a file."),
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
249 /** description */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
250 N_("Allows you to control Gaim by entering commands in a file."),
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
251 "Eric Warmenhoven <eric@warmenhoven.org>", /**< author */
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6179
diff changeset
252 GAIM_WEBSITE, /**< homepage */
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
253
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
254 plugin_load, /**< load */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
255 plugin_unload, /**< unload */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
256 NULL, /**< destroy */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
257
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
258 NULL, /**< ui_info */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
259 NULL /**< extra_info */
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
260 };
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
261
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
262 static void
5920
963bfdefee02 [gaim-migrate @ 6360]
Christian Hammond <chipx86@chipx86.com>
parents: 5676
diff changeset
263 init_plugin(GaimPlugin *plugin)
5255
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
264 {
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
265 }
8aa84137a01f [gaim-migrate @ 5627]
Paul Aurich <darkrain42@pidgin.im>
parents: 5227
diff changeset
266
6063
8fbafa2e1846 [gaim-migrate @ 6513]
Nathan Walp <nwalp@pidgin.im>
parents: 6036
diff changeset
267 GAIM_INIT_PLUGIN(filectl, init_plugin, info)

mercurial