/// ===========================================================

int script_check(char file[])
{

kol_struct70	k70;
char		buf[4];

k70.p00 = 0;
k70.p04 = 0;
k70.p08 = 0;
k70.p12 = 4; // ÷èòàòü 4 áàéòà
k70.p16 = (unsigned) buf;
k70.p20 = 0;
k70.p21 = file;

kol_file_70(&k70);

if ( !strcmp(buf, script_sign) )
	return TRUE;
else
	return FALSE;
}

/// ===========================================================

int script_run(char exec[], char args[])
{

kol_struct70	k70;
kol_struct_BDVK	bdvk;
unsigned	result, filesize, pos, i;
char		*buf; //áóôåğ, êóäà êîïèğóåòñÿ ñêğèïò

k70.p00 = 5;
k70.p04 = k70.p08 = k70.p12 = 0;
k70.p16 = (unsigned) &bdvk;
k70.p20 = 0;
k70.p21 = exec;

result = kol_file_70(&k70); // ïîëó÷àåì èíôîğìàöèş î ôàéëå
if ( 0 != result ) 
	return FALSE;

filesize = bdvk.p32[0]; // ïîëó÷àåì ğàçìåğ ôàéëà

buf = malloc(filesize+256);
if (NULL == buf)
	return FALSE;

buf[filesize]=0;

k70.p00 = 0;
k70.p04 = k70.p08 = 0;
k70.p12 = filesize;
k70.p16 = (unsigned) buf;
k70.p20 = 0;
k70.p21 = exec;

result = kol_file_70(&k70); // ñ÷èòûâàåì ôàéë â áóôåğ
if ( 0 != result ) 
	{
	free(buf);
	return FALSE;
	}

pos = 0;

for (;;) // îáğàáîòêà ñêğèïòà
	{

	if (pos > filesize)
		break;

	for (i=0;;i++) // ñ÷èòûâàíèå ñòğîêè
		{
		if ((0x0A == buf[pos])||(0x0D == buf[pos])||(0 == buf[pos]))
			{
			pos++;
			CMD[i] = '\0';
			break;
			}
		CMD[i] = buf[pos];
		pos++;
		}

	if ( 0 == strlen(CMD) ) // ïóñòàÿ ñòğîêà
		continue;

	if ('#' == CMD[0]) // êîììåíòàğèé
		continue;

	command_execute();

	}

free(buf);
return TRUE;
}

/// ===========================================================