コード例 #1
0
result_t libwrap_del_evt_listener(int32 mask, int32 listener_idx)
{
	int32 count = 0;
	result_t rc = RESULT_OK;
	listener_t *header = NULL;

	rc = get_listeners(mask, &header);
	if (rc != RESULT_OK) {
		return rc;
	}

	if (header == NULL)
		return RESULT_NONE_POINTER;

	if (listener_idx < 1)
		return RESULT_NO_NODE;
	else
		listener_idx--;

	while (listener_idx) {
		header = header->pnext;
		listener_idx--;
	}

	if (header)
		rc = del_listener(header->url);

	free_listeners(header);

	return rc;

}
コード例 #2
0
ファイル: devcons.c プロジェクト: 8l/inferno
static void
consclose(Chan *c)
{
	if((c->flag & COPEN) == 0)
		return;

	switch((ulong)c->qid.path) {
	case Qconsctl:
		/* last close of control file turns off raw */
		if(decref(&kbd.ctl) == 0)
			kbd.raw = 0;
		break;

	case Qscancode:
		qlock(&kbd.gq);
		if(gkscanq) {
			qfree(gkscanq);
			gkscanq = nil;
		}
		qunlock(&kbd.gq);
		break;

	case Qkprint:
		wlock(&kprintq.l);
		qfree(kprintq.q);
		kprintq.q = nil;
		wunlock(&kprintq.l);
		break;
	case Qevents:
		del_listener(&event_listeners, c->aux);
		qfree(c->aux);
		c->aux = NULL;
		break;
	}
}