Efficient Substr implementation  

I came up with this implementation of substring method. Anyone got ideas to make it more terse and more efficient?

bool substring(const char* str, const char* substr){
	const char *currentString = str, *backTrackString = str, *currSubstr = substr;
	while( strlen(backTrackString) >= strlen(substr) ){
		while( *currSubstr && *currentString++ == *currSubstr++);
		if( !*currSubstr ) return true;
		currentString = backTrackString++;
		currSubstr = substr;
	return false;

In particular, can we do without atleast one of the local variables - while still being as efficient or better? A more basic question - so you think this is efficient?