Files
UnrealEngineUWP/Engine/Source/Programs/UnrealBuildTool/System/ResponseFile.cs
Ben Marsh 20bf0eb6a1 Updating copyright notices to 2017 (copying from //Tasks/UE4/Dev-Copyright-2017).
#rb none
#lockdown Nick.Penwarden

[CL 3226823 by Ben Marsh in Main branch]
2016-12-08 08:52:44 -05:00

51 lines
1.5 KiB
C#

// Copyright 1998-2017 Epic Games, Inc. All Rights Reserved.
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace UnrealBuildTool
{
public class ResponseFile
{
[FlagsAttribute]
public enum CreateOptions
{
None = 0x0,
WriteEvenIfUnchanged = 0x1
}
/// <summary>
/// Creates a file from a list of strings; each string is placed on a line in the file.
/// </summary>
/// <param name="TempFileName">Name of response file</param>
/// <param name="Lines">List of lines to write to the response file</param>
public static FileReference Create(FileReference TempFileName, IEnumerable<string> Lines, CreateOptions Options = CreateOptions.None)
{
FileInfo TempFileInfo = new FileInfo(TempFileName.FullName);
if (TempFileInfo.Exists)
{
if ((Options & CreateOptions.WriteEvenIfUnchanged) != CreateOptions.WriteEvenIfUnchanged)
{
string Body = string.Join(Environment.NewLine, Lines);
// Reuse the existing response file if it remains unchanged
string OriginalBody = File.ReadAllText(TempFileName.FullName);
if (string.Equals(OriginalBody, Body, StringComparison.Ordinal))
{
return TempFileName;
}
}
// Delete the existing file if it exists and requires modification
TempFileInfo.IsReadOnly = false;
TempFileInfo.Delete();
TempFileInfo.Refresh();
}
FileItem.CreateIntermediateTextFile(TempFileName, string.Join(Environment.NewLine, Lines));
return TempFileName;
}
}
}