if (i >= l) break;
BOOL RecursiveCreateDirectory(LPCTSTR path_in){	TCHAR path[MAX_PATH], hole_path[MAX_PATH];	_tcscpy(hole_path, path_in);	int drv_len = 0;	LPCTSTR d;	for(d=hole_path; *d && *d!='/' && *d!='\\'; ++d) {		++drv_len;		if (*d == ':')			break;	}	LPTSTR dir = hole_path + drv_len;	int l;	LPTSTR p = hole_path + (l=_tcslen(hole_path));	while(--p>=hole_path && (*p=='/' || *p=='\\'))		*p = '\0';	WIN32_FIND_DATA w32fd;	HANDLE hFind = FindFirstFile(hole_path, &w32fd);	if (hFind == INVALID_HANDLE_VALUE) {		_tcsncpy(path, hole_path, drv_len);		int i = drv_len;		for(p=dir; *p=='/'||*p=='\\'; p++)			path[i++] = *p++;		for(; i<l; i++) {			memcpy(path, hole_path, i*sizeof(TCHAR));			for(; hole_path[i] && hole_path[i]!='/' && hole_path[i]!='\\'; i++)				path[i] = hole_path[i];			path[i] = '\0';			if (i >= l)				break;			hFind = FindFirstFile(path, &w32fd);			if (hFind != INVALID_HANDLE_VALUE)				FindClose(hFind);			else {				LOG(FmtString(TEXT("CreateDirectory(\"%s\")"), path));				if (!CreateDirectory(path, 0))					return FALSE;			}		}	} else		FindClose(hFind);	return TRUE;}