// GET_WORD.C
//

//#include <stdio.h>
//#include <stdlib.h>
//#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;
}
