Hi,
I did some test with your code and 'file_find' works when you pass a short pointer or unicode string pointer as parameter.

Code:
short t[5];
t[0] = 116; // t
t[1] = 101; // e
t[2] = 115; // s
t[3] = 116; // t
t[4] = NULL;
STRING *strT = str_createw(t);
file_find(fhandle,strT);
//file_find(fhandle,t); // It also works



but not the whole field is oregano and the read pointer is located on the second byte of the coincidence so you need to move it back one byte.
Code:
file_seek (fhandle,-1,1);



I slightly remember having troubles with some 'str_...' functions with unicode too. In a fast search I found these three functions into my base code:
Code:
int str16_stri ( short *_s1, short *_s2 )
{
	int _pos = 0;
	for ( ; *_s1!=NULL; _s1++ )
	{
		short *_s1T = _s1;
		short *_s2T = _s2;
		for ( ; *_s2T!=NULL; _s2T++ )
		{
			if ( *_s1T != *_s2T )
				break;
			_s1T ++;
		}
		if ( *_s2T == NULL )
			return _pos;
		_pos += 1;
	}
	return -1;
}

int str16_len ( short *_s )
{
	int _pos = 0;
	for ( ; *_s!=NULL; _s++ )
		_pos += 1;
	return _pos;
}

BOOL str16_cmp ( short *_s1, short *_s2 )
{
	for ( ; *_s1!=NULL; _s1++ )
	{
		if ( *_s1 != *_s2 )
			return FALSE;
		_s2 ++;
	}
	if ( *_s2 == NULL )
		return TRUE;
	else
		return FALSE;
}



I needed to build up a TEXT struct filled of unicode strings in order to search for and compare specific strings anyway.

Salud!