static void say_next_word()

in speakup/main.c [658:698]


static void say_next_word(struct vc_data *vc)
{
	u_char temp;
	u16 ch;
	enum edge edge_said = edge_none;
	u_short last_state = 2, state = 0;

	spk_parked |= 0x01;
	if (spk_x == vc->vc_cols - 1 && spk_y == vc->vc_rows - 1) {
		announce_edge(vc, edge_bottom);
		return;
	}
	while (1) {
		ch = get_char(vc, (u_short *)spk_pos, &temp);
		if (ch == SPACE || ch == 0)
			state = 0;
		else if (ch < 0x100 && IS_WDLM(ch))
			state = 1;
		else
			state = 2;
		if (state > last_state)
			break;
		if (spk_x >= vc->vc_cols - 1) {
			if (spk_y == vc->vc_rows - 1) {
				edge_said = edge_bottom;
				break;
			}
			state = 0;
			spk_y++;
			spk_x = 0;
			edge_said = edge_right;
		} else {
			spk_x++;
		}
		spk_pos += 2;
		last_state = state;
	}
	if (edge_said > edge_none)
		announce_edge(vc, edge_said);
	say_word(vc);
}