<feed xmlns='http://www.w3.org/2005/Atom'>
<title>xavi/slcl/zip.c, branch libweb-configure</title>
<subtitle>Small and lightweight cloud storage written in C99 and POSIX.1-2008.
</subtitle>
<id>https://gitea.privatedns.org/xavi/slcl/atom?h=libweb-configure</id>
<link rel='self' href='https://gitea.privatedns.org/xavi/slcl/atom?h=libweb-configure'/>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/'/>
<updated>2025-10-10T07:40:34+00:00</updated>
<entry>
<title>zip.c: Fix endless loop on empty archives</title>
<updated>2025-10-10T07:40:34+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-10T07:40:34+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=942559d321551e93cd6bae0b03de03e7cc13042c'/>
<id>urn:sha1:942559d321551e93cd6bae0b03de03e7cc13042c</id>
<content type='text'>
When an empty directory is to be downloaded, z-&gt;lread would always equal
zero because read_file is never called.

Therefore, it is more sensible not to assume any number of bytes, and
just dump as much data as possible into buf.
</content>
</entry>
<entry>
<title>zip.c: Remove unused variable</title>
<updated>2025-10-10T07:40:18+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-10T07:40:18+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=80d179f9fe013d727f571f4730ebbe4d228c9382'/>
<id>urn:sha1:80d179f9fe013d727f571f4730ebbe4d228c9382</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use free function pointer for chunk/step</title>
<updated>2025-10-08T00:03:17+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-07T23:59:05+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=805630dbfcd409a5d49bc89102f4183b71f713f9'/>
<id>urn:sha1:805630dbfcd409a5d49bc89102f4183b71f713f9</id>
<content type='text'>
libweb now supports deallocating user-defined data whenever an error
occurs during a chunked transfer or an asynchronous HTTP response, thus
avoiding memory leaks.
</content>
</entry>
<entry>
<title>Implement directory download as ZIP</title>
<updated>2025-10-08T00:03:05+00:00</updated>
<author>
<name>Xavier Del Campo Romero</name>
<email>xavi92@disroot.org</email>
</author>
<published>2025-10-06T21:02:51+00:00</published>
<link rel='alternate' type='text/html' href='https://gitea.privatedns.org/xavi/slcl/commit/?id=00dd37604d50cbf3fb27ec0631b4d4b6d2ee893a'/>
<id>urn:sha1:00dd37604d50cbf3fb27ec0631b4d4b6d2ee893a</id>
<content type='text'>
Thanks to the fdzipstream library [1] and zlib [2], it is possible to
generate ZIP files on-the-fly, therefore requiring no extra disk space
usage and only a small amount of memory.

Unfortunately, as of the time of this writing fdzipstream is not
packaged by any distributions yet [3], so it had to be imported as a git
submodule as a workaround.

While libarchive [4] could be an interesting alternative, writing ZIP
files is only supported by very recent versions (&gt;= 3.8.0), which are
still not packaged by many distributions [5], either.

Moreover, libarchive is a package with several dependencies other than
zlib and is significantly larger compared to fdzipstreams, so
fdzipstreams was ultimately considered a better fit for this purpose.

[1]: https://github.com/CTrabant/fdzipstream.git
[2]: http://zlib.net/
[3]: https://repology.org/projects/?search=fdzipstream
[4]: https://www.libarchive.org/
[5]: https://repology.org/project/libarchive/versions
</content>
</entry>
</feed>
