void netproc_devicelist_clear(NETDEVLIST_PTR *netdev_list) { NETDEVLIST_PTR ptr; NETDEVLIST_PTR prev_ptr; NETDEVLIST_PTR del_ptr; if (*netdev_list==NULL) { return; } prev_ptr = NULL; ptr = *netdev_list; do { if (!ptr->info.alive) { /* if device was removed */ if (prev_ptr!=NULL) { ptr->prev->next = ptr->next; ptr->next->prev = ptr->prev; } else { ptr->next->prev = NULL; *netdev_list = ptr->next; } del_ptr = ptr; ptr = ptr->next; netproc_netdevlist_destroy(del_ptr); g_free(del_ptr); } else { prev_ptr = ptr; ptr = ptr->next; } } while(ptr!=NULL); }
int netproc_netdevlist_clear(NETDEVLIST_PTR *netdev_list) { NETDEVLIST_PTR ptr; NETDEVLIST_PTR ptr_del; if (*netdev_list==NULL) return 0; ptr = *netdev_list; while(ptr->next!=NULL) { ptr_del = ptr; ptr = ptr->next; netproc_netdevlist_destroy(ptr_del); free(ptr_del); } *netdev_list = NULL; return 0; }
void netproc_devicelist_clear(NETDEVLIST_PTR *netdev_list) { NETDEVLIST_PTR ptr; NETDEVLIST_PTR next_ptr; for (ptr = *netdev_list; ptr != NULL; ptr = next_ptr) { next_ptr = ptr->next; if (!ptr->info.alive) { /* if device was removed */ if (ptr->prev != NULL) ptr->prev->next = ptr->next; if (ptr->next != NULL) ptr->next->prev = ptr->prev; if (ptr == *netdev_list) *netdev_list = ptr->next; netproc_netdevlist_destroy(ptr); g_free(ptr); } } }