| 74 } |
74 } |
| 75 |
75 |
| 76 int tcl_cmd_account(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) |
76 int tcl_cmd_account(ClientData unused, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) |
| 77 { |
77 { |
| 78 Tcl_Obj *result = Tcl_GetObjResult(interp), *list, *elem; |
78 Tcl_Obj *result = Tcl_GetObjResult(interp), *list, *elem; |
| 79 char *cmds[] = { "alias", "connect", "connection", "disconnect", "find", |
79 char *cmds[] = { "alias", "connect", "connection", "disconnect", "find", |
| 80 "handle", "isconnected", "list", "protocol", "username", |
80 "handle", "isconnected", "list", "public_ip", |
| 81 NULL }; |
81 "protocol", "username", NULL }; |
| 82 enum { CMD_ACCOUNT_ALIAS, CMD_ACCOUNT_CONNECT, CMD_ACCOUNT_CONNECTION, |
82 enum { CMD_ACCOUNT_ALIAS, CMD_ACCOUNT_CONNECT, CMD_ACCOUNT_CONNECTION, |
| 83 CMD_ACCOUNT_DISCONNECT, CMD_ACCOUNT_FIND, CMD_ACCOUNT_HANDLE, |
83 CMD_ACCOUNT_DISCONNECT, CMD_ACCOUNT_FIND, CMD_ACCOUNT_HANDLE, |
| 84 CMD_ACCOUNT_ISCONNECTED, CMD_ACCOUNT_LIST, CMD_ACCOUNT_PROTOCOL, |
84 CMD_ACCOUNT_ISCONNECTED, CMD_ACCOUNT_LIST, CMD_ACCOUNT_PUBLIC_IP, |
| 85 CMD_ACCOUNT_USERNAME } cmd; |
85 CMD_ACCOUNT_PROTOCOL, CMD_ACCOUNT_USERNAME } cmd; |
| 86 char *listopts[] = { "-all", "-online", NULL }; |
86 char *listopts[] = { "-all", "-online", NULL }; |
| 87 enum { CMD_ACCOUNTLIST_ALL, CMD_ACCOUNTLIST_ONLINE } listopt; |
87 enum { CMD_ACCOUNTLIST_ALL, CMD_ACCOUNTLIST_ONLINE } listopt; |
| 88 const char *alias; |
88 const char *alias, *ip; |
| 89 GList *cur; |
89 GList *cur; |
| 90 GaimAccount *account; |
90 GaimAccount *account; |
| 91 int error; |
91 int error; |
| 92 |
92 |
| 93 if (objc < 2) { |
93 if (objc < 2) { |
| 185 continue; |
185 continue; |
| 186 elem = Tcl_NewIntObj((int)account); |
186 elem = Tcl_NewIntObj((int)account); |
| 187 Tcl_ListObjAppendElement(interp, list, elem); |
187 Tcl_ListObjAppendElement(interp, list, elem); |
| 188 } |
188 } |
| 189 Tcl_SetObjResult(interp, list); |
189 Tcl_SetObjResult(interp, list); |
| |
190 break; |
| |
191 case CMD_ACCOUNT_PUBLIC_IP: |
| |
192 if (objc != 3) { |
| |
193 Tcl_WrongNumArgs(interp, 2, objv, "account"); |
| |
194 return TCL_ERROR; |
| |
195 } |
| |
196 error = Tcl_GetIntFromObj(interp, objv[2], (int *)&account); |
| |
197 if (error || !tcl_validate_account(account, interp)) |
| |
198 return TCL_ERROR; |
| |
199 ip = gaim_account_get_public_ip(account); |
| |
200 Tcl_SetStringObj(result, ip != NULL ? (char *)ip : "", -1); |
| 190 break; |
201 break; |
| 191 case CMD_ACCOUNT_PROTOCOL: |
202 case CMD_ACCOUNT_PROTOCOL: |
| 192 if (objc != 3) { |
203 if (objc != 3) { |
| 193 Tcl_WrongNumArgs(interp, 2, objv, "account"); |
204 Tcl_WrongNumArgs(interp, 2, objv, "account"); |
| 194 return TCL_ERROR; |
205 return TCL_ERROR; |