/*
 * SCREEN.C - screen internal command.
 *
 * clone from 4nt msgbox command
 *
 * 30 Aug 1999
 *     started - Paolo Pantaleo <paolopan@freemail.it>
 *
 *
 */

#include "config.h"

#ifdef INCLUDE_CMD_SCREEN

#include <tchar.h>
#include <windows.h>
#include <stdlib.h>
#include <ctype.h>

#include "cmd.h"


INT CommandScreen (LPTSTR cmd, LPTSTR param)
{
	SHORT x,y;
	BOOL bSkipText = FALSE;

	if (_tcsncmp (param, _T("/?"), 2) == 0)
	{
		ConOutPuts(_T(
		              "move cursor and optionally print text\n"
		              "\n"
		              "SCREEN row col [text]\n"
		              "\n"
		              "  row         row to wich move the cursor\n"
		              "  col         column to wich move the cursor"));
		return 0;
	}

	//get row
	while(_istspace(*param))
		param++;

	if(!(*param))
	{
		error_req_param_missing ();
		return 1;
	}

	y = atoi(param);
	if (y<0 || y>(maxy-1))
	{
		ConOutPrintf("invalid value for	row");
		return 1;
	}

	//get col
	if(!(param = _tcschr(param,_T(' '))))
	{
		error_req_param_missing ();
		return 1;
	}

	while(_istspace(*param))
		param++;

	if(!(*param))
	{
		error_req_param_missing ();
		return 1;
	}

	x = atoi(param);
	if (x<0 || x>(maxx-1))
	{
		ConErrPuts(_T("invalid value for col"));
		return 1;
	}

	//get text
	if(!(param = _tcschr(param,_T(' '))))
	{
		bSkipText = TRUE;
	}
	else
	{
		while(_istspace(*param))
			param++;

		if(!(*param))
		{
			bSkipText = TRUE;
		}
	}

	bIgnoreEcho = TRUE;

	if(bSkipText)
		x=0;


	SetCursorXY(x,y);

	if(!(bSkipText))
		ConOutPuts(param);

	return 0;
}

#endif /* INCLUDE_CMD_SCREEN */
