static int crate_init(struct crate *c, const char *name, bool is_fixed) { c->name = strdup(name); if (c->name == NULL) { perror("strdup"); return -1; } c->is_fixed = is_fixed; listing_init(&c->by_artist); listing_init(&c->by_bpm); listing_init(&c->by_order); return 0; }
static int excrate_init(struct excrate *e, const char *script, const char *search, struct listing *storage) { pid_t pid; fprintf(stderr, "External scan '%s'...\n", search); pid = fork_pipe_nb(&e->fd, script, "scan", search, NULL); if (pid == -1) return -1; e->pid = pid; e->pe = NULL; e->terminated = false; e->refcount = 0; rb_reset(&e->rb); listing_init(&e->listing); e->storage = storage; event_init(&e->completion); e->search = search; list_add(&e->excrates, &excrates); rig_post_excrate(e); return 0; }
void selector_init(struct selector_t *sel, struct library_t *lib) { sel->library = lib; scroll_reset(&sel->records); scroll_reset(&sel->crates); scroll_set_entries(&sel->crates, lib->crates); sel->toggled = false; sel->search[0] = '\0'; sel->search_len = 0; listing_init(&sel->listing_a); listing_init(&sel->listing_b); sel->view_listing = &sel->listing_a; sel->swap_listing = &sel->listing_b; (void)listing_copy(initial(sel), sel->view_listing); scroll_set_entries(&sel->records, sel->view_listing->entries); }