Index: trunk/src_plugins/act_read/act_idpath.c =================================================================== --- trunk/src_plugins/act_read/act_idpath.c (revision 25828) +++ trunk/src_plugins/act_read/act_idpath.c (revision 25829) @@ -2,7 +2,7 @@ static const char pcb_acts_IDPList[] = "IDPList(alloc)\n" - "IDPList(free|clear|print|dup, list)\n" + "IDPList(free|clear|print|dup|length, list)\n" "IDPList(get|pop|remove, list, idx)\n" "IDPList(prepend|append|push, list, idpath)" ; @@ -20,11 +20,11 @@ cmd = act_read_keywords_sphash(cmd_); if (cmd == act_read_keywords_alloc) { list = calloc(sizeof(pcb_idpath_list_t), 1); - fgw_ptr_reg(&pcb_fgw, res, PCB_PTR_DOMAIN_IDPATH, FGW_PTR, list); + fgw_ptr_reg(&pcb_fgw, res, PCB_PTR_DOMAIN_IDPATH_LIST, FGW_PTR | FGW_STRUCT, list); return 0; } + PCB_ACT_CONVARG(2, FGW_IDPATH_LIST, IDPList, list = fgw_idpath_list(&argv[2])); - PCB_ACT_CONVARG(2, FGW_IDPATH_LIST, IDPList, list = fgw_idpath_list(&argv[2])); if (!fgw_ptr_in_domain(&pcb_fgw, &argv[2], PCB_PTR_DOMAIN_IDPATH_LIST)) return FGW_ERR_PTR_DOMAIN; @@ -34,6 +34,10 @@ PCB_ACT_IRES(0); return 0; + case act_read_keywords_length: + PCB_ACT_IRES(pcb_idpath_list_length(list)); +printf("LEN: %ld\n", res->val.nat_long); + return 0; case act_read_keywords_free: fgw_ptr_unreg(&pcb_fgw, &argv[2], PCB_PTR_DOMAIN_IDPATH_LIST); Index: trunk/src_plugins/act_read/keywords.sphash =================================================================== --- trunk/src_plugins/act_read/keywords.sphash (revision 25828) +++ trunk/src_plugins/act_read/keywords.sphash (revision 25829) @@ -4,6 +4,7 @@ dup free get +length pop push prepend