annotate plugins/filectl.c @ 10738:55af3fa46329

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