# HG changeset patch # User Luke Schierer # Date 1070079755 0 # Node ID 251e2e434a86c69e7aeeadcb5becb17a03321594 # Parent 2e32c38760b27c9d09db54dfe5112cebfd127654 [gaim-migrate @ 8302] Alex Bennee (trent) made filectl.c compile committer: Tailor Script diff -r 2e32c38760b2 -r 251e2e434a86 plugins/filectl.c --- a/plugins/filectl.c Sat Nov 29 04:20:28 2003 +0000 +++ b/plugins/filectl.c Sat Nov 29 04:22:35 2003 +0000 @@ -1,20 +1,37 @@ -#include "config.h" -#include "gaim.h" +/* +** Send commands to gaim via ~/.gaim/control +** +** By Eric Warmenhoven +** compile fixes/mini hacks Alex Bennee +*/ +/* system includes */ #include #include +#include #include #include #include #include #include +/* gaim includes */ +#include "internal.h" + +#include "config.h" +#include "gaim.h" +#include "debug.h" +#include "account.h" +#include "conversation.h" + + + #define FILECTL_PLUGIN_ID "core-filectl" static int check; static time_t mtime; static void init_file(); -static void check_file(); +static gboolean check_file(); /* parse char * as if were word array */ char *getarg(char *, int, int); @@ -36,12 +53,12 @@ gaim_debug(GAIM_DEBUG_MISC, "filectl", "read: %s\n", buffer); command = getarg(buffer, 0, 0); if (!strncasecmp(command, "signon", 6)) { - struct gaim_account *account = NULL; - GSList *accts = gaim_accounts; + GaimAccount *account = NULL; + GList *accts = gaim_accounts_get_all(); arg1 = getarg(buffer, 1, 1); if (arg1) { while (accts) { - struct gaim_account *a = accts->data; + GaimAccount *a = accts->data; if (!strcmp(a->username, arg1)) { account = a; break; @@ -53,47 +70,48 @@ if (account) /* username found */ gaim_account_connect(account); } else if (!strncasecmp(command, "signoff", 7)) { - struct gaim_connection *gc = NULL; - GSList *c = connections; + GaimConnection *gc = NULL; + GList *c = gaim_connections_get_all(); arg1 = getarg(buffer, 1, 1); while (arg1 && c) { gc = c->data; - if (!strcmp(gc->username, arg1)) { + if (!strcmp(gc->account->username, arg1)) { break; } gc = NULL; c = c->next; } if (gc) - signoff(gc); + gaim_connection_disconnect(gc); else if (!arg1) - signoff_all(NULL, NULL); + gaim_connections_disconnect_all(); free(arg1); } else if (!strncasecmp(command, "send", 4)) { GaimConversation *c; arg1 = getarg(buffer, 1, 0); arg2 = getarg(buffer, 2, 1); - c = find_conversation(arg1); - if (!c) c = gaim_conversation_new(GAIM_CONV_IM, arg1); - write_to_conv(c, arg2, WFLAG_SEND, NULL, time(NULL), -1); - serv_send_im(c->gc, arg1, arg2, 0); + c = gaim_find_conversation(arg1); + if (c) + { + /* disable for now + gaim_conversation_write(c, arg2, WFLAG_SEND, NULL, time(NULL), -1); + serv_send_im(c->gc, arg1, arg2, 0); + */ + } free(arg1); free(arg2); } else if (!strncasecmp(command, "away", 4)) { - struct away_message a; arg1 = getarg(buffer, 1, 1); - snprintf(a.message, 2048, "%s", arg1); - a.name[0] = 0; - do_away_message(NULL, &a); + serv_set_away_all(arg1); free(arg1); } else if (!strncasecmp(command, "hide", 4)) { - hide_buddy_list(); + //hide_buddy_list(); } else if (!strncasecmp(command, "unhide", 6)) { - unhide_buddy_list(); + //unhide_buddy_list(); } else if (!strncasecmp(command, "back", 4)) { - do_im_back(); + //do_im_back(); } else if (!strncasecmp(command, "quit", 4)) { - gaim_core_quit(); + //gaim_core_quit(); } free(command); } @@ -118,7 +136,7 @@ } /* check to see if we need to run commands from the file */ -void check_file() { +gboolean check_file() { /* most of this was taken from Bash v2.04 by the FSF */ struct stat finfo; char file[256]; @@ -126,11 +144,15 @@ sprintf(file, "%s/.gaim/control", getenv("HOME")); if ((stat (file, &finfo) == 0) && (finfo.st_size > 0)) + { if (mtime != finfo.st_mtime) { gaim_debug(GAIM_DEBUG_INFO, "filectl", "control changed, checking\n"); run_commands(); } + } + + return TRUE; } char *getarg(char *line, int which, int remain) { @@ -175,7 +197,7 @@ plugin_load(GaimPlugin *plugin) { init_file(); - check = g_timeout_add(5000, check_file, NULL); + check = g_timeout_add(5000, (GSourceFunc) check_file, NULL); return TRUE; }