Add target_remove_tid
This commit is contained in:
parent
29e81f3bf4
commit
fe47d88035
|
@ -291,6 +291,52 @@ int target_remove(int pid)
|
|||
return 0;
|
||||
}
|
||||
|
||||
// 0x49BC3C
|
||||
int target_remove_tid(int pid, int tid)
|
||||
{
|
||||
TargetNode* node;
|
||||
TargetSubNode* subnode;
|
||||
TargetSubNode* subnode_next;
|
||||
|
||||
node = targetlist.tail;
|
||||
while (node != NULL) {
|
||||
if (node->subnode.field_0 == pid) {
|
||||
break;
|
||||
}
|
||||
node = node->next;
|
||||
}
|
||||
|
||||
if (node == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (node->subnode.field_4 == tid) {
|
||||
subnode_next = node->subnode.next;
|
||||
if (subnode_next != NULL) {
|
||||
memcpy(&(node->subnode), subnode_next, sizeof(TargetSubNode));
|
||||
internal_free(subnode_next);
|
||||
} else {
|
||||
target_remove(pid);
|
||||
}
|
||||
|
||||
// FIXME: Should probably return 0 here.
|
||||
} else {
|
||||
subnode = &(node->subnode);
|
||||
while (subnode != NULL) {
|
||||
subnode_next = subnode->next;
|
||||
if (subnode_next->field_4 == tid) {
|
||||
subnode->next = subnode_next->next;
|
||||
internal_free(subnode_next);
|
||||
return 0;
|
||||
}
|
||||
|
||||
subnode = subnode_next;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 0x49BCBC
|
||||
int target_remove_all()
|
||||
{
|
||||
|
|
|
@ -57,6 +57,7 @@ int target_save(int pid);
|
|||
int target_load(int pid, TargetSubNode** subnode_ptr);
|
||||
int target_find_free_subnode(TargetSubNode** subnode_ptr);
|
||||
int target_remove(int pid);
|
||||
int target_remove_tid(int pid, int tid);
|
||||
int target_remove_all();
|
||||
int target_ptr(int pid, TargetSubNode** subnode_ptr);
|
||||
int target_tid_ptr(int pid, int tid, TargetSubNode** subnode_ptr);
|
||||
|
|
Loading…
Reference in New Issue