Files
dotnet-packaging/Packaging.Targets/IO/ArFileCreator.cs
2017-10-06 23:25:58 +02:00

44 lines
1.2 KiB
C#

using System;
using System.IO;
using System.Text;
namespace Packaging.Targets.IO
{
public static class ArFileCreator
{
public static void WriteMagic(Stream output)
{
var wr = new StreamWriter(output);
wr.Write("!<arch>\n");
wr.Flush();
}
public static void WriteEntry(Stream output, string name, LinuxFileMode mode, string data)
=> WriteEntry(output, name, mode, new MemoryStream(Encoding.UTF8.GetBytes(data)));
public static void WriteEntry(Stream output, string name, LinuxFileMode mode, Stream data)
{
var hdr = new ArHeader
{
EndChar = "`\n",
FileMode = mode,
FileName = name,
FileSize = (uint)data.Length,
GroupId = 0,
OwnerId = 0,
LastModified = DateTimeOffset.UtcNow
};
WriteEntry(output, hdr, data);
}
public static void WriteEntry(Stream output, ArHeader header, Stream data)
{
output.WriteStruct(header);
data.CopyTo(output);
if (output.Position % 2 != 0)
{
output.WriteByte(0);
}
}
}
}