Esempio n. 1
0
void event_wait_enter(Event *event)
{
	char *message;
	puts("Press [Enter] to continue");
	lock(event);
	while ((message = event_peek_message(event)) == NULL) {
		condition_wait(event);
	}
	unlock(event);
	free(message);
}
Esempio n. 2
0
/**
 * @brief Wait input.
 *
 * @param ui User interface.
 * @param cmd Command.
 * @param param Command's parameters.
 */
bool ui_event_peek(UI *ui, char **cmd, char **param)
{
	int n;
	char *message;

	if ((message = event_peek_message(ui->event)) != NULL) {

		free(*cmd); *cmd = NULL;
		free(*param); *param = NULL;

		n = strlen(message);
		*cmd = (char*) malloc(n + 1);
		*param = (char*) malloc(n + 1);
		parse_command(message, *cmd, *param, n);
		free(message);
		return true;
	} else {
		return false;
	}
}
Esempio n. 3
0
/**
 * @brief Wait input.
 *
 * @param event Event.
 * @param cmd Command.
 * @param param Command's parameters.
 */
void event_wait(Event *event, char **cmd, char **param)
{
	int n;
	char *message;

	lock(event);
	while ((message = event_peek_message(event)) == NULL) {
		condition_wait(event);
	}
	unlock(event);

	free(*cmd);
	free(*param);

	info("<event wait: %s>\n", message);

	n = strlen(message);
	*cmd = (char*) malloc(n + 1);
	*param = (char*) malloc(n + 1);
	parse_command(message, *cmd, *param, n);
	free(message);
}