Exemplo n.º 1
0
FString FPackageName::FilenameToLongPackageName(const FString& InFilename)
{
	FString Result = InternalFilenameToLongPackageName(InFilename);

	// we don't support loading packages from outside of well defined places
	const bool bContainsDot       = Result.Contains(TEXT("."));
	const bool bContainsBackslash = Result.Contains(TEXT("\\"));
	const bool bContainsColon     = Result.Contains(TEXT(":"));

	if (bContainsDot || bContainsBackslash || bContainsColon)
	{
		FString InvalidChars;
		if (bContainsDot)
		{
			InvalidChars += TEXT(".");
		}
		if (bContainsBackslash)
		{
			InvalidChars += TEXT("\\");
		}
		if (bContainsColon)
		{
			InvalidChars += TEXT(":");
		}

		UE_LOG(LogPackageName, Fatal,TEXT("FilenameToLongPackageName failed to convert '%s'. Attempt result was '%s', but the path contains illegal characters '%s'"), *InFilename, *Result, *InvalidChars);
	}

	return Result;
}
bool FPackageName::TryConvertFilenameToLongPackageName(const FString& InFilename, FString& OutPackageName, FString* OutFailureReason)
{
	FString LongPackageName = InternalFilenameToLongPackageName(InFilename);

	// we don't support loading packages from outside of well defined places
	const bool bContainsDot = LongPackageName.Contains(TEXT("."), ESearchCase::CaseSensitive);
	const bool bContainsBackslash = LongPackageName.Contains(TEXT("\\"), ESearchCase::CaseSensitive);
	const bool bContainsColon = LongPackageName.Contains(TEXT(":"), ESearchCase::CaseSensitive);
	const bool bResult = !(bContainsDot || bContainsBackslash || bContainsColon);

	if (bResult)
	{
		OutPackageName = MoveTemp(LongPackageName);
	}
	else if (OutFailureReason != nullptr)
	{
		FString InvalidChars;
		if (bContainsDot)
		{
			InvalidChars += TEXT(".");
		}
		if (bContainsBackslash)
		{
			InvalidChars += TEXT("\\");
		}
		if (bContainsColon)
		{
			InvalidChars += TEXT(":");
		}
		*OutFailureReason = FString::Printf(TEXT("FilenameToLongPackageName failed to convert '%s'. Attempt result was '%s', but the path contains illegal characters '%s'"), *InFilename, *LongPackageName, *InvalidChars);
	}
	return bResult;
}
Exemplo n.º 3
0
bool FPackageName::TryConvertFilenameToLongPackageName(const FString& InFilename, FString& OutPackageName)
{
	FString Result = InternalFilenameToLongPackageName(InFilename);

	// we don't support loading packages from outside of well defined places
	if (Result.Contains(TEXT(".")) || Result.Contains(TEXT("\\")) || Result.Contains(TEXT(":")))
	{
		return false;
	}

	OutPackageName = MoveTemp(Result);
	return true;
}