add method

void add(
  1. ArchiveFile file
)

Implementation

void add(ArchiveFile file) {
  if (_outputStream == null) {
    return;
  }

  // GNU tar files store extra long file names in a separate file
  if (file.name.length > 100) {
    final ts = TarFile();
    ts.filename = '././@LongLink';
    ts.fileSize = file.name.length;
    ts.mode = 0;
    ts.ownerId = 0;
    ts.groupId = 0;
    ts.lastModTime = 0;
    ts.content = file.name.codeUnits;
    ts.write(_outputStream);
  }

  final ts = TarFile();
  ts.filename = file.name;
  ts.fileSize = file.size;
  ts.mode = file.mode;
  ts.ownerId = file.ownerId;
  ts.groupId = file.groupId;
  ts.lastModTime = file.lastModTime;
  ts.content = file.content;
  if (file.isSymbolicLink) {
    ts.typeFlag = TarFile.TYPE_SYMBOLIC_LINK;
    ts.nameOfLinkedFile = file.nameOfLinkedFile;
  } else if (!file.isFile) {
    ts.typeFlag = TarFile.TYPE_DIRECTORY;
  }
  ts.write(_outputStream);
}