int output_unregister(char *name) { pom_mutex_lock(&output_lock); struct output_reg *tmp; for (tmp = output_reg_head; tmp && strcmp(tmp->reg_info->name, name); tmp = tmp->next); if (!tmp) { pom_mutex_unlock(&output_lock); return POM_OK; } registry_remove_instance_type(output_registry_class, name); if (tmp->prev) tmp->prev->next = tmp->next; else output_reg_head = tmp->next; if (tmp->next) tmp->next->prev = tmp->prev; mod_refcount_dec(tmp->reg_info->mod); free(tmp); pom_mutex_unlock(&output_lock); return POM_OK; }
int input_unregister(char *name) { struct input_reg *reg; for (reg = input_reg_head; reg && strcmp(reg->info->name, name); reg = reg->next); if (!reg) return POM_OK; registry_remove_instance_type(input_registry_class, name); if (reg->prev) reg->prev->next = reg->next; else input_reg_head = reg->next; if (reg->next) reg->next->prev = reg->prev; reg->next = NULL; reg->prev = NULL; mod_refcount_dec(reg->module); free(reg); return POM_OK; }