| 246 char *cmds[] = { "alias", "handle", "info", "list", NULL }; |
247 char *cmds[] = { "alias", "handle", "info", "list", NULL }; |
| 247 enum { CMD_BUDDY_ALIAS, CMD_BUDDY_HANDLE, CMD_BUDDY_INFO, CMD_BUDDY_LIST } cmd; |
248 enum { CMD_BUDDY_ALIAS, CMD_BUDDY_HANDLE, CMD_BUDDY_INFO, CMD_BUDDY_LIST } cmd; |
| 248 struct gaim_buddy_list *blist; |
249 struct gaim_buddy_list *blist; |
| 249 GaimBlistNode *node, *gnode; |
250 GaimBlistNode *node, *gnode; |
| 250 GaimAccount *account; |
251 GaimAccount *account; |
| 251 struct buddy *bnode; |
252 GaimBuddy *bnode; |
| 252 struct chat *cnode; |
253 GaimBlistChat *cnode; |
| 253 int error, all = 0, count; |
254 int error, all = 0, count; |
| 254 |
255 |
| 255 if (objc < 2) { |
256 if (objc < 2) { |
| 256 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?"); |
257 Tcl_WrongNumArgs(interp, 1, objv, "subcommand ?args?"); |
| 257 return TCL_ERROR; |
258 return TCL_ERROR; |
| 270 if ((error = Tcl_ListObjGetElements(interp, objv[2], &count, &elems)) != TCL_OK) |
271 if ((error = Tcl_ListObjGetElements(interp, objv[2], &count, &elems)) != TCL_OK) |
| 271 return error; |
272 return error; |
| 272 if ((node = tcl_list_to_buddy(interp, count, elems)) == NULL) |
273 if ((node = tcl_list_to_buddy(interp, count, elems)) == NULL) |
| 273 return TCL_ERROR; |
274 return TCL_ERROR; |
| 274 if (node->type == GAIM_BLIST_CHAT_NODE) |
275 if (node->type == GAIM_BLIST_CHAT_NODE) |
| 275 Tcl_SetStringObj(result, ((struct chat *)node)->alias, -1); |
276 Tcl_SetStringObj(result, ((GaimBlistChat *)node)->alias, -1); |
| 276 else if (node->type == GAIM_BLIST_BUDDY_NODE) |
277 else if (node->type == GAIM_BLIST_BUDDY_NODE) |
| 277 Tcl_SetStringObj(result, gaim_get_buddy_alias((struct buddy *)node), -1); |
278 Tcl_SetStringObj(result, (char *)gaim_get_buddy_alias((GaimBuddy *)node), -1); |
| 278 return TCL_OK; |
279 return TCL_OK; |
| 279 break; |
280 break; |
| 280 case CMD_BUDDY_HANDLE: |
281 case CMD_BUDDY_HANDLE: |
| 281 if (objc != 2) { |
282 if (objc != 2) { |
| 282 Tcl_WrongNumArgs(interp, 2, objv, ""); |
283 Tcl_WrongNumArgs(interp, 2, objv, ""); |
| 327 blist = gaim_get_blist(); |
328 blist = gaim_get_blist(); |
| 328 for (gnode = blist->root; gnode != NULL; gnode = gnode->next) { |
329 for (gnode = blist->root; gnode != NULL; gnode = gnode->next) { |
| 329 tclgroup = Tcl_NewListObj(0, NULL); |
330 tclgroup = Tcl_NewListObj(0, NULL); |
| 330 Tcl_ListObjAppendElement(interp, tclgroup, Tcl_NewStringObj("group", -1)); |
331 Tcl_ListObjAppendElement(interp, tclgroup, Tcl_NewStringObj("group", -1)); |
| 331 Tcl_ListObjAppendElement(interp, tclgroup, |
332 Tcl_ListObjAppendElement(interp, tclgroup, |
| 332 Tcl_NewStringObj(((struct group *)gnode)->name, -1)); |
333 Tcl_NewStringObj(((GaimGroup *)gnode)->name, -1)); |
| 333 tclgrouplist = Tcl_NewListObj(0, NULL); |
334 tclgrouplist = Tcl_NewListObj(0, NULL); |
| 334 for (node = gnode->child; node != NULL; node = node->next) { |
335 for (node = gnode->child; node != NULL; node = node->next) { |
| 335 switch (node->type) { |
336 switch (node->type) { |
| 336 case GAIM_BLIST_BUDDY_NODE: |
337 case GAIM_BLIST_BUDDY_NODE: |
| 337 bnode = (struct buddy *)node; |
338 bnode = (GaimBuddy *)node; |
| 338 if (!all && !gaim_account_is_connected(bnode->account)) |
339 if (!all && !gaim_account_is_connected(bnode->account)) |
| 339 continue; |
340 continue; |
| 340 tclbud = Tcl_NewListObj(0, NULL); |
341 tclbud = Tcl_NewListObj(0, NULL); |
| 341 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj("buddy", -1)); |
342 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj("buddy", -1)); |
| 342 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj(bnode->name, -1)); |
343 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj(bnode->name, -1)); |
| 343 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewIntObj((int)bnode->account)); |
344 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewIntObj((int)bnode->account)); |
| 344 break; |
345 break; |
| 345 case GAIM_BLIST_CHAT_NODE: |
346 case GAIM_BLIST_CHAT_NODE: |
| 346 cnode = (struct chat *)node; |
347 cnode = (GaimBlistChat *)node; |
| 347 if (!all && !gaim_account_is_connected(cnode->account)) |
348 if (!all && !gaim_account_is_connected(cnode->account)) |
| 348 continue; |
349 continue; |
| 349 tclbud = Tcl_NewListObj(0, NULL); |
350 tclbud = Tcl_NewListObj(0, NULL); |
| 350 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj("chat", -1)); |
351 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj("chat", -1)); |
| 351 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj(cnode->alias, -1)); |
352 Tcl_ListObjAppendElement(interp, tclbud, Tcl_NewStringObj(cnode->alias, -1)); |