src/gaim-remote.c

Fri, 21 May 2004 14:33:32 +0000

author
Stu Tomlinson <nosnilmot@pidgin.im>
date
Fri, 21 May 2004 14:33:32 +0000
changeset 8999
dd434cfec86a
parent 8730
9533a7bcbedb
child 9084
f76185a47f81
permissions
-rw-r--r--

[gaim-migrate @ 9774]
" This patch renames the existing received-*-msg signals
to receiving-*msg to fit the naming of other signals
where a pointer to the message is passed (writing,
sending, displaying)

It adds new received-*-msg signals which are emitted
after the receiving signals, in line with the other
conversation signals (wrote, sent, displayed)

This is necessary to allow plugins which depend on the
final received message to work alongside plugins which
may modify the message.

One known example of this is festival-gaim alongside
gaim-encryption - festival-gaim would try to "speak"
the encrypted text:
http://sf.net/tracker/?func=detail&aid=943216&group_id=89763&atid=591320

I've tested this with gaim-encryption and festival-gaim
(locally modified so gaim-encryption uses the receiving
signal and festival uses the received signal)

All in-tree users of received-*-msg are updated to use
receiving-*-msg if they do modify the message, the
conversation-signals documentation is updated, the
signals-test.c & signal-test.tcl plugins are also updated." --Stu Tomlinson

committer: Luke Schierer <lschiere@pidgin.im>

3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1 /*
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2 * gaim-remote
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
3 *
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7724
diff changeset
4 * Gaim is the legal property of its developers, whose names are too numerous
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7724
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7724
diff changeset
6 * source distribution.
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
7 *
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
12 *
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
17 *
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
21 *
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22 */
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
23
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
24 #include "internal.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5859
diff changeset
25
3533
db01a1976f49 [gaim-migrate @ 3607]
Sean Egan <seanegan@pidgin.im>
parents: 3480
diff changeset
26 #include <getopt.h>
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5124
diff changeset
27
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5124
diff changeset
28 #include <gaim-remote/remote.h>
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
29
7724
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
30 /* writes a message 'text' to screen
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
31 * message tries to convert 'text' from utf-8 to user's locale and
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
32 * uses the original message 'text' as a fallback
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
33 *
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
34 * if channel is 1, the message is printed to stdout
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
35 * if channel is 2, the message is printed to stderr
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
36 */
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
37 void message(char *text,int channel)
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
38 {
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
39 char *text_conv=NULL,*text_output;
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
40 GError *error=NULL;
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
41
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
42 text_conv=g_locale_from_utf8(text,-1,NULL,NULL,&error);
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
43
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
44 if(!text_conv) {
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
45 g_warning("%s\n", error->message);
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
46 g_error_free(error);
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
47 }
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
48
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
49 text_output=(text_conv ? text_conv : text);
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
50
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
51 switch(channel) {
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
52 case 1: puts(text_output); break;
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
53 case 2: fputs(text_output, stderr); break;
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
54 default: break;
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
55 }
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
56
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
57 if(text_conv)
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
58 g_free(text_conv);
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
59 }
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
60
4242
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
61 void show_remote_usage(char *name)
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
62 {
7724
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
63 char *text=NULL;
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
64
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
65 text=g_strdup_printf(_("Usage: %s command [OPTIONS] [URI]\n\n"
4242
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
66
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
67 " COMMANDS:\n"
4242
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
68 " uri Handle AIM: URI\n"
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
69 " quit Close running copy of Gaim\n\n"
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
70
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
71 " OPTIONS:\n"
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
72 " -h, --help [commmand] Show help for command\n"), name);
7724
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
73
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
74 message(text,1);
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
75 g_free(text);
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
76
4242
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
77 return;
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
78 }
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
79
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
80 /*To be implemented:
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
81 " info Show information about connected accounts\n"
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
82 " list Print buddy list\n"
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
83 " ison Show presence state of your buddy\n"
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
84 " convo Open a new conversation window\n"
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
85 " send Send message\n"
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
86 " add Add buddy to buddy list\n"
3559
329d9448fa45 [gaim-migrate @ 3653]
John Silvestri <john.silvestri@gmail.com>
parents: 3533
diff changeset
87 " remove Remove buddy from list\n"
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
88 " -m, --message=MESG Message to send or show in conversation window\n"
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
89 " -t, --to=SCREENNAME Select a target for command\n"
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
90 " -p, --protocol=PROTO Specify protocol to use\n"
8154
20ae0bc286cf [gaim-migrate @ 8866]
Mark Doliner <markdoliner@pidgin.im>
parents: 8152
diff changeset
91 " -f, --from=SCREENNAME Specify screen name to use\n"
4242
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
92 " -q, --quiet Send message without showing a conversation\n"
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
93 " window\n"
4242
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
94 */
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
95
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
96 static struct option longopts[] = {
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
97 {"message", required_argument, NULL, 'm'},
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
98 {"to", required_argument, NULL, 't'},
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
99 {"protocol",required_argument, NULL, 'p'},
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
100 {"from", required_argument, NULL, 'f'},
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
101 {"quiet", no_argument, NULL, 'q'},
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
102 {"help", no_argument, NULL, 'h'},
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
103 {0,0,0,0}
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
104 };
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
105
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
106 struct remoteopts {
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
107 char *command;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
108 char *uri;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
109 gboolean help, quiet;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
110 char *message, *to, *from;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
111 int protocol;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
112 };
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
113
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
114
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
115 struct remoteopts opts;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
116 int get_options(int argc, char *argv[])
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
117 {
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
118 int i;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
119 memset(&opts, 0, sizeof(opts));
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
120 opts.protocol = -1;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
121 while ((i=getopt_long(argc, argv, "m:t:p:f:qh", longopts, NULL)) != -1) {
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
122 switch (i) {
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
123 case 'm':
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
124 opts.message = optarg;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
125 break;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
126 case 't':
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
127 opts.to = optarg;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
128 break;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
129 case 'p':
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
130 /* Do stuff here. */
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
131 break;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
132 case 'f':
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
133 opts.from = optarg;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
134 break;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
135 case 'q':
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
136 opts.quiet = TRUE;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
137 break;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
138 case 'h':
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
139 opts.help = TRUE;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
140 break;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
141 }
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
142 }
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
143
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
144 /* We must have non getopt'ed argument-- the command */
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
145 if (optind < argc)
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
146 opts.command = g_strdup(argv[optind++]);
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
147 else
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
148 return 1;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
149
6643
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
150 if(opts.help)
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
151 return 0;
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
152
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
153 /* And we can have another argument--the URI. */
6643
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
154 /* but only if we're using the uri command. */
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
155 if (!strcmp(opts.command, "uri")) {
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
156 if(argc-optind==1)
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
157 opts.uri = g_strdup(argv[optind++]);
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
158 else
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
159 return 1;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
160 }
6643
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
161 else if(optind==argc)
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
162 return 0;
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
163 else
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
164 return 1;
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
165
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
166 return 0;
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
167 }
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
168
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
169 int command_uri() {
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
170 int fd = 0;
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5124
diff changeset
171 GaimRemotePacket *p = NULL;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5124
diff changeset
172 fd = gaim_remote_session_connect(0);
6643
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
173 if (fd<0) {
7724
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
174 message(_("Gaim not running (on session 0)\n"),2);
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
175 return 1;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
176 }
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5124
diff changeset
177 p = gaim_remote_packet_new(CUI_TYPE_REMOTE, CUI_REMOTE_URI);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5124
diff changeset
178 gaim_remote_packet_append_string(p, opts.uri);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5124
diff changeset
179 gaim_remote_session_send_packet(fd, p);
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
180 close(fd);
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5124
diff changeset
181 gaim_remote_packet_free(p);
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
182 return 0;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
183 }
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
184
3559
329d9448fa45 [gaim-migrate @ 3653]
John Silvestri <john.silvestri@gmail.com>
parents: 3533
diff changeset
185 int command_quit() {
329d9448fa45 [gaim-migrate @ 3653]
John Silvestri <john.silvestri@gmail.com>
parents: 3533
diff changeset
186 int fd = 0;
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5124
diff changeset
187 GaimRemotePacket *p = NULL;
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5124
diff changeset
188 fd = gaim_remote_session_connect(0);
6643
5e9beb88b192 [gaim-migrate @ 7168]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 5872
diff changeset
189 if (fd<0) {
7724
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
190 message(_("Gaim not running (on session 0)\n"),2);
3559
329d9448fa45 [gaim-migrate @ 3653]
John Silvestri <john.silvestri@gmail.com>
parents: 3533
diff changeset
191 return 1;
329d9448fa45 [gaim-migrate @ 3653]
John Silvestri <john.silvestri@gmail.com>
parents: 3533
diff changeset
192 }
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5124
diff changeset
193 p = gaim_remote_packet_new(CUI_TYPE_META, CUI_META_QUIT);
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5124
diff changeset
194 gaim_remote_session_send_packet(fd, p);
3559
329d9448fa45 [gaim-migrate @ 3653]
John Silvestri <john.silvestri@gmail.com>
parents: 3533
diff changeset
195 close(fd);
5859
e9e5fb0bbfe9 [gaim-migrate @ 6290]
Christian Hammond <chipx86@chipx86.com>
parents: 5124
diff changeset
196 gaim_remote_packet_free(p);
3559
329d9448fa45 [gaim-migrate @ 3653]
John Silvestri <john.silvestri@gmail.com>
parents: 3533
diff changeset
197 return 0;
329d9448fa45 [gaim-migrate @ 3653]
John Silvestri <john.silvestri@gmail.com>
parents: 3533
diff changeset
198 }
329d9448fa45 [gaim-migrate @ 3653]
John Silvestri <john.silvestri@gmail.com>
parents: 3533
diff changeset
199
7724
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
200 void show_longhelp_uri( char *name, char *command)
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
201 {
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
202 if(!strcmp(command, "uri")) {
7724
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
203 message(_("\n"
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
204 "Using AIM: URIs:\n"
8152
f26c9406b4b3 [gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
205 "Sending an IM to a screen name:\n"
7724
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
206 " gaim-remote uri 'aim:goim?screenname=Penguin&message=hello+world'\n"
8152
f26c9406b4b3 [gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
207 "In this case, 'Penguin' is the screen name we wish to IM, and 'hello world'\n"
7724
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
208 "is the message to be sent. '+' must be used in place of spaces.\n"
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
209 "Please note the quoting used above - if you run this from a shell the '&'\n"
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
210 "needs to be escaped, or the command will stop at that point.\n"
8152
f26c9406b4b3 [gaim-migrate @ 8864]
Mark Doliner <markdoliner@pidgin.im>
parents: 8046
diff changeset
211 "Also,the following will just open a conversation window to a screen name,\n"
7724
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
212 "with no message:\n"
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
213 " gaim-remote uri 'aim:goim?screenname=Penguin'\n\n"
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
214 "Joining a chat:\n"
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
215 " gaim-remote uri 'aim:gochat?roomname=PenguinLounge'\n"
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
216 "...joins the 'PenguinLounge' chat room.\n\n"
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
217 "Adding a buddy to your buddy list:\n"
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
218 " gaim-remote uri 'aim:addbuddy?screenname=Penguin'\n"
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
219 "...prompts you to add 'Penguin' to your buddy list.\n"), 1);
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
220 }
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
221 else if(!strcmp(command, "quit")) {
7724
c03cfedb10f3 [gaim-migrate @ 8369]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6643
diff changeset
222 message(_("\nClose running copy of Gaim\n"), 1);
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
223 }
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
224 else {
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
225 show_remote_usage(name);
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
226 }
4242
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
227 }
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
228
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
229 /* Work in progress - JBS
3867
0e747b4295cb [gaim-migrate @ 4019]
Rob Flynn <gaim@robflynn.com>
parents: 3559
diff changeset
230 int command_info(){
0e747b4295cb [gaim-migrate @ 4019]
Rob Flynn <gaim@robflynn.com>
parents: 3559
diff changeset
231 fprintf(stderr, "Info not yet implemented\n");
0e747b4295cb [gaim-migrate @ 4019]
Rob Flynn <gaim@robflynn.com>
parents: 3559
diff changeset
232 return 1;
4242
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
233 }*/
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
234
3559
329d9448fa45 [gaim-migrate @ 3653]
John Silvestri <john.silvestri@gmail.com>
parents: 3533
diff changeset
235 int main (int argc, char *argv[])
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
236 {
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
237
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
238 #ifdef ENABLE_NLS
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
239 setlocale (LC_ALL, "");
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
240 bindtextdomain(PACKAGE, LOCALEDIR);
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
241 bind_textdomain_codeset(PACKAGE, "UTF-8");
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
242 textdomain(PACKAGE);
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
243 #endif
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
244
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
245 if (get_options(argc, argv)) {
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
246 show_remote_usage(argv[0]);
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
247 return 0;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
248 }
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
249
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
250
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
251 if (!strcmp(opts.command, "uri")) {
4242
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
252 if(opts.help){
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
253 show_longhelp_uri(argv[0], "uri");
4242
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
254 }else{
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
255 return command_uri();
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
256 }
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
257 /* } else if (!strcmp(opts.command, "info")) {
48cfe2669548 [gaim-migrate @ 4492]
John Silvestri <john.silvestri@gmail.com>
parents: 4235
diff changeset
258 return command_info();*/
3559
329d9448fa45 [gaim-migrate @ 3653]
John Silvestri <john.silvestri@gmail.com>
parents: 3533
diff changeset
259 } else if (!strcmp(opts.command, "quit")) {
5116
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
260 if(opts.help){
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
261 show_longhelp_uri(argv[0], "quit");
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
262 }else{
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
263 return command_quit();
8e5a5161a4d9 [gaim-migrate @ 5479]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 4242
diff changeset
264 }
3480
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
265 } else {
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
266 show_remote_usage(argv[0]);
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
267 return 1;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
268 }
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
269
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
270 return 0;
2e430147929e [gaim-migrate @ 3534]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
271 }

mercurial