コード例 #1
0
ファイル: nterm.c プロジェクト: pratikmankawde/HelenOS_Nano
int main(int argc, char *argv[])
{
	kbd_event_t ev;
	int rc;

	if (argc != 3) {
		print_syntax();
		return 1;
	}

	rc = conn_open(argv[1], argv[2]);
	if (rc != EOK) {
		printf("Error connecting.\n");
		return 1;
	}

	printf("Connection established.\n");

	con = console_init(stdin, stdout);

	done = false;
	while (!done) {
		console_get_kbd_event(con, &ev);
		if (ev.type == KEY_PRESS)
			key_handle(&ev);
	}

	return 0;
}
コード例 #2
0
static int FUNC_DSC_UPDATE_KL_KEY(struct cmd_data *data)
{
	struct dev_fd *p = search_dev_fd(data->idx);
	struct ca_update_kl_key key;

	memset(&key, 0, sizeof(key));

	if (!p || key_handle(data->key_idx, &key.key_handle))
		return EFAULT;

	if (data->kl_key_idx == -1) {
		int p[2];
		if (pipe(p))
			return EIO;
		key.kl_fd = p[0];
	} else if (data->kl_key_idx == -2) {
		int f = open("/dev/null", O_WRONLY);
		if (!f)
			return EIO;
		key.kl_fd = f;
	} else {
		struct dev_fd *kl_fd = search_dev_fd(data->kl_key_idx);
		if (!kl_fd)
			return EIO;
		key.kl_fd = kl_fd->fd;
	}

	if (ioctl(p->fd, CA_UPDATE_KL_KEY, &key) < 0) {
		int ret = errno;
		ERROR("CA_UPDATE_KL_KEY failed : %s", strerror(errno));
		return ret;
	}
	return 0;
}
コード例 #3
0
static int FUNC_DSC_UPDATE_CLEAR_KEY(struct cmd_data *data)
{
	struct dev_fd *p = search_dev_fd(data->idx);
	struct ca_update_clear_key key;
	short *k;
	int size;

	memset(&key, 0, sizeof(key));

	if (!p || key_handle(data->key_idx, &key.key_handle))
		return EFAULT;

	if (data->key_odd) {
		k = (short *)data->key_odd;
		size = *k++;
		memcpy(key.key_odd, k, size);
		key.valid_mask |= CA_VALID_KEY_ODD;
	}

	if (data->key_even) {
		k = (short *)data->key_even;
		size = *k++;
		memcpy(key.key_even, k, size);
		key.valid_mask |= CA_VALID_KEY_EVEN;
	}

	if (ioctl(p->fd, CA_UPDATE_CLEAR_KEY, &key) < 0) {
		int ret = errno;
		ERROR("CA_UPDATE_CLEAR_KEY failed : %s", strerror(errno));
		return ret;
	}
	return 0;
}
コード例 #4
0
static int FUNC_DSC_ADD_PID(struct cmd_data *data)
{
	struct dev_fd *p = search_dev_fd(data->idx);
	struct ca_pid param;

	if (!p || key_handle(data->key_idx, &param.key_handle))
		return EFAULT;

	param.ltsid = data->ltsid;
	param.pid = data->pid;

	if (data->tsc_flag)
		param.tsc_flag = get_tsc_flag(data->tsc_flag);
	else
		param.tsc_flag = 0;

	DEBUG("add_pid hdl %d ltsid %d flag %d pid %d", param.key_handle,
	      param.ltsid, param.tsc_flag, param.pid);

	if (ioctl(p->fd, CA_ADD_PID, &param) < 0) {
		int ret = errno;
		ERROR("CA_ADD_PID failed : %s", strerror(errno));
		return ret;
	}

	return 0;
}
コード例 #5
0
ファイル: micro.c プロジェクト: Munix-Project/micro
int main(int argc, char ** argv) {
	char * pwd = "."; /* TODO: Fetch the actual path */
	file_t * file = create_file(pwd, NEW_FILE);

	while(!file->term_status->quit_fl) {
		key_handle(file);
		render_all(file);
	}

	close_file(file);
	return 0;
}
コード例 #6
0
static int FUNC_DSC_DELETE_KEY(struct cmd_data *data)
{
	struct dev_fd *p = search_dev_fd(data->idx);
	int key_fd = 0;

	if (!p || key_handle(data->key_idx, &key_fd))
		return EFAULT;

	DEBUG("DELETE_KEY fd %d", key_fd);

	if (ioctl(p->fd, CA_DELETE_KEY, key_fd) < 0) {
		int ret = errno;
		ERROR("CA_DELETE_KEY failed : %s", strerror(errno));
		return ret;
	}
	release_key_fd(data->key_idx);
	return 0;
}
コード例 #7
0
ファイル: main.c プロジェクト: kissthink/notes
int main(int argc, char *argv[])
{
    struct chess_t chess;
    SDL_Event event;
    int ret;

    ret = chess_init(&chess);
    ERRP(ret != TRUE, goto ERR1, 1, "sdl_init failed!\n");

    if (argc > 1)
        chess.eth_id = atoi(argv[1]);

    ret = chess_menu(&chess);
    ERRP(ret == EXIT, goto ERR2, 0);

    while (1)
    {
        if (SDL_WaitEvent(&event)) 
        {
            if (event.type == SDL_QUIT)
                break;
            if (event.type == SDL_KEYDOWN && 
                key_handle(&chess, event.key.keysym.sym) == EXIT)
                break;
            if (event.type == SDL_MOUSEBUTTONDOWN && 
                event.button.button == SDL_BUTTON_LEFT &&
                !pos_op(event.button.x, event.button.y, &chess) &&
                chess_handle(&chess) == EXIT)
                break;
        }
    }

ERR2:
    chess_exit(&chess);
ERR1:
    return 0;
}
コード例 #8
0
static int FUNC_DSC_UPDATE_PARAMS(struct cmd_data *data)
{
	struct dev_fd *p = search_dev_fd(data->idx);
	struct ca_update_params key;
	int v = 0, size;
	short *k;

	memset(&key, 0, sizeof(key));

	DEBUG("key idx %d\n", data->key_idx);

	if (!p || key_handle(data->key_idx, &key.key_handle))
		return EFAULT;

	DEBUG("key fd %d\n", key.key_handle);
	if (data->crypt) {
		key.crypt_mode = str2crypt(data->crypt);
		if (key.crypt_mode < 0)
			return EINVAL;
		v |= CA_VALID_CRYPT_MODE;
	}
	if (data->chaining) {
		key.chaining_mode = str2chaining(data->chaining);
		if (key.chaining_mode < 0)
			return EINVAL;
		v |= CA_VALID_CHAINING_MODE;
	}
	if (data->residue) {
		key.residue_mode = str2residue(data->residue);
		if (key.residue_mode < 0)
			return EINVAL;
		v |= CA_VALID_RESIDUE_MODE;
	}
	if (data->parity) {
		key.parity = str2parity(data->parity);
		if (key.parity < 0)
			return EINVAL;
		v |= CA_VALID_PARITY;
	}
	if (data->tsc_flag) {
		key.tsc_flag = get_tsc_flag(data->tsc_flag);
		v |= CA_VALID_TSC_FLAG;
	}

	if (data->iv_odd) {
		k = (short *)data->iv_odd;
		size = *k++;
		if (size > CA_IV_SIZE_MAX) {
			ERROR("CREATE_CLEAR_KEY wrong IV odd size");
			return EINVAL;
		}
		memcpy(&key.iv_odd, k, size);
		v |= CA_VALID_IV_ODD;
	}

	if (data->iv_even) {
		k = (short *)data->iv_even;
		size = *k++;
		if (size > CA_IV_SIZE_MAX) {
			ERROR("CREATE_CLEAR_KEY wrong IV even size");
			return EINVAL;
		}
		memcpy(&key.iv_even, k, size);
		v |= CA_VALID_IV_EVEN;
	}
	key.valid_mask = v;

	DEBUG("%s mask 0x%x parity %d\n", __func__, v, key.parity);
	if (ioctl(p->fd, CA_UPDATE_PARAMS, &key) < 0) {
		int ret = errno;
		ERROR("CA_UPDATE_PARAMS failed : %s", strerror(errno));
		return ret;
	}
	return 0;
}