Index: trunk/src/obj_term.c =================================================================== --- trunk/src/obj_term.c (revision 10693) +++ trunk/src/obj_term.c (revision 10694) @@ -25,6 +25,7 @@ #include "config.h" +#include #include #include #include @@ -84,7 +85,24 @@ pcb_term_err_t pcb_term_del(htsp_t *terminals, pcb_any_obj_t *obj) { - return PCB_TERM_ERR_SUCCESS; + vtp0_t *v; + size_t n; + + if (obj->term == NULL) + return PCB_TERM_ERR_NOT_IN_TERMINAL; + + v = htsp_get(terminals, obj->term); + if (v == NULL) + return PCB_TERM_ERR_TERM_NOT_FOUND; + + for(n = 0; n < v->used; n++) { + if (v->array[n] == obj) { + vtp0_remove(v, n, 1); + return PCB_TERM_ERR_SUCCESS; + } + } + + return PCB_TERM_ERR_NOT_IN_TERMINAL; } pcb_term_err_t pcb_term_remove(htsp_t *terminals, const char *tname) Index: trunk/src/obj_term.h =================================================================== --- trunk/src/obj_term.h (revision 10693) +++ trunk/src/obj_term.h (revision 10694) @@ -42,6 +42,8 @@ typedef enum pcb_term_err_e { PCB_TERM_ERR_SUCCESS = 0, PCB_TERM_ERR_ALREADY_TERMINAL, /* object is already in a terminal, can not be added in another */ + PCB_TERM_ERR_NOT_IN_TERMINAL, /* object is not part of any terminal */ + PCB_TERM_ERR_TERM_NOT_FOUND, PCB_TERM_ERR_INVALID_NAME } pcb_term_err_t;