// GET_WORD.C
//

// (C) Фролов Г.В., 1995
// Адрес E-mail: frolov@glas.apc.org


#include <string.h>
#include <time.h>

#include "common.h"
#include "modem.h"
#include "get_word.h"
#include "timer.h"
#include "tools.h"
#include "total.h"



// WriteStr
// обработка управляющих символов
static unsigned WriteStr(register char *s)  {

	register char last = '\0';
	int no_CR  = FALSE;
	unsigned char digit;

	while (*s) {
		if (last == '\\') {
			last = *s;

			switch (*s) {

				// задержка на две секунды

				case 'd':
				case 'D':
					Sleep(2);
					break;

				// не передавать символ перевода каретки в конце строки

				case 'c':
				case 'C':
					no_CR = TRUE;
					break;

				// передать символ возврата каретки

				case 'r':
				case 'R':
					SlowWrite("\r", 1);
					break;

				// передать символ перевода каретки

				case 'n':
				case 'N':
					SlowWrite("\n", 1);
					break;

				// задержка 500 миллисекунд

				case 'p':
				case 'P':
					Delay(500);
					break;

				default:
					SlowWrite(s, 1);
					last = '\0';
			}
		}
		else if (*s != '\\')
			SlowWrite(s, 1);

		else
			last = *s;
		s++;
	}

	return no_CR;
}



// SendStr
// послать строку в буфер передатчика,
// при этом обрабатываются следующие управляющие символы:

// d (D) - задержка на две секунды
// c (C) - не передавать символ перевода каретки в конце строки
// r (R) - передать символ возврата каретки
// n (N) - передать символ перевода каретки
// p (P) - задержка 500 миллисекунд

void SendStr(char *str) {

	if(!equal(str,"")) {
		if(!WriteStr(str))
			SlowWrite("\r", 1);
	}
	else
		SlowWrite("\r", 1);

	return;
}
