ddn.archive.ar
ddn.archive.ar
AR archive reader and writer implementing ddn.api.archive.
Supports the System V / GNU AR format used for Unix .a static libraries and .deb packages. Long filenames are handled via the BSD `//` extended name mechanism.
Copyright
BSD-3-Clause
struct ArEntry
Module Initializers 1
shared static this
()Types 3
Fields
string pathulong dataOffsetulong sizeuint mtimeuint uiduint giduint modeclassArReader : ArchiveReader
Fields
private const(ubyte)[] _dataprivate ReadOptions _optsprivate bool _closedprivate ArEntry[] _entriesprivate size_t _iterIndexprivate bool _iteratingprivate ArchiveProgressCallback _progressCallbackprivate string _longNamesMethods
void setProgressCallback(ArchiveProgressCallback callback)bool contains(string path)void readContent(ref const EntryInfo entry, ContentSink sink)void extractAll(string destDir)void close()private
void parseArchive()Constructors
this(const(ubyte)[] data, ReadOptions opts)classArWriter : ArchiveWriter
Fields
private ContentSink _sinkprivate WriteOptions _optsprivate bool _finishedprivate bool _closedprivate ulong _bytesWrittenprivate size_t _entriesWrittenprivate ArchiveProgressCallback _progressCallbackprivate size_t _longNamesLengthMethods
void setOutputSink(ContentSink sink)void setProgressCallback(ArchiveProgressCallback callback)void addDirectory(string path, FilePermissions perms = FilePermissions.init)void addFile(string path, const(ubyte)[] content,
EntryWriteOptions opts = EntryWriteOptions.init)void addFile(string path, scope const(ubyte)[] delegate() source,
ulong size = 0, EntryWriteOptions opts = EntryWriteOptions.init)void addFileFrom(string archivePath, string filesystemPath,
EntryWriteOptions opts = EntryWriteOptions.init)void addSymlink(string path, string target)void addHardlink(string path, string target)void removeEntry(string path)void updateEntry(string path, const(ubyte)[] content,
EntryWriteOptions opts = EntryWriteOptions.init)void setComment(string comment)void finish()void close()private
void writeGlobalHeader()private
void writeEntry(string name, const(ubyte)[] content, FilePermissions perms)private
void emit(const(ubyte)[] data)Constructors
this(ContentSink sink, WriteOptions opts)Functions 7
private fn
ulong parseArField(const(ubyte) * field, size_t length) pure nothrowParse an ASCII decimal field from an AR header, stripping trailing spaces.private fn
void writeArField(ubyte * field, size_t length, ulong value) @trusted nothrowWrite an ASCII decimal value into an AR header field, space-padded.private fn
void writeArOctalField(ubyte * field, size_t length, ulong value) @trusted nothrowWrite an ASCII octal value into an AR header field, space-padded.private fn
string readArString(const(ubyte) * field, size_t length) pure nothrowRead a NUL-terminated string from an AR header field.fn
ArchiveReader makeArReader(const(ubyte)[] data, ReadOptions opts)fn
ArchiveWriter makeArWriter(ContentSink sink, WriteOptions opts)fn
ArchiveFormat detectArFormat(const(ubyte)[] header)Variables 3
private enumvar
AR_MAGIC = "!<arch>\x0A"private enumvar
AR_FMAG = "\x60\x0A"private enumvar
AR_HEADER_SIZE = 60