libpurple/plugins/tcl/tcl_cmds.c

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 26824
c7ba07f9ca42
child 31294
73607ab89c6f
permissions
-rw-r--r--

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1 /**
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
2 * @file tcl_cmds.c Commands for the Purple Tcl plugin bindings
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
3 *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
4 * purple
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
5 *
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
6 * Copyright (C) 2003 Ethan Blanton <eblanton@cs.purdue.edu>
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
7 *
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
11 * (at your option) any later version.
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
12 *
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
16 * GNU General Public License for more details.
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
17 *
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19726
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
21 */
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
22
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
23 #include <tcl.h>
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
24
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
25 #include "internal.h"
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
26 #include "conversation.h"
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
27 #include "connection.h"
22353
daef90676a8f One more g_idle_add call
Mark Doliner <markdoliner@pidgin.im>
parents: 22240
diff changeset
28 #include "eventloop.h"
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
29 #include "account.h"
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
30 #include "server.h"
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
31 #include "notify.h"
6700
02bb89cd563e [gaim-migrate @ 7226]
Ethan Blanton <elb@pidgin.im>
parents: 6694
diff changeset
32 #include "blist.h"
15758
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
33 #include "savedstatuses.h"
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
34 #include "debug.h"
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
35 #include "prefs.h"
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
36 #include "core.h"
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
37
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
38 #include "tcl_purple.h"
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
39
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
40 static PurpleAccount *tcl_validate_account(Tcl_Obj *obj, Tcl_Interp *interp);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
41 static PurpleConversation *tcl_validate_conversation(Tcl_Obj *obj, Tcl_Interp *interp);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
42 static PurpleConnection *tcl_validate_gc(Tcl_Obj *obj, Tcl_Interp *interp);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
43
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
44 static PurpleAccount *tcl_validate_account(Tcl_Obj *obj, Tcl_Interp *interp)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
45 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
46 PurpleAccount *account;
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
47 GList *cur;
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
48
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
49 account = purple_tcl_ref_get(interp, obj, PurpleTclRefAccount);
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
50
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
51 if (account == NULL)
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
52 return NULL;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
53
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
54 for (cur = purple_accounts_get_all(); cur != NULL; cur = g_list_next(cur)) {
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
55 if (account == cur->data)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
56 return account;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
57 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
58 if (interp != NULL)
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
59 Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid account", -1));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
60 return NULL;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
61 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
62
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
63 static PurpleConversation *tcl_validate_conversation(Tcl_Obj *obj, Tcl_Interp *interp)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
64 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
65 PurpleConversation *convo;
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
66 GList *cur;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
67
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
68 convo = purple_tcl_ref_get(interp, obj, PurpleTclRefConversation);
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
69
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
70 if (convo == NULL)
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
71 return NULL;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
72
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
73 for (cur = purple_get_conversations(); cur != NULL; cur = g_list_next(cur)) {
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
74 if (convo == cur->data)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
75 return convo;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
76 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
77 if (interp != NULL)
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
78 Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid conversation", -1));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
79 return NULL;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
80 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
81
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
82 static PurpleConnection *tcl_validate_gc(Tcl_Obj *obj, Tcl_Interp *interp)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
83 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
84 PurpleConnection *gc;
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
85 GList *cur;
13817
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
86
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
87 gc = purple_tcl_ref_get(interp, obj, PurpleTclRefConnection);
13817
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
88
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
89 if (gc == NULL)
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
90 return NULL;
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
91
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
92 for (cur = purple_connections_get_all(); cur != NULL; cur = g_list_next(cur)) {
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
93 if (gc == cur->data)
13817
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
94 return gc;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
95 }
13817
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
96 return NULL;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
97 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
98
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
99 int tcl_cmd_account(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
100 {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
101 Tcl_Obj *result, *list, *elem;
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
102 const char *cmds[] = { "alias", "connect", "connection", "disconnect",
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
103 "enabled", "find", "handle", "isconnected",
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
104 "list", "presence", "protocol", "status",
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
105 "status_type", "status_types", "username",
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
106 NULL };
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
107 enum { CMD_ACCOUNT_ALIAS,
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
108 CMD_ACCOUNT_CONNECT, CMD_ACCOUNT_CONNECTION,
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
109 CMD_ACCOUNT_DISCONNECT, CMD_ACCOUNT_ENABLED, CMD_ACCOUNT_FIND,
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
110 CMD_ACCOUNT_HANDLE, CMD_ACCOUNT_ISCONNECTED, CMD_ACCOUNT_LIST,
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
111 CMD_ACCOUNT_PRESENCE, CMD_ACCOUNT_PROTOCOL, CMD_ACCOUNT_STATUS,
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
112 CMD_ACCOUNT_STATUS_TYPE, CMD_ACCOUNT_STATUS_TYPES,
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
113 CMD_ACCOUNT_USERNAME } cmd;
10339
246feba79f04 [gaim-migrate @ 11548]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
114 const char *listopts[] = { "-all", "-online", NULL };
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
115 enum { CMD_ACCOUNTLIST_ALL, CMD_ACCOUNTLIST_ONLINE } listopt;
8834
0a798e3d2b84 [gaim-migrate @ 9598]
Mark Doliner <markdoliner@pidgin.im>
parents: 7713
diff changeset
116 const char *alias;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18122
diff changeset
117 GList *cur;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
118 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
119 PurpleStatus *status;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
120 PurpleStatusType *status_type;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
121 PurpleValue *value;
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
122 char *attr_id;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
123 int error;
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
124 int b, i;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
125
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
126 if (objc < 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
127 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
128 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
129 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
130
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
131 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
132 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
133
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
134 switch (cmd) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
135 case CMD_ACCOUNT_ALIAS:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
136 if (objc != 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
137 Tcl_WrongNumArgs(interp, 2, objv, "account");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
138 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
139 }
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
140 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
141 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
142 alias = purple_account_get_alias(account);
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
143 Tcl_SetObjResult(interp, Tcl_NewStringObj(alias ? (char *)alias : "", -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
144 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
145 case CMD_ACCOUNT_CONNECT:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
146 if (objc != 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
147 Tcl_WrongNumArgs(interp, 2, objv, "account");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
148 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
149 }
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
150 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
151 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
152 if (!purple_account_is_connected(account))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
153 purple_account_connect(account);
13817
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
154 Tcl_SetObjResult(interp,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
155 purple_tcl_ref_new(PurpleTclRefConnection,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
156 purple_account_get_connection(account)));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
157 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
158 case CMD_ACCOUNT_CONNECTION:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
159 if (objc != 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
160 Tcl_WrongNumArgs(interp, 2, objv, "account");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
161 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
162 }
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
163
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
164 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
165 return TCL_ERROR;
13817
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
166 Tcl_SetObjResult(interp,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
167 purple_tcl_ref_new(PurpleTclRefConnection,
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
168 purple_account_get_connection(account)));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
169 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
170 case CMD_ACCOUNT_DISCONNECT:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
171 if (objc != 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
172 Tcl_WrongNumArgs(interp, 2, objv, "account");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
173 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
174 }
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
175 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
176 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
177 purple_account_disconnect(account);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
178 break;
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
179 case CMD_ACCOUNT_ENABLED:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
180 if (objc != 3 && objc != 4) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
181 Tcl_WrongNumArgs(interp, 2, objv, "account ?enabled?");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
182 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
183 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
184 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
185 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
186 if (objc == 3) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
187 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
188 Tcl_NewBooleanObj(
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
189 purple_account_get_enabled(account,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
190 purple_core_get_ui())));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
191 } else {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
192 if ((error = Tcl_GetBooleanFromObj(interp, objv[3], &b)) != TCL_OK)
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
193 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
194 purple_account_set_enabled(account, purple_core_get_ui(), b);
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
195 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
196 break;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
197 case CMD_ACCOUNT_FIND:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
198 if (objc != 4) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
199 Tcl_WrongNumArgs(interp, 2, objv, "username protocol");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
200 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
201 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
202 account = purple_accounts_find(Tcl_GetString(objv[2]),
13817
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
203 Tcl_GetString(objv[3]));
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
204 Tcl_SetObjResult(interp,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
205 purple_tcl_ref_new(PurpleTclRefAccount, account));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
206 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
207 case CMD_ACCOUNT_HANDLE:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
208 if (objc != 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
209 Tcl_WrongNumArgs(interp, 2, objv, "");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
210 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
211 }
20393
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
212 Tcl_SetObjResult(interp,
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
213 purple_tcl_ref_new(PurpleTclRefHandle,
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
214 purple_accounts_get_handle()));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
215 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
216 case CMD_ACCOUNT_ISCONNECTED:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
217 if (objc != 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
218 Tcl_WrongNumArgs(interp, 2, objv, "account");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
219 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
220 }
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
221 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
222 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
223 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
224 Tcl_NewBooleanObj(
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
225 purple_account_is_connected(account)));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
226 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
227 case CMD_ACCOUNT_LIST:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
228 listopt = CMD_ACCOUNTLIST_ALL;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
229 if (objc > 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
230 Tcl_WrongNumArgs(interp, 2, objv, "?option?");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
231 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
232 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
233 if (objc == 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
234 if ((error = Tcl_GetIndexFromObj(interp, objv[2], listopts, "option", 0, (int *)&listopt)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
235 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
236 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
237 list = Tcl_NewListObj(0, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
238 for (cur = purple_accounts_get_all(); cur != NULL; cur = g_list_next(cur)) {
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
239 account = cur->data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
240 if (listopt == CMD_ACCOUNTLIST_ONLINE && !purple_account_is_connected(account))
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
241 continue;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
242 elem = purple_tcl_ref_new(PurpleTclRefAccount, account);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
243 Tcl_ListObjAppendElement(interp, list, elem);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
244 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
245 Tcl_SetObjResult(interp, list);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
246 break;
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
247 case CMD_ACCOUNT_PRESENCE:
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
248 if (objc != 3) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
249 Tcl_WrongNumArgs(interp, 2, objv, "account");
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
250 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
251 }
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
252 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
253 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
254 Tcl_SetObjResult(interp, purple_tcl_ref_new(PurpleTclRefPresence,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
255 purple_account_get_presence(account)));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
256 break;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
257 case CMD_ACCOUNT_PROTOCOL:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
258 if (objc != 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
259 Tcl_WrongNumArgs(interp, 2, objv, "account");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
260 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
261 }
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
262 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
263 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
264 Tcl_SetObjResult(interp, Tcl_NewStringObj((char *)purple_account_get_protocol_id(account), -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
265 break;
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
266 case CMD_ACCOUNT_STATUS:
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
267 if (objc < 3) {
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
268 Tcl_WrongNumArgs(interp, 2, objv, "account ?status_id name value ...?");
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
269 return TCL_ERROR;
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
270 }
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
271 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
272 return TCL_ERROR;
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
273 if (objc == 3) {
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
274 Tcl_SetObjResult(interp,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
275 purple_tcl_ref_new(PurpleTclRefStatus,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
276 purple_account_get_active_status(account)));
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
277 } else {
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
278 GList *l = NULL;
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
279 if (objc % 2) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
280 Tcl_SetObjResult(interp, Tcl_NewStringObj("name without value setting status", -1));
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
281 return TCL_ERROR;
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
282 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
283 status = purple_account_get_status(account, Tcl_GetString(objv[3]));
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
284 if (status == NULL) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
285 Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid status for account", -1));
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
286 return TCL_ERROR;
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
287 }
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
288 for (i = 4; i < objc; i += 2) {
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
289 attr_id = Tcl_GetString(objv[i]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
290 value = purple_status_get_attr_value(status, attr_id);
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
291 if (value == NULL) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
292 Tcl_SetObjResult(interp, Tcl_NewStringObj("invalid attribute for account", -1));
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
293 return TCL_ERROR;
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
294 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
295 switch (purple_value_get_type(value)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
296 case PURPLE_TYPE_BOOLEAN:
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
297 error = Tcl_GetBooleanFromObj(interp, objv[i + 1], &b);
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
298 if (error != TCL_OK)
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
299 return error;
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
300 l = g_list_append(l, attr_id);
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
301 l = g_list_append(l, GINT_TO_POINTER(b));
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
302 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
303 case PURPLE_TYPE_INT:
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
304 error = Tcl_GetIntFromObj(interp, objv[i + 1], &b);
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
305 if (error != TCL_OK)
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
306 return error;
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
307 l = g_list_append(l, attr_id);
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
308 l = g_list_append(l, GINT_TO_POINTER(b));
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
309 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
310 case PURPLE_TYPE_STRING:
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
311 l = g_list_append(l, attr_id);
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
312 l = g_list_append(l, Tcl_GetString(objv[i + 1]));
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
313 break;
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
314 default:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
315 Tcl_SetObjResult(interp, Tcl_NewStringObj("unknown PurpleValue type", -1));
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
316 return TCL_ERROR;
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
317 }
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
318 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
319 purple_account_set_status_list(account, Tcl_GetString(objv[3]), TRUE, l);
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
320 g_list_free(l);
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
321 }
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
322 break;
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
323 case CMD_ACCOUNT_STATUS_TYPE:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
324 if (objc != 4 && objc != 5) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
325 Tcl_WrongNumArgs(interp, 2, objv, "account ?statustype? ?-primitive primitive?");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
326 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
327 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
328 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
329 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
330 if (objc == 4) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
331 status_type = purple_account_get_status_type(account,
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
332 Tcl_GetString(objv[3]));
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
333 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
334 PurpleStatusPrimitive primitive;
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
335 if (strcmp(Tcl_GetString(objv[3]), "-primitive")) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
336 result = Tcl_NewStringObj("bad option \"", -1);
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
337 Tcl_AppendObjToObj(result, objv[3]);
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
338 Tcl_AppendToObj(result, "\": should be -primitive", -1);
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
339 Tcl_SetObjResult(interp,result);
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
340 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
341 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
342 primitive = purple_primitive_get_type_from_id(Tcl_GetString(objv[4]));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
343 status_type = purple_account_get_status_type_with_primitive(account,
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
344 primitive);
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
345 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
346 if (status_type == NULL) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
347 Tcl_SetObjResult(interp, Tcl_NewStringObj("status type not found", -1));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
348 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
349 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
350 Tcl_SetObjResult(interp,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
351 purple_tcl_ref_new(PurpleTclRefStatusType,
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
352 status_type));
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
353 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
354 case CMD_ACCOUNT_STATUS_TYPES:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
355 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
356 Tcl_WrongNumArgs(interp, 2, objv, "account");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
357 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
358 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
359 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
360 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
361 list = Tcl_NewListObj(0, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
362 for (cur = purple_account_get_status_types(account); cur != NULL;
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
363 cur = g_list_next(cur)) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
364 Tcl_ListObjAppendElement(interp, list,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
365 purple_tcl_ref_new(PurpleTclRefStatusType,
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
366 cur->data));
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
367 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
368 Tcl_SetObjResult(interp, list);
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
369 break;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
370 case CMD_ACCOUNT_USERNAME:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
371 if (objc != 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
372 Tcl_WrongNumArgs(interp, 2, objv, "account");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
373 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
374 }
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
375 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
376 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
377 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
378 Tcl_NewStringObj((char *)purple_account_get_username(account), -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
379 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
380 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
381
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
382 return TCL_OK;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
383 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
384
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
385 static PurpleBlistNode *tcl_list_to_buddy(Tcl_Interp *interp, int count, Tcl_Obj **elems)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
386 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
387 PurpleBlistNode *node = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
388 PurpleAccount *account;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
389 char *name;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
390 char *type;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
391
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
392 if (count < 3) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
393 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
394 Tcl_NewStringObj("list too short", -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
395 return NULL;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
396 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
397
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
398 type = Tcl_GetString(elems[0]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
399 name = Tcl_GetString(elems[1]);
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
400 if ((account = tcl_validate_account(elems[2], interp)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
401 return NULL;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
402
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
403 if (!strcmp(type, "buddy")) {
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24560
diff changeset
404 node = PURPLE_BLIST_NODE(purple_find_buddy(account, name));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
405 } else if (!strcmp(type, "group")) {
24974
a81952e9babb Update some casts (that the script didn't fix correctly) to GObject macros.
Richard Laager <rlaager@pidgin.im>
parents: 24560
diff changeset
406 node = PURPLE_BLIST_NODE(purple_blist_find_chat(account, name));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
407 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
408
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
409 return node;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
410 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
411
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
412 int tcl_cmd_buddy(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
413 {
6746
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
414 Tcl_Obj *list, *tclgroup, *tclgrouplist, *tclcontact, *tclcontactlist, *tclbud, **elems, *result;
10339
246feba79f04 [gaim-migrate @ 11548]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
415 const char *cmds[] = { "alias", "handle", "info", "list", NULL };
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
416 enum { CMD_BUDDY_ALIAS, CMD_BUDDY_HANDLE, CMD_BUDDY_INFO, CMD_BUDDY_LIST } cmd;
24556
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
417 PurpleBlistNodeType type;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
418 PurpleBlistNode *node, *gnode, *bnode;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
419 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
420 PurpleBuddy *bud;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
421 PurpleChat *cnode;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
422 int error, all = 0, count;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
423
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
424 if (objc < 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
425 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
426 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
427 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
428 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
429 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
430
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
431 switch (cmd) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
432 case CMD_BUDDY_ALIAS:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
433 if (objc != 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
434 Tcl_WrongNumArgs(interp, 2, objv, "buddy");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
435 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
436 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
437 if ((error = Tcl_ListObjGetElements(interp, objv[2], &count, &elems)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
438 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
439 if ((node = tcl_list_to_buddy(interp, count, elems)) == NULL)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
440 return TCL_ERROR;
24560
c9361dfedac8 Fix my Tcl fix.
Richard Laager <rlaager@pidgin.im>
parents: 24556
diff changeset
441 type = purple_blist_node_get_type(node);
24556
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
442 if (type == PURPLE_BLIST_CHAT_NODE)
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
443 Tcl_SetObjResult(interp,
24556
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
444 Tcl_NewStringObj(purple_chat_get_name((PurpleChat *)node), -1));
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
445 else if (type == PURPLE_BLIST_BUDDY_NODE)
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
446 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
447 Tcl_NewStringObj((char *)purple_buddy_get_alias((PurpleBuddy *)node), -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
448 return TCL_OK;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
449 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
450 case CMD_BUDDY_HANDLE:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
451 if (objc != 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
452 Tcl_WrongNumArgs(interp, 2, objv, "");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
453 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
454 }
20393
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
455 Tcl_SetObjResult(interp,
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
456 purple_tcl_ref_new(PurpleTclRefHandle,
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
457 purple_blist_get_handle()));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
458 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
459 case CMD_BUDDY_INFO:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
460 if (objc != 3 && objc != 4) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
461 Tcl_WrongNumArgs(interp, 2, objv, "( buddy | account username )");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
462 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
463 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
464 if (objc == 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
465 if ((error = Tcl_ListObjGetElements(interp, objv[2], &count, &elems)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
466 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
467 if (count < 3) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
468 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
469 Tcl_NewStringObj("buddy too short", -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
470 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
471 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
472 if (strcmp("buddy", Tcl_GetString(elems[0]))) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
473 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
474 Tcl_NewStringObj("invalid buddy", -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
475 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
476 }
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
477 if ((account = tcl_validate_account(elems[2], interp)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
478 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
479 serv_get_info(purple_account_get_connection(account), Tcl_GetString(elems[1]));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
480 } else {
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
481 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
482 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
483 serv_get_info(purple_account_get_connection(account), Tcl_GetString(objv[3]));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
484 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
485 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
486 case CMD_BUDDY_LIST:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
487 if (objc == 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
488 if (!strcmp("-all", Tcl_GetString(objv[2]))) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
489 all = 1;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
490 } else {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
491 result = Tcl_NewStringObj("",-1);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
492 Tcl_AppendStringsToObj(result, "unknown option: ", Tcl_GetString(objv[2]), NULL);
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
493 Tcl_SetObjResult(interp,result);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
494 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
495 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
496 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
497 list = Tcl_NewListObj(0, NULL);
24556
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
498 for (gnode = purple_blist_get_root(); gnode != NULL; gnode = purple_blist_node_get_sibling_next(gnode)) {
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
499 tclgroup = Tcl_NewListObj(0, NULL);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
500 Tcl_ListObjAppendElement(interp, tclgroup, Tcl_NewStringObj("group", -1));
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
501 Tcl_ListObjAppendElement(interp, tclgroup,
24556
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
502 Tcl_NewStringObj(purple_group_get_name((PurpleGroup *)gnode), -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
503 tclgrouplist = Tcl_NewListObj(0, NULL);
24556
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
504 for (node = purple_blist_node_get_first_child(gnode); node != NULL; node = purple_blist_node_get_sibling_next(node)) {
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
505 PurpleAccount *account;
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
506
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
507 type = purple_blist_node_get_type(node);
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
508 switch (type) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
509 case PURPLE_BLIST_CONTACT_NODE:
6746
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
510 tclcontact = Tcl_NewListObj(0, NULL);
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
511 Tcl_IncrRefCount(tclcontact);
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
512 Tcl_ListObjAppendElement(interp, tclcontact, Tcl_NewStringObj("contact", -1));
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
513 tclcontactlist = Tcl_NewListObj(0, NULL);
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
514 Tcl_IncrRefCount(tclcontactlist);
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
515 count = 0;
24556
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
516 for (bnode = purple_blist_node_get_first_child(node); bnode != NULL; bnode = purple_blist_node_get_sibling_next(bnode)) {
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
517 if (purple_blist_node_get_type(bnode) != PURPLE_BLIST_BUDDY_NODE)
6746
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
518 continue;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
519 bud = (PurpleBuddy *)bnode;
24556
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
520 account = purple_buddy_get_account(bud);
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
521 if (!all && !purple_account_is_connected(account))
6746
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
522 continue;
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
523 count++;
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
524 tclbud = Tcl_NewListObj(0, NULL);
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
525 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj("buddy", -1));
24556
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
526 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj(purple_buddy_get_name(bud), -1));
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
527 Tcl_ListObjAppendElement(interp, tclbud, purple_tcl_ref_new(PurpleTclRefAccount, account));
6746
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
528 Tcl_ListObjAppendElement(interp, tclcontactlist, tclbud);
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
529 }
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
530 if (count) {
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
531 Tcl_ListObjAppendElement(interp, tclcontact, tclcontactlist);
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
532 Tcl_ListObjAppendElement(interp, tclgrouplist, tclcontact);
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
533 }
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
534 Tcl_DecrRefCount(tclcontact);
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
535 Tcl_DecrRefCount(tclcontactlist);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
536 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
537 case PURPLE_BLIST_CHAT_NODE:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
538 cnode = (PurpleChat *)node;
24556
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
539 account = purple_chat_get_account(cnode);
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
540 if (!all && !purple_account_is_connected(account))
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
541 continue;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
542 tclbud = Tcl_NewListObj(0, NULL);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
543 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj("chat", -1));
24556
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
544 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj(purple_chat_get_name(cnode), -1));
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
545 Tcl_ListObjAppendElement(interp, tclbud, purple_tcl_ref_new(PurpleTclRefAccount, account));
6746
6f05900c1a8d [gaim-migrate @ 7278]
Ethan Blanton <elb@pidgin.im>
parents: 6737
diff changeset
546 Tcl_ListObjAppendElement(interp, tclgrouplist, tclbud);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
547 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
548 default:
24556
8c9cf439084a Fix Tcl to compile with the hidden structs.
Richard Laager <rlaager@pidgin.im>
parents: 22353
diff changeset
549 purple_debug(PURPLE_DEBUG_WARNING, "tcl", "Unexpected buddy type %d", type);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
550 continue;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
551 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
552 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
553 Tcl_ListObjAppendElement(interp, tclgroup, tclgrouplist);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
554 Tcl_ListObjAppendElement(interp, list, tclgroup);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
555 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
556 Tcl_SetObjResult(interp, list);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
557 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
558 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
559
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
560 return TCL_OK;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
561 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
562
13847
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
563 int tcl_cmd_cmd(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
564 {
19726
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
565 const char *cmds[] = { "do", "help", "list", "register", "unregister", NULL };
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
566 enum { CMD_CMD_DO, CMD_CMD_HELP, CMD_CMD_LIST, CMD_CMD_REGISTER, CMD_CMD_UNREGISTER } cmd;
13847
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
567 struct tcl_cmd_handler *handler;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
568 Tcl_Obj *list, *elem;
19726
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
569 PurpleConversation *convo;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
570 PurpleCmdId id;
19726
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
571 PurpleCmdStatus status;
13847
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
572 int error;
19726
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
573 GList *l, *cur;
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
574 gchar *escaped, *errstr = NULL;
13847
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
575
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
576 if (objc < 2) {
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
577 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
578 return TCL_ERROR;
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
579 }
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
580
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
581 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
582 return error;
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
583
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
584 switch (cmd) {
19726
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
585 case CMD_CMD_DO:
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
586 if (objc != 4) {
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
587 Tcl_WrongNumArgs(interp, 2, objv, "conversation command");
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
588 return TCL_ERROR;
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
589 }
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
590 if ((convo = tcl_validate_conversation(objv[2], interp)) == NULL)
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
591 return TCL_ERROR;
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
592 escaped = g_markup_escape_text(Tcl_GetString(objv[3]), -1);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
593 status = purple_cmd_do_command(convo, Tcl_GetString(objv[3]),
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
594 escaped, &errstr);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
595 g_free(escaped);
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
596 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
597 Tcl_NewStringObj(errstr ? (char *)errstr : "", -1));
19726
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
598 g_free(errstr);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
599 if (status != PURPLE_CMD_STATUS_OK) {
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
600 return TCL_ERROR;
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
601 }
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
602 break;
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
603 case CMD_CMD_HELP:
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
604 if (objc != 4) {
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
605 Tcl_WrongNumArgs(interp, 2, objv, "conversation name");
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
606 return TCL_ERROR;
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
607 }
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
608 if ((convo = tcl_validate_conversation(objv[2], interp)) == NULL)
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
609 return TCL_ERROR;
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
610 l = cur = purple_cmd_help(convo, Tcl_GetString(objv[3]));
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
611 list = Tcl_NewListObj(0, NULL);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
612 while (cur != NULL) {
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
613 elem = Tcl_NewStringObj((char *)cur->data, -1);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
614 Tcl_ListObjAppendElement(interp, list, elem);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
615 cur = g_list_next(cur);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
616 }
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
617 g_list_free(l);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
618 Tcl_SetObjResult(interp, list);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
619 break;
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
620 case CMD_CMD_LIST:
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
621 if (objc != 3) {
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
622 Tcl_WrongNumArgs(interp, 2, objv, "conversation");
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
623 return TCL_ERROR;
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
624 }
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
625 if ((convo = tcl_validate_conversation(objv[2], interp)) == NULL)
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
626 return TCL_ERROR;
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
627 l = cur = purple_cmd_list(convo);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
628 list = Tcl_NewListObj(0, NULL);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
629 while (cur != NULL) {
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
630 elem = Tcl_NewStringObj((char *)cur->data, -1);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
631 Tcl_ListObjAppendElement(interp, list, elem);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
632 cur = g_list_next(cur);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
633 }
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
634 g_list_free(l);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
635 Tcl_SetObjResult(interp, list);
22a31d50bab5 Patch from Dossy Shiobara which improves Tcl support for purple
Ethan Blanton <elb@pidgin.im>
parents: 18190
diff changeset
636 break;
13847
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
637 case CMD_CMD_REGISTER:
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
638 if (objc != 9) {
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
639 Tcl_WrongNumArgs(interp, 2, objv, "cmd arglist priority flags prpl_id proc helpstr");
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
640 return TCL_ERROR;
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
641 }
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
642 handler = g_new0(struct tcl_cmd_handler, 1);
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
643 handler->cmd = objv[2];
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
644 handler->args = Tcl_GetString(objv[3]);
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
645 handler->nargs = strlen(handler->args);
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
646 if ((error = Tcl_GetIntFromObj(interp, objv[4],
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
647 &handler->priority)) != TCL_OK) {
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
648 g_free(handler);
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
649 return error;
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
650 }
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
651 if ((error = Tcl_GetIntFromObj(interp, objv[5],
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
652 &handler->flags)) != TCL_OK) {
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
653 g_free(handler);
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
654 return error;
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
655 }
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
656 handler->prpl_id = Tcl_GetString(objv[6]);
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
657 handler->proc = objv[7];
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
658 handler->helpstr = Tcl_GetString(objv[8]);
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
659 handler->interp = interp;
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
660 if ((id = tcl_cmd_register(handler)) == 0) {
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
661 tcl_cmd_handler_free(handler);
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
662 Tcl_SetObjResult(interp, Tcl_NewIntObj(0));
13847
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
663 } else {
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
664 handler->id = id;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
665 Tcl_SetObjResult(interp, Tcl_NewIntObj(id));
13847
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
666 }
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
667 break;
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
668 case CMD_CMD_UNREGISTER:
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
669 if (objc != 3) {
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
670 Tcl_WrongNumArgs(interp, 2, objv, "id");
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
671 return TCL_ERROR;
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
672 }
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
673 if ((error = Tcl_GetIntFromObj(interp, objv[2],
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
674 (int *)&id)) != TCL_OK)
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
675 return error;
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
676 tcl_cmd_unregister(id, interp);
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
677 break;
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
678 }
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
679
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
680 return TCL_OK;
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
681 }
89bc33bfe294 [gaim-migrate @ 16301]
Etan Reisner <deryni@pidgin.im>
parents: 13846
diff changeset
682
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
683 int tcl_cmd_connection(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
684 {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
685 Tcl_Obj *list, *elem;
26824
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
686 const char *cmds[] = { "account", "displayname", "handle", "list", "state", NULL };
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
687 enum { CMD_CONN_ACCOUNT, CMD_CONN_DISPLAYNAME, CMD_CONN_HANDLE,
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
688 CMD_CONN_LIST, CMD_CONN_STATE } cmd;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
689 int error;
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
690 GList *cur;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
691 PurpleConnection *gc;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
692
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
693 if (objc < 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
694 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
695 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
696 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
697
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
698 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
699 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
700
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
701 switch (cmd) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
702 case CMD_CONN_ACCOUNT:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
703 if (objc != 3) {
6864
359bc55e767f [gaim-migrate @ 7410]
Björn Voigt <bjoern@cs.tu-berlin.de>
parents: 6746
diff changeset
704 Tcl_WrongNumArgs(interp, 2, objv, "gc");
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
705 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
706 }
13817
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
707 if ((gc = tcl_validate_gc(objv[2], interp)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
708 return TCL_ERROR;
13817
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
709 Tcl_SetObjResult(interp,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
710 purple_tcl_ref_new(PurpleTclRefAccount,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
711 purple_connection_get_account(gc)));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
712 break;
7713
a400861e425d [gaim-migrate @ 8358]
Ethan Blanton <elb@pidgin.im>
parents: 7156
diff changeset
713 case CMD_CONN_DISPLAYNAME:
a400861e425d [gaim-migrate @ 8358]
Ethan Blanton <elb@pidgin.im>
parents: 7156
diff changeset
714 if (objc != 3) {
a400861e425d [gaim-migrate @ 8358]
Ethan Blanton <elb@pidgin.im>
parents: 7156
diff changeset
715 Tcl_WrongNumArgs(interp, 2, objv, "gc");
a400861e425d [gaim-migrate @ 8358]
Ethan Blanton <elb@pidgin.im>
parents: 7156
diff changeset
716 return TCL_ERROR;
a400861e425d [gaim-migrate @ 8358]
Ethan Blanton <elb@pidgin.im>
parents: 7156
diff changeset
717 }
13817
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
718 if ((gc = tcl_validate_gc(objv[2], interp)) == NULL)
7713
a400861e425d [gaim-migrate @ 8358]
Ethan Blanton <elb@pidgin.im>
parents: 7156
diff changeset
719 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
720 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
721 Tcl_NewStringObj(purple_connection_get_display_name(gc), -1));
7713
a400861e425d [gaim-migrate @ 8358]
Ethan Blanton <elb@pidgin.im>
parents: 7156
diff changeset
722 break;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
723 case CMD_CONN_HANDLE:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
724 if (objc != 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
725 Tcl_WrongNumArgs(interp, 2, objv, "");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
726 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
727 }
20393
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
728 Tcl_SetObjResult(interp, purple_tcl_ref_new(PurpleTclRefHandle,
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
729 purple_connections_get_handle()));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
730 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
731 case CMD_CONN_LIST:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
732 if (objc != 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
733 Tcl_WrongNumArgs(interp, 2, objv, "");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
734 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
735 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
736 list = Tcl_NewListObj(0, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
737 for (cur = purple_connections_get_all(); cur != NULL; cur = g_list_next(cur)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
738 elem = purple_tcl_ref_new(PurpleTclRefConnection, cur->data);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
739 Tcl_ListObjAppendElement(interp, list, elem);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
740 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
741 Tcl_SetObjResult(interp, list);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
742 break;
26824
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
743 case CMD_CONN_STATE:
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
744 if (objc != 3) {
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
745 Tcl_WrongNumArgs(interp, 2, objv, "gc");
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
746 return TCL_ERROR;
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
747 }
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
748 if ((gc = tcl_validate_gc(objv[2], interp)) == NULL)
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
749 return TCL_ERROR;
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
750 switch (purple_connection_get_state(gc)) {
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
751 case PURPLE_DISCONNECTED:
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
752 Tcl_SetObjResult(interp, Tcl_NewStringObj("disconnected", -1));
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
753 break;
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
754 case PURPLE_CONNECTED:
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
755 Tcl_SetObjResult(interp, Tcl_NewStringObj("connected", -1));
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
756 break;
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
757 case PURPLE_CONNECTING:
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
758 Tcl_SetObjResult(interp, Tcl_NewStringObj("connecting", -1));
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
759 break;
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
760 }
c7ba07f9ca42 Add the Tcl command purple::connection state (purple_connection_get_state).
Ethan Blanton <elb@pidgin.im>
parents: 25913
diff changeset
761 break;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
762 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
763
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
764 return TCL_OK;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
765 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
766
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
767 int tcl_cmd_conversation(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
768 {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
769 Tcl_Obj *list, *elem;
14425
629622ab2c70 [gaim-migrate @ 17069]
Etan Reisner <deryni@pidgin.im>
parents: 14357
diff changeset
770 const char *cmds[] = { "find", "handle", "list", "new", "write", "name", "title", "send", NULL };
629622ab2c70 [gaim-migrate @ 17069]
Etan Reisner <deryni@pidgin.im>
parents: 14357
diff changeset
771 enum { CMD_CONV_FIND, CMD_CONV_HANDLE, CMD_CONV_LIST, CMD_CONV_NEW, CMD_CONV_WRITE , CMD_CONV_NAME, CMD_CONV_TITLE, CMD_CONV_SEND } cmd;
10339
246feba79f04 [gaim-migrate @ 11548]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
772 const char *styles[] = { "send", "recv", "system", NULL };
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
773 enum { CMD_CONV_WRITE_SEND, CMD_CONV_WRITE_RECV, CMD_CONV_WRITE_SYSTEM } style;
10339
246feba79f04 [gaim-migrate @ 11548]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
774 const char *newopts[] = { "-chat", "-im" };
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
775 enum { CMD_CONV_NEW_CHAT, CMD_CONV_NEW_IM } newopt;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
776 PurpleConversation *convo;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
777 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
778 PurpleConversationType type;
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
779 GList *cur;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
780 char *opt, *from, *what;
7156
127436d3f11a [gaim-migrate @ 7723]
Nathan Walp <nwalp@pidgin.im>
parents: 7118
diff changeset
781 int error, argsused, flags = 0;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
782
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
783 if (objc < 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
784 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
785 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
786 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
787
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
788 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
789 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
790
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
791 switch (cmd) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
792 case CMD_CONV_FIND:
10829
c0b0e9771b31 [gaim-migrate @ 12495]
Ethan Blanton <elb@pidgin.im>
parents: 10820
diff changeset
793 if (objc != 4) {
c0b0e9771b31 [gaim-migrate @ 12495]
Ethan Blanton <elb@pidgin.im>
parents: 10820
diff changeset
794 Tcl_WrongNumArgs(interp, 2, objv, "account name");
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
795 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
796 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
797 account = NULL;
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
798 if ((account = tcl_validate_account(objv[2], interp)) == NULL)
10829
c0b0e9771b31 [gaim-migrate @ 12495]
Ethan Blanton <elb@pidgin.im>
parents: 10820
diff changeset
799 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
800 convo = purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY,
10829
c0b0e9771b31 [gaim-migrate @ 12495]
Ethan Blanton <elb@pidgin.im>
parents: 10820
diff changeset
801 Tcl_GetString(objv[3]),
c0b0e9771b31 [gaim-migrate @ 12495]
Ethan Blanton <elb@pidgin.im>
parents: 10820
diff changeset
802 account);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
803 Tcl_SetObjResult(interp, purple_tcl_ref_new(PurpleTclRefConversation, convo));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
804 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
805 case CMD_CONV_HANDLE:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
806 if (objc != 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
807 Tcl_WrongNumArgs(interp, 2, objv, "");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
808 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
809 }
20393
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
810 Tcl_SetObjResult(interp,
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
811 purple_tcl_ref_new(PurpleTclRefHandle,
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
812 purple_conversations_get_handle()));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
813 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
814 case CMD_CONV_LIST:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
815 list = Tcl_NewListObj(0, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
816 for (cur = purple_get_conversations(); cur != NULL; cur = g_list_next(cur)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
817 elem = purple_tcl_ref_new(PurpleTclRefConversation, cur->data);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
818 Tcl_ListObjAppendElement(interp, list, elem);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
819 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
820 Tcl_SetObjResult(interp, list);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
821 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
822 case CMD_CONV_NEW:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
823 if (objc < 4) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
824 Tcl_WrongNumArgs(interp, 2, objv, "?options? account name");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
825 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
826 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
827 argsused = 2;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
828 type = PURPLE_CONV_TYPE_IM;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
829 while (argsused < objc) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
830 opt = Tcl_GetString(objv[argsused]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
831 if (*opt == '-') {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
832 if ((error = Tcl_GetIndexFromObj(interp, objv[argsused], newopts,
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
833 "option", 0, (int *)&newopt)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
834 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
835 argsused++;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
836 switch (newopt) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
837 case CMD_CONV_NEW_CHAT:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
838 type = PURPLE_CONV_TYPE_CHAT;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
839 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
840 case CMD_CONV_NEW_IM:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
841 type = PURPLE_CONV_TYPE_IM;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
842 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
843 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
844 } else {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
845 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
846 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
847 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
848 if (objc - argsused != 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
849 Tcl_WrongNumArgs(interp, 2, objv, "?options? account name");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
850 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
851 }
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
852 if ((account = tcl_validate_account(objv[argsused++], interp)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
853 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
854 convo = purple_conversation_new(type, account, Tcl_GetString(objv[argsused]));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
855 Tcl_SetObjResult(interp, purple_tcl_ref_new(PurpleTclRefConversation, convo));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
856 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
857 case CMD_CONV_WRITE:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
858 if (objc != 6) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
859 Tcl_WrongNumArgs(interp, 2, objv, "conversation style from what");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
860 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
861 }
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
862 if ((convo = tcl_validate_conversation(objv[2], interp)) == NULL)
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
863 return TCL_ERROR;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
864 if ((error = Tcl_GetIndexFromObj(interp, objv[3], styles, "style", 0, (int *)&style)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
865 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
866 from = Tcl_GetString(objv[4]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
867 what = Tcl_GetString(objv[5]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
868
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
869 switch (style) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
870 case CMD_CONV_WRITE_SEND:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
871 flags = PURPLE_MESSAGE_SEND;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
872 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
873 case CMD_CONV_WRITE_RECV:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
874 flags = PURPLE_MESSAGE_RECV;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
875 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
876 case CMD_CONV_WRITE_SYSTEM:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
877 flags = PURPLE_MESSAGE_SYSTEM;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
878 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
879 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
880 if (purple_conversation_get_type(convo) == PURPLE_CONV_TYPE_CHAT)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
881 purple_conv_chat_write(PURPLE_CONV_CHAT(convo), from, what, flags, time(NULL));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
882 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
883 purple_conv_im_write(PURPLE_CONV_IM(convo), from, what, flags, time(NULL));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
884 break;
14357
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
885 case CMD_CONV_NAME:
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
886 if (objc != 3) {
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
887 Tcl_WrongNumArgs(interp, 2, objv, "conversation");
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
888 return TCL_ERROR;
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
889 }
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
890
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
891 if ((convo = tcl_validate_conversation(objv[2], interp)) == NULL)
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
892 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
893 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
894 Tcl_NewStringObj((char *)purple_conversation_get_name(convo), -1));
14357
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
895 break;
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
896 case CMD_CONV_TITLE:
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
897 if (objc != 3) {
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
898 Tcl_WrongNumArgs(interp, 2, objv, "conversation");
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
899 return TCL_ERROR;
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
900 }
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
901
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
902 if ((convo = tcl_validate_conversation(objv[2], interp)) == NULL)
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
903 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
904 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
905 Tcl_NewStringObj((char *)purple_conversation_get_title(convo), -1));
14357
ece1a71881a1 [gaim-migrate @ 16985]
Etan Reisner <deryni@pidgin.im>
parents: 14254
diff changeset
906 break;
14425
629622ab2c70 [gaim-migrate @ 17069]
Etan Reisner <deryni@pidgin.im>
parents: 14357
diff changeset
907 case CMD_CONV_SEND:
629622ab2c70 [gaim-migrate @ 17069]
Etan Reisner <deryni@pidgin.im>
parents: 14357
diff changeset
908 if (objc != 4) {
629622ab2c70 [gaim-migrate @ 17069]
Etan Reisner <deryni@pidgin.im>
parents: 14357
diff changeset
909 Tcl_WrongNumArgs(interp, 2, objv, "conversation message");
629622ab2c70 [gaim-migrate @ 17069]
Etan Reisner <deryni@pidgin.im>
parents: 14357
diff changeset
910 return TCL_ERROR;
629622ab2c70 [gaim-migrate @ 17069]
Etan Reisner <deryni@pidgin.im>
parents: 14357
diff changeset
911 }
629622ab2c70 [gaim-migrate @ 17069]
Etan Reisner <deryni@pidgin.im>
parents: 14357
diff changeset
912 if ((convo = tcl_validate_conversation(objv[2], interp)) == NULL)
629622ab2c70 [gaim-migrate @ 17069]
Etan Reisner <deryni@pidgin.im>
parents: 14357
diff changeset
913 return TCL_ERROR;
629622ab2c70 [gaim-migrate @ 17069]
Etan Reisner <deryni@pidgin.im>
parents: 14357
diff changeset
914 what = Tcl_GetString(objv[3]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
915 if (purple_conversation_get_type(convo) == PURPLE_CONV_TYPE_CHAT)
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
916 purple_conv_chat_send(PURPLE_CONV_CHAT(convo), what);
14425
629622ab2c70 [gaim-migrate @ 17069]
Etan Reisner <deryni@pidgin.im>
parents: 14357
diff changeset
917 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
918 purple_conv_im_send(PURPLE_CONV_IM(convo), what);
14425
629622ab2c70 [gaim-migrate @ 17069]
Etan Reisner <deryni@pidgin.im>
parents: 14357
diff changeset
919 break;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
920 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
921
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
922 return TCL_OK;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
923 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
924
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
925 int tcl_cmd_core(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
926 {
10339
246feba79f04 [gaim-migrate @ 11548]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
927 const char *cmds[] = { "handle", "quit", NULL };
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
928 enum { CMD_CORE_HANDLE, CMD_CORE_QUIT } cmd;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
929 int error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
930
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
931 if (objc < 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
932 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
933 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
934 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
935
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
936 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
937 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
938
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
939 switch (cmd) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
940 case CMD_CORE_HANDLE:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
941 if (objc != 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
942 Tcl_WrongNumArgs(interp, 2, objv, "");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
943 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
944 }
20393
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
945 Tcl_SetObjResult(interp,
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
946 purple_tcl_ref_new(PurpleTclRefHandle,
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
947 purple_get_core()));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
948 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
949 case CMD_CORE_QUIT:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
950 if (objc != 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
951 Tcl_WrongNumArgs(interp, 2, objv, "");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
952 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
953 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
954 purple_core_quit();
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
955 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
956 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
957
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
958 return TCL_OK;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
959 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
960
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
961 int tcl_cmd_debug(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
962 {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
963 char *category, *message;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
964 int lev;
10339
246feba79f04 [gaim-migrate @ 11548]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
965 const char *levels[] = { "-misc", "-info", "-warning", "-error", NULL };
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
966 PurpleDebugLevel levelind[] = { PURPLE_DEBUG_MISC, PURPLE_DEBUG_INFO, PURPLE_DEBUG_WARNING, PURPLE_DEBUG_ERROR };
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
967 int error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
968
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
969 if (objc != 4) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
970 Tcl_WrongNumArgs(interp, 1, objv, "level category message");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
971 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
972 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
973
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
974 error = Tcl_GetIndexFromObj(interp, objv[1], levels, "debug level", 0, &lev);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
975 if (error != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
976 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
977
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
978 category = Tcl_GetString(objv[2]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
979 message = Tcl_GetString(objv[3]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
980
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
981 purple_debug(levelind[lev], category, "%s\n", message);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
982
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
983 return TCL_OK;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
984 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
985
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
986 int tcl_cmd_notify(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
987 {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
988 int error, type;
10339
246feba79f04 [gaim-migrate @ 11548]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
989 const char *opts[] = { "-error", "-warning", "-info", NULL };
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
990 PurpleNotifyMsgType optind[] = { PURPLE_NOTIFY_MSG_ERROR, PURPLE_NOTIFY_MSG_WARNING, PURPLE_NOTIFY_MSG_INFO };
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
991 char *title, *msg1, *msg2;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
992
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
993 if (objc < 4 || objc > 5) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
994 Tcl_WrongNumArgs(interp, 1, objv, "?type? title primary secondary");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
995 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
996 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
997
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
998 if (objc == 4) {
13424
b9d5d1d97526 [gaim-migrate @ 15798]
Ethan Blanton <elb@pidgin.im>
parents: 11338
diff changeset
999 type = 1; /* Default to warning */
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1000 title = Tcl_GetString(objv[1]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1001 msg1 = Tcl_GetString(objv[2]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1002 msg2 = Tcl_GetString(objv[3]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1003 } else {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1004 error = Tcl_GetIndexFromObj(interp, objv[1], opts, "message type", 0, &type);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1005 if (error != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1006 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1007 title = Tcl_GetString(objv[2]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1008 msg1 = Tcl_GetString(objv[3]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1009 msg2 = Tcl_GetString(objv[4]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1010 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1011
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1012 purple_notify_message(_tcl_plugin, optind[type], title, msg1, msg2, NULL, NULL);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1013
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1014 return TCL_OK;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1015 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1016
15750
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1017 int tcl_cmd_plugins(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1018 {
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1019 const char *cmds[] = { "handle", NULL };
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1020 enum { CMD_PLUGINS_HANDLE } cmd;
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1021 int error;
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1022
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1023 if (objc < 2) {
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1024 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1025 return TCL_ERROR;
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1026 }
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1027
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1028 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1029 return error;
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1030
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1031 switch (cmd) {
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1032 case CMD_PLUGINS_HANDLE:
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1033 if (objc != 2) {
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1034 Tcl_WrongNumArgs(interp, 2, objv, "");
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1035 return TCL_ERROR;
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1036 }
20393
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
1037 Tcl_SetObjResult(interp,
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
1038 purple_tcl_ref_new(PurpleTclRefHandle,
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
1039 purple_plugins_get_handle()));
15750
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1040 break;
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1041 }
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1042
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1043 return TCL_OK;
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1044 }
c238e0966eb1 gaim::plugin Tcl command, thanks to Dossy Shiobara
Ethan Blanton <elb@pidgin.im>
parents: 15435
diff changeset
1045
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1046 int tcl_cmd_prefs(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1047 {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1048 Tcl_Obj *list, *elem, **elems;
10339
246feba79f04 [gaim-migrate @ 11548]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
1049 const char *cmds[] = { "get", "set", "type", NULL };
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1050 enum { CMD_PREFS_GET, CMD_PREFS_SET, CMD_PREFS_TYPE } cmd;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1051 /* char *types[] = { "none", "boolean", "int", "string", "stringlist", NULL }; */
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1052 /* enum { TCL_PREFS_NONE, TCL_PREFS_BOOL, TCL_PREFS_INT, TCL_PREFS_STRING, TCL_PREFS_STRINGLIST } type; */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1053 PurplePrefType preftype;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1054 GList *cur;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1055 int error, intval, nelem, i;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1056
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1057 if (objc < 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1058 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1059 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1060 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1061
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1062 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1063 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1064
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1065 switch (cmd) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1066 case CMD_PREFS_GET:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1067 if (objc != 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1068 Tcl_WrongNumArgs(interp, 1, objv, "path");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1069 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1070 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1071 preftype = purple_prefs_get_type(Tcl_GetString(objv[2]));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1072 switch (preftype) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1073 case PURPLE_PREF_NONE:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1074 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1075 Tcl_NewStringObj("pref type none", -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1076 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1077 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1078 case PURPLE_PREF_BOOLEAN:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1079 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1080 Tcl_NewBooleanObj(
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1081 purple_prefs_get_bool(Tcl_GetString(objv[2]))));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1082 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1083 case PURPLE_PREF_INT:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1084 Tcl_SetObjResult(interp, Tcl_NewIntObj(purple_prefs_get_int(Tcl_GetString(objv[2]))));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1085 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1086 case PURPLE_PREF_STRING:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1087 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1088 Tcl_NewStringObj((char *)purple_prefs_get_string(Tcl_GetString(objv[2])), -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1089 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1090 case PURPLE_PREF_STRING_LIST:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1091 cur = purple_prefs_get_string_list(Tcl_GetString(objv[2]));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1092 list = Tcl_NewListObj(0, NULL);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1093 while (cur != NULL) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1094 elem = Tcl_NewStringObj((char *)cur->data, -1);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1095 Tcl_ListObjAppendElement(interp, list, elem);
22240
3f3d4ff9f323 disapproval of revision 'b2c07c730315e96101dd0371133d170396333f4c'
Etan Reisner <deryni@pidgin.im>
parents: 22239
diff changeset
1096 cur = g_list_next(cur);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1097 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1098 Tcl_SetObjResult(interp, list);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1099 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1100 default:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1101 purple_debug(PURPLE_DEBUG_ERROR, "tcl", "tcl does not know about pref type %d\n", preftype);
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1102 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1103 Tcl_NewStringObj("unknown pref type", -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1104 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1105 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1106 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1107 case CMD_PREFS_SET:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1108 if (objc != 4) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1109 Tcl_WrongNumArgs(interp, 1, objv, "path value");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1110 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1111 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1112 preftype = purple_prefs_get_type(Tcl_GetString(objv[2]));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1113 switch (preftype) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1114 case PURPLE_PREF_NONE:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1115 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1116 Tcl_NewStringObj("bad path or pref type none", -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1117 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1118 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1119 case PURPLE_PREF_BOOLEAN:
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1120 if ((error = Tcl_GetBooleanFromObj(interp, objv[3], &intval)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1121 return error;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1122 purple_prefs_set_bool(Tcl_GetString(objv[2]), intval);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1123 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1124 case PURPLE_PREF_INT:
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1125 if ((error = Tcl_GetIntFromObj(interp, objv[3], &intval)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1126 return error;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1127 purple_prefs_set_int(Tcl_GetString(objv[2]), intval);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1128 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1129 case PURPLE_PREF_STRING:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1130 purple_prefs_set_string(Tcl_GetString(objv[2]), Tcl_GetString(objv[3]));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1131 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1132 case PURPLE_PREF_STRING_LIST:
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1133 if ((error = Tcl_ListObjGetElements(interp, objv[3], &nelem, &elems)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1134 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1135 cur = NULL;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1136 for (i = 0; i < nelem; i++) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1137 cur = g_list_append(cur, (gpointer)Tcl_GetString(elems[i]));
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1138 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1139 purple_prefs_set_string_list(Tcl_GetString(objv[2]), cur);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1140 g_list_free(cur);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1141 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1142 default:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1143 purple_debug(PURPLE_DEBUG_ERROR, "tcl", "tcl does not know about pref type %d\n", preftype);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1144 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1145 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1146 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1147 case CMD_PREFS_TYPE:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1148 if (objc != 3) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1149 Tcl_WrongNumArgs(interp, 1, objv, "path");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1150 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1151 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1152 preftype = purple_prefs_get_type(Tcl_GetString(objv[2]));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1153 switch (preftype) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1154 case PURPLE_PREF_NONE:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1155 Tcl_SetObjResult(interp, Tcl_NewStringObj("none", -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1156 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1157 case PURPLE_PREF_BOOLEAN:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1158 Tcl_SetObjResult(interp, Tcl_NewStringObj("boolean", -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1159 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1160 case PURPLE_PREF_INT:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1161 Tcl_SetObjResult(interp, Tcl_NewStringObj("int", -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1162 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1163 case PURPLE_PREF_STRING:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1164 Tcl_SetObjResult(interp, Tcl_NewStringObj("string", -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1165 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1166 case PURPLE_PREF_STRING_LIST:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1167 Tcl_SetObjResult(interp, Tcl_NewStringObj("stringlist", -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1168 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1169 default:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1170 purple_debug(PURPLE_DEBUG_ERROR, "tcl", "tcl does not know about pref type %d\n", preftype);
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1171 Tcl_SetObjResult(interp, Tcl_NewStringObj("unknown", -1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1172 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1173 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1174 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1175
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1176 return TCL_OK;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1177 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1178
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1179 int tcl_cmd_presence(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1180 {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1181 const char *cmds[] = { "account", "active_status", "available",
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1182 "chat_user", "context", "conversation", "idle",
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1183 "login", "online", "status", "statuses", NULL };
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1184 enum { CMD_PRESENCE_ACCOUNT, CMD_PRESENCE_ACTIVE_STATUS,
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1185 CMD_PRESENCE_AVAILABLE, CMD_PRESENCE_CHAT_USER,
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1186 CMD_PRESENCE_CONTEXT, CMD_PRESENCE_CONVERSATION,
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1187 CMD_PRESENCE_IDLE, CMD_PRESENCE_LOGIN, CMD_PRESENCE_ONLINE,
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1188 CMD_PRESENCE_STATUS, CMD_PRESENCE_STATUSES } cmd;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1189 Tcl_Obj *result;
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1190 Tcl_Obj *list, *elem;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1191 PurplePresence *presence;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18122
diff changeset
1192 GList *cur;
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1193 int error, idle, idle_time, login_time;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1194
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1195 if (objc < 2) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1196 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1197 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1198 }
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1199
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1200 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1201 return error;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1202
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1203 switch (cmd) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1204 case CMD_PRESENCE_ACCOUNT:
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1205 if (objc != 3) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1206 Tcl_WrongNumArgs(interp, 2, objv, "presence");
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1207 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1208 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1209 if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1210 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1211 Tcl_SetObjResult(interp, purple_tcl_ref_new(PurpleTclRefAccount,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1212 purple_presence_get_account(presence)));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1213 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1214 case CMD_PRESENCE_ACTIVE_STATUS:
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1215 if (objc != 3 && objc != 4 && objc != 5) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1216 Tcl_WrongNumArgs(interp, 2, objv, "presence [?status_id? | ?-primitive primitive?]");
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1217 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1218 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1219 if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1220 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1221 if (objc == 3) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1222 Tcl_SetObjResult(interp,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1223 purple_tcl_ref_new(PurpleTclRefStatus,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1224 purple_presence_get_active_status(presence)));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1225 } else if (objc == 4) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1226 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1227 Tcl_NewBooleanObj(
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1228 purple_presence_is_status_active(presence,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1229 Tcl_GetString(objv[3]))));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1230 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1231 PurpleStatusPrimitive primitive;
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1232 if (strcmp(Tcl_GetString(objv[3]), "-primitive")) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1233 result = Tcl_NewStringObj("bad option \"", -1);
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1234 Tcl_AppendObjToObj(result, objv[3]);
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1235 Tcl_AppendToObj(result,
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1236 "\": should be -primitive", -1);
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1237 Tcl_SetObjResult(interp,result);
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1238 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1239 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1240 primitive = purple_primitive_get_type_from_id(Tcl_GetString(objv[4]));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1241 if (primitive == PURPLE_STATUS_UNSET) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1242 result = Tcl_NewStringObj("invalid primitive ", -1);
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1243 Tcl_AppendObjToObj(result, objv[4]);
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1244 Tcl_SetObjResult(interp,result);
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1245 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1246 }
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1247 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1248 Tcl_NewBooleanObj(
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1249 purple_presence_is_status_primitive_active(presence, primitive)));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1250 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1251 }
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1252 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1253 case CMD_PRESENCE_AVAILABLE:
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1254 if (objc != 3) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1255 Tcl_WrongNumArgs(interp, 2, objv, "presence");
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1256 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1257 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1258 if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1259 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1260 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1261 Tcl_NewBooleanObj(purple_presence_is_available(presence)));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1262 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1263 case CMD_PRESENCE_CHAT_USER:
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1264 if (objc != 3) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1265 Tcl_WrongNumArgs(interp, 2, objv, "presence");
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1266 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1267 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1268 if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1269 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1270 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1271 Tcl_NewStringObj(purple_presence_get_chat_user(presence), -1));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1272 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1273 case CMD_PRESENCE_CONTEXT:
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1274 if (objc != 3) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1275 Tcl_WrongNumArgs(interp, 2, objv, "presence");
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1276 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1277 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1278 if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1279 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1280 switch (purple_presence_get_context(presence)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1281 case PURPLE_PRESENCE_CONTEXT_UNSET:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1282 Tcl_SetObjResult(interp, Tcl_NewStringObj("unset", -1));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1283 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1284 case PURPLE_PRESENCE_CONTEXT_ACCOUNT:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1285 Tcl_SetObjResult(interp, Tcl_NewStringObj("account", -1));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1286 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1287 case PURPLE_PRESENCE_CONTEXT_CONV:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1288 Tcl_SetObjResult(interp, Tcl_NewStringObj("conversation", -1));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1289 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1290 case PURPLE_PRESENCE_CONTEXT_BUDDY:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1291 Tcl_SetObjResult(interp, Tcl_NewStringObj("buddy", -1));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1292 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1293 }
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1294 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1295 case CMD_PRESENCE_CONVERSATION:
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1296 if (objc != 3) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1297 Tcl_WrongNumArgs(interp, 2, objv, "presence");
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1298 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1299 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1300 if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1301 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1302 Tcl_SetObjResult(interp, purple_tcl_ref_new(PurpleTclRefConversation,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1303 purple_presence_get_conversation(presence)));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1304 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1305 case CMD_PRESENCE_IDLE:
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1306 if (objc < 3 || objc > 5) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1307 Tcl_WrongNumArgs(interp, 2, objv, "presence ?idle? ?time?");
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1308 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1309 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1310 if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1311 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1312 if (objc == 3) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1313 if (purple_presence_is_idle(presence)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1314 idle_time = purple_presence_get_idle_time (presence);
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1315 Tcl_SetObjResult(interp, Tcl_NewIntObj(idle_time));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1316 } else {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1317 result = Tcl_NewListObj(0, NULL);
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1318 Tcl_SetObjResult(interp, result);
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1319 }
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1320 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1321 }
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1322 if ((error = Tcl_GetBooleanFromObj(interp, objv[3], &idle)) != TCL_OK)
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1323 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1324 if (objc == 4) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1325 purple_presence_set_idle(presence, idle, time(NULL));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1326 } else if (objc == 5) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1327 if ((error = Tcl_GetIntFromObj(interp,
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1328 objv[4],
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1329 &idle_time)) != TCL_OK)
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1330 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1331 purple_presence_set_idle(presence, idle, idle_time);
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1332 }
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1333 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1334 case CMD_PRESENCE_LOGIN:
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1335 if (objc != 3 && objc != 4) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1336 Tcl_WrongNumArgs(interp, 2, objv, "presence ?time?");
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1337 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1338 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1339 if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1340 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1341 if (objc == 3) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1342 Tcl_SetObjResult(interp, Tcl_NewIntObj(purple_presence_get_login_time(presence)));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1343 } else {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1344 if ((error == Tcl_GetIntFromObj(interp,
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1345 objv[3],
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1346 &login_time)) != TCL_OK)
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1347 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1348 purple_presence_set_login_time(presence, login_time);
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1349 }
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1350 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1351 case CMD_PRESENCE_ONLINE:
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1352 if (objc != 3) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1353 Tcl_WrongNumArgs(interp, 2, objv, "presence");
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1354 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1355 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1356 if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1357 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1358 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1359 Tcl_NewBooleanObj(
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1360 purple_presence_is_online(presence)));
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1361 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1362 case CMD_PRESENCE_STATUS:
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1363 if (objc != 4) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1364 Tcl_WrongNumArgs(interp, 2, objv, "presence status_id");
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1365 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1366 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1367 if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1368 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1369 Tcl_SetObjResult(interp,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1370 purple_tcl_ref_new(PurpleTclRefStatus,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1371 purple_presence_get_status(presence,
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1372 Tcl_GetString(objv[3]))));
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1373 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1374 case CMD_PRESENCE_STATUSES:
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1375 if (objc != 3) {
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1376 Tcl_WrongNumArgs(interp, 2, objv, "presence");
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1377 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1378 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1379 if ((presence = purple_tcl_ref_get(interp, objv[2], PurpleTclRefPresence)) == NULL)
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1380 return TCL_ERROR;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1381 list = Tcl_NewListObj(0, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1382 for (cur = purple_presence_get_statuses(presence); cur != NULL;
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1383 cur = g_list_next(cur)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1384 elem = purple_tcl_ref_new(PurpleTclRefStatus, cur->data);
13823
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1385 Tcl_ListObjAppendElement(interp, list, elem);
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1386 }
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1387 Tcl_SetObjResult(interp, list);
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1388 break;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1389 }
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1390
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1391 return TCL_OK;
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1392 }
b17175505b38 [gaim-migrate @ 16254]
Ethan Blanton <elb@pidgin.im>
parents: 13817
diff changeset
1393
15758
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1394 int tcl_cmd_savedstatus(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1395 {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1396 Tcl_Obj *result;
15758
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1397 const char *cmds[] = { "current", "handle", NULL };
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1398 enum { CMD_SAVEDSTATUS_CURRENT, CMD_SAVEDSTATUS_HANDLE } cmd;
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1399 int error;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1400 PurpleSavedStatus *saved_status;
15758
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1401
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1402 if (objc < 2) {
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1403 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1404 return TCL_ERROR;
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1405 }
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1406
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1407 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1408 return error;
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1409
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1410 switch (cmd) {
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1411 case CMD_SAVEDSTATUS_CURRENT:
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1412 if (objc != 2) {
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1413 Tcl_WrongNumArgs(interp, 2, objv, "");
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1414 return TCL_ERROR;
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1415 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1416 if ((saved_status = purple_savedstatus_get_current()) == NULL)
15758
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1417 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1418 result = Tcl_NewListObj(0, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1419 Tcl_ListObjAppendElement(interp, result, Tcl_NewStringObj(purple_savedstatus_get_title(saved_status), -1));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1420 Tcl_ListObjAppendElement(interp, result, Tcl_NewIntObj(purple_savedstatus_get_type(saved_status)));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1421 Tcl_ListObjAppendElement(interp, result, Tcl_NewStringObj(purple_savedstatus_get_message(saved_status), -1));
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1422 Tcl_SetObjResult(interp,result);
15758
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1423 break;
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1424 case CMD_SAVEDSTATUS_HANDLE:
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1425 if (objc != 2) {
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1426 Tcl_WrongNumArgs(interp, 2, objv, "");
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1427 return TCL_ERROR;
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1428 }
20393
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
1429 Tcl_SetObjResult(interp,
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
1430 purple_tcl_ref_new(PurpleTclRefHandle,
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
1431 purple_savedstatuses_get_handle()));
15758
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1432 break;
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1433 }
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1434
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1435 return TCL_OK;
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1436 }
d31f3317c849 Tcl savedstatus command, again from Dossy Shiobara. Dossy is on fire.
Ethan Blanton <elb@pidgin.im>
parents: 15750
diff changeset
1437
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1438 int tcl_cmd_send_im(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1439 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1440 PurpleConnection *gc;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1441 char *who, *text;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1442
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1443 if (objc != 4) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1444 Tcl_WrongNumArgs(interp, 1, objv, "gc who text");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1445 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1446 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1447
13817
ba01c6caad7d [gaim-migrate @ 16247]
Ethan Blanton <elb@pidgin.im>
parents: 13812
diff changeset
1448 if ((gc = tcl_validate_gc(objv[1], interp)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1449 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1450
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1451 who = Tcl_GetString(objv[2]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1452 text = Tcl_GetString(objv[3]);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1453
6982
12f08de92674 [gaim-migrate @ 7538]
Mark Doliner <markdoliner@pidgin.im>
parents: 6864
diff changeset
1454 serv_send_im(gc, who, text, 0);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1455
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1456 return TCL_OK;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1457 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1458
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1459 int tcl_cmd_signal(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1460 {
10339
246feba79f04 [gaim-migrate @ 11548]
Mark Doliner <markdoliner@pidgin.im>
parents: 10246
diff changeset
1461 const char *cmds[] = { "connect", "disconnect", NULL };
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1462 enum { CMD_SIGNAL_CONNECT, CMD_SIGNAL_DISCONNECT } cmd;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1463 struct tcl_signal_handler *handler;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1464 void *instance;
10597
41d2db9fefd5 [gaim-migrate @ 12012]
Ethan Blanton <elb@pidgin.im>
parents: 10401
diff changeset
1465 int error;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1466
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1467 if (objc < 2) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1468 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1469 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1470 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1471
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1472 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1473 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1474
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1475 switch (cmd) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1476 case CMD_SIGNAL_CONNECT:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1477 if (objc != 6) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1478 Tcl_WrongNumArgs(interp, 2, objv, "instance signal args proc");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1479 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1480 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1481 handler = g_new0(struct tcl_signal_handler, 1);
20393
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
1482 if ((handler->instance = purple_tcl_ref_get(interp, objv[2],PurpleTclRefHandle)) == NULL) {
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1483 g_free(handler);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1484 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1485 }
10597
41d2db9fefd5 [gaim-migrate @ 12012]
Ethan Blanton <elb@pidgin.im>
parents: 10401
diff changeset
1486 handler->signal = objv[3];
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1487 Tcl_IncrRefCount(handler->signal);
10597
41d2db9fefd5 [gaim-migrate @ 12012]
Ethan Blanton <elb@pidgin.im>
parents: 10401
diff changeset
1488 handler->args = objv[4];
41d2db9fefd5 [gaim-migrate @ 12012]
Ethan Blanton <elb@pidgin.im>
parents: 10401
diff changeset
1489 handler->proc = objv[5];
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1490 handler->interp = interp;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1491 if (!tcl_signal_connect(handler)) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1492 tcl_signal_handler_free(handler);
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1493 Tcl_SetObjResult(interp, Tcl_NewIntObj(1));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1494 } else {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1495 Tcl_SetObjResult(interp, Tcl_NewIntObj(0));
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1496 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1497 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1498 case CMD_SIGNAL_DISCONNECT:
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1499 if (objc != 4) {
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1500 Tcl_WrongNumArgs(interp, 2, objv, "instance signal");
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1501 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1502 }
20393
6280efb8c658 Another fabulous patch to our Tcl loader from venks on irc.freenode.net.
Ethan Blanton <elb@pidgin.im>
parents: 19859
diff changeset
1503 if ((instance = purple_tcl_ref_get(interp, objv[2],PurpleTclRefHandle)) == NULL)
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1504 return error;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1505 tcl_signal_disconnect(instance, Tcl_GetString(objv[3]), interp);
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1506 break;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1507 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1508
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1509 return TCL_OK;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1510 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1511
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1512 int tcl_cmd_status(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1513 {
13828
06d635b64c67 [gaim-migrate @ 16270]
Ethan Blanton <elb@pidgin.im>
parents: 13826
diff changeset
1514 const char *cmds[] = { "attr", "type", NULL };
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1515 enum { CMD_STATUS_ATTR, CMD_STATUS_TYPE } cmd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1516 PurpleStatus *status;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1517 PurpleStatusType *status_type;
25913
3d5e1dfea10a Fix compile errors from the merge. Untested protocols: msnp9, sametime,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24974
diff changeset
1518 int error;
3d5e1dfea10a Fix compile errors from the merge. Untested protocols: msnp9, sametime,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24974
diff changeset
1519 #if !(defined PURPLE_DISABLE_DEPRECATED)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1520 PurpleValue *value;
13826
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1521 const char *attr;
25913
3d5e1dfea10a Fix compile errors from the merge. Untested protocols: msnp9, sametime,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24974
diff changeset
1522 int v;
3d5e1dfea10a Fix compile errors from the merge. Untested protocols: msnp9, sametime,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24974
diff changeset
1523 #endif
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1524
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1525 if (objc < 2) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1526 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1527 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1528 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1529
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1530 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1531 return error;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1532
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1533 switch (cmd) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1534 case CMD_STATUS_ATTR:
25913
3d5e1dfea10a Fix compile errors from the merge. Untested protocols: msnp9, sametime,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24974
diff changeset
1535 #if !(defined PURPLE_DISABLE_DEPRECATED)
13826
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1536 if (objc != 4 && objc != 5) {
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1537 Tcl_WrongNumArgs(interp, 2, objv, "status attr_id ?value?");
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1538 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1539 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1540 if ((status = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatus)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1541 return TCL_ERROR;
13826
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1542 attr = Tcl_GetString(objv[3]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1543 value = purple_status_get_attr_value(status, attr);
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1544 if (value == NULL) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1545 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1546 Tcl_NewStringObj("no such attribute", -1));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1547 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1548 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1549 switch (purple_value_get_type(value)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1550 case PURPLE_TYPE_BOOLEAN:
13826
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1551 if (objc == 4) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1552 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1553 Tcl_NewBooleanObj(purple_value_get_boolean(value)));
13826
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1554 } else {
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1555 if ((error = Tcl_GetBooleanFromObj(interp, objv[4], &v)) != TCL_OK)
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1556 return error;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1557 purple_status_set_attr_boolean(status, attr, v);
13826
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1558 }
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1559 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1560 case PURPLE_TYPE_INT:
13826
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1561 if (objc == 4) {
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1562 Tcl_SetObjResult(interp, Tcl_NewIntObj(purple_value_get_int(value)));
13826
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1563 } else {
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1564 if ((error = Tcl_GetIntFromObj(interp, objv[4], &v)) != TCL_OK)
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1565 return error;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1566 purple_status_set_attr_int(status, attr, v );
13826
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1567 }
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1568 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1569 case PURPLE_TYPE_STRING:
13826
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1570 if (objc == 4)
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1571 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1572 Tcl_NewStringObj(purple_value_get_string(value), -1));
13826
f2171c7feeda [gaim-migrate @ 16268]
Ethan Blanton <elb@pidgin.im>
parents: 13823
diff changeset
1573 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1574 purple_status_set_attr_string(status, attr, Tcl_GetString(objv[4]));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1575 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1576 default:
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1577 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1578 Tcl_NewStringObj("attribute has unknown type", -1));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1579 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1580 }
25913
3d5e1dfea10a Fix compile errors from the merge. Untested protocols: msnp9, sametime,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24974
diff changeset
1581 #endif
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1582 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1583 case CMD_STATUS_TYPE:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1584 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1585 Tcl_WrongNumArgs(interp, 2, objv, "status");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1586 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1587 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1588 if ((status = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatus)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1589 return TCL_ERROR;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1590 status_type = purple_status_get_type(status);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1591 Tcl_SetObjResult(interp, purple_tcl_ref_new(PurpleTclRefStatusType,
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1592 status_type));
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1593 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1594 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1595
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1596 return TCL_OK;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1597 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1598
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1599 int tcl_cmd_status_attr(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1600 {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1601 const char *cmds[] = { "id", "name", NULL };
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1602 enum { CMD_STATUS_ATTR_ID, CMD_STATUS_ATTR_NAME } cmd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1603 PurpleStatusAttr *attr;
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1604 int error;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1605
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1606 if (objc < 2) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1607 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1608 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1609 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1610
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1611 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1612 return error;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1613
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1614 switch (cmd) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1615 case CMD_STATUS_ATTR_ID:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1616 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1617 Tcl_WrongNumArgs(interp, 2, objv, "attr");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1618 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1619 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1620 if ((attr = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusAttr)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1621 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1622 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1623 Tcl_NewStringObj(purple_status_attr_get_id(attr), -1));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1624 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1625 case CMD_STATUS_ATTR_NAME:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1626 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1627 Tcl_WrongNumArgs(interp, 2, objv, "attr");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1628 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1629 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1630 if ((attr = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusAttr)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1631 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1632 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1633 Tcl_NewStringObj(purple_status_attr_get_name(attr), -1));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1634 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1635 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1636
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1637 return TCL_OK;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1638 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1639
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1640 int tcl_cmd_status_type(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1641 {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1642 const char *cmds[] = { "attr", "attrs", "available", "exclusive", "id",
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1643 "independent", "name", "primary_attr",
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1644 "primitive", "saveable", "user_settable",
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1645 NULL };
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1646 enum { CMD_STATUS_TYPE_ATTR, CMD_STATUS_TYPE_ATTRS,
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1647 CMD_STATUS_TYPE_AVAILABLE, CMD_STATUS_TYPE_EXCLUSIVE,
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1648 CMD_STATUS_TYPE_ID, CMD_STATUS_TYPE_INDEPENDENT,
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1649 CMD_STATUS_TYPE_NAME, CMD_STATUS_TYPE_PRIMARY_ATTR,
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1650 CMD_STATUS_TYPE_PRIMITIVE, CMD_STATUS_TYPE_SAVEABLE,
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1651 CMD_STATUS_TYPE_USER_SETTABLE } cmd;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1652 PurpleStatusType *status_type;
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1653 Tcl_Obj *list, *elem;
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18122
diff changeset
1654 GList *cur;
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1655 int error;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1656
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1657 if (objc < 2) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1658 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1659 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1660 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1661
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1662 if ((error = Tcl_GetIndexFromObj(interp, objv[1], cmds, "subcommand", 0, (int *)&cmd)) != TCL_OK)
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1663 return error;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1664
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1665 switch (cmd) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1666 case CMD_STATUS_TYPE_AVAILABLE:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1667 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1668 Tcl_WrongNumArgs(interp, 2, objv, "statustype");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1669 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1670 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1671 if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1672 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1673 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1674 Tcl_NewBooleanObj(purple_status_type_is_available(status_type)));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1675 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1676 case CMD_STATUS_TYPE_ATTR:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1677 if (objc != 4) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1678 Tcl_WrongNumArgs(interp, 2, objv, "statustype attr");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1679 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1680 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1681 if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1682 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1683 Tcl_SetObjResult(interp,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1684 purple_tcl_ref_new(PurpleTclRefStatusAttr,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1685 purple_status_type_get_attr(status_type,
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1686 Tcl_GetStringFromObj(objv[3], NULL))));
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1687 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1688 case CMD_STATUS_TYPE_ATTRS:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1689 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1690 Tcl_WrongNumArgs(interp, 2, objv, "statustype");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1691 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1692 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1693 if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1694 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1695 list = Tcl_NewListObj(0, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1696 for (cur = purple_status_type_get_attrs(status_type);
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1697 cur != NULL; cur = g_list_next(cur)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1698 elem = purple_tcl_ref_new(PurpleTclRefStatusAttr, cur->data);
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1699 Tcl_ListObjAppendElement(interp, list, elem);
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1700 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1701 Tcl_SetObjResult(interp, list);
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1702 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1703 case CMD_STATUS_TYPE_EXCLUSIVE:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1704 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1705 Tcl_WrongNumArgs(interp, 2, objv, "statustype");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1706 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1707 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1708 if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1709 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1710 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1711 Tcl_NewBooleanObj(purple_status_type_is_exclusive(status_type)));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1712 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1713 case CMD_STATUS_TYPE_ID:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1714 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1715 Tcl_WrongNumArgs(interp, 2, objv, "statustype");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1716 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1717 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1718 if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1719 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1720 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1721 Tcl_NewStringObj(purple_status_type_get_id(status_type), -1));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1722 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1723 case CMD_STATUS_TYPE_INDEPENDENT:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1724 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1725 Tcl_WrongNumArgs(interp, 2, objv, "statustype");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1726 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1727 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1728 if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1729 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1730 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1731 Tcl_NewBooleanObj(purple_status_type_is_independent(status_type)));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1732 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1733 case CMD_STATUS_TYPE_NAME:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1734 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1735 Tcl_WrongNumArgs(interp, 2, objv, "statustype");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1736 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1737 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1738 if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1739 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1740 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1741 Tcl_NewStringObj(purple_status_type_get_name(status_type), -1));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1742 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1743 case CMD_STATUS_TYPE_PRIMITIVE:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1744 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1745 Tcl_WrongNumArgs(interp, 2, objv, "statustype");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1746 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1747 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1748 if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1749 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1750 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1751 Tcl_NewStringObj(purple_primitive_get_id_from_type
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1752 (purple_status_type_get_primitive(status_type)), -1));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1753 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1754 case CMD_STATUS_TYPE_PRIMARY_ATTR:
25913
3d5e1dfea10a Fix compile errors from the merge. Untested protocols: msnp9, sametime,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24974
diff changeset
1755 #if !(defined PURPLE_DISABLE_DEPRECATED)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1756 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1757 Tcl_WrongNumArgs(interp, 2, objv, "statustype");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1758 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1759 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1760 if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1761 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1762 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1763 Tcl_NewStringObj(purple_status_type_get_primary_attr(status_type), -1));
25913
3d5e1dfea10a Fix compile errors from the merge. Untested protocols: msnp9, sametime,
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24974
diff changeset
1764 #endif
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1765 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1766 case CMD_STATUS_TYPE_SAVEABLE:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1767 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1768 Tcl_WrongNumArgs(interp, 2, objv, "statustype");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1769 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1770 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1771 if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1772 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1773 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1774 Tcl_NewBooleanObj(
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1775 purple_status_type_is_saveable(status_type)));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1776 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1777 case CMD_STATUS_TYPE_USER_SETTABLE:
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1778 if (objc != 3) {
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1779 Tcl_WrongNumArgs(interp, 2, objv, "statustype");
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1780 return TCL_ERROR;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1781 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1782 if ((status_type = purple_tcl_ref_get(interp, objv[2], PurpleTclRefStatusType)) == NULL)
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1783 return TCL_ERROR;
20394
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1784 Tcl_SetObjResult(interp,
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1785 Tcl_NewBooleanObj(
4088fda4a8e7 The second in a series of Tcl-fixing patches from venks on
Ethan Blanton <elb@pidgin.im>
parents: 20393
diff changeset
1786 purple_status_type_is_user_settable(status_type)));
13812
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1787 break;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1788 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1789
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1790 return TCL_OK;
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1791 }
a10499942a3c [gaim-migrate @ 16240]
Ethan Blanton <elb@pidgin.im>
parents: 13424
diff changeset
1792
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1793 static gboolean unload_self(gpointer data)
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1794 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1795 PurplePlugin *plugin = data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1796 purple_plugin_unload(plugin);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1797 return FALSE;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1798 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1799
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1800 int tcl_cmd_unload(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1801 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15758
diff changeset
1802 PurplePlugin *plugin;
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1803 if (objc != 1) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1804 Tcl_WrongNumArgs(interp, 1, objv, "");
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1805 return TCL_ERROR;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1806 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1807
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1808 if ((plugin = tcl_interp_get_plugin(interp)) == NULL) {
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1809 /* This isn't exactly OK, but heh. What do you do? */
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1810 return TCL_OK;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1811 }
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1812 /* We can't unload immediately, but we can unload at the first
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1813 * known safe opportunity. */
22353
daef90676a8f One more g_idle_add call
Mark Doliner <markdoliner@pidgin.im>
parents: 22240
diff changeset
1814 purple_timeout_add(0, unload_self, (gpointer)plugin);
6694
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1815
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1816 return TCL_OK;
2354eced08e8 [gaim-migrate @ 7220]
Ethan Blanton <elb@pidgin.im>
parents:
diff changeset
1817 }

mercurial