'Writes a symlink into the archive.'

def WriteSymlink(self, src_arcname, dst_arcname):

    if (not self._stream):
        raise ArchiveAlreadyClosedError('Attempting    to    write    to    a    ZIP    archive    that    was    already    closed.')
    src_arcname = SmartStr(src_arcname)
    dst_arcname = SmartStr(dst_arcname)
    zinfo = zipfile.ZipInfo(dst_arcname)
    zinfo.external_attr = ((420 | 40960) << 16)
    zinfo.create_system = 3
    zinfo.extra = struct.pack('<HHIHIHHs', 30062, (len(src_arcname) + 14), 0, 40960, 0, 0, 0, src_arcname)
    self._zip_fd.writestr(zinfo, src_arcname)
    return self._stream.GetValueAndReset()
