summaryrefslogtreecommitdiff
path: root/net-misc/zsync
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2025-03-01 19:28:40 +0000
committerV3n3RiX <venerix@koprulu.sector>2025-03-01 19:28:40 +0000
commitd628c1f8493d09e3deb5d19971cd21691d8758e4 (patch)
tree7afecb9f9148ecf631ac2093143278e041cc5acd /net-misc/zsync
parent4b1be5ef874aaeb61a2116048e0c2312e53f8c69 (diff)
gentoo auto-resync : 01:03:2025 - 19:28:40
Diffstat (limited to 'net-misc/zsync')
-rw-r--r--net-misc/zsync/Manifest6
-rw-r--r--net-misc/zsync/files/zsync-0.6.2-c99.patch82
-rw-r--r--net-misc/zsync/files/zsync-0.6.2-unbundle-zlib.patch124
-rw-r--r--net-misc/zsync/files/zsync-0.6.2-warning-fixes.patch157
-rw-r--r--net-misc/zsync/zsync-0.6.2-r4.ebuild (renamed from net-misc/zsync/zsync-0.6.2-r3.ebuild)3
-rw-r--r--net-misc/zsync/zsync-0.6.2-r5.ebuild41
6 files changed, 411 insertions, 2 deletions
diff --git a/net-misc/zsync/Manifest b/net-misc/zsync/Manifest
index 17dfafbedd43..25f457225c36 100644
--- a/net-misc/zsync/Manifest
+++ b/net-misc/zsync/Manifest
@@ -1,6 +1,10 @@
+AUX zsync-0.6.2-c99.patch 3617 BLAKE2B 700ba9a58d46b857dc924b477bfd91e18935282f3632de08483277c5cfebfba25b32449de546644dd8e75121050ee6946274ec3205544f7764db4f7a16790f95 SHA512 0d529d3b62df494fc9df0a44198ee5d0aef95e4c53cce7d9cae1e77b9fd8395eeb730eb38eea9857c10ea7a44bd2dbc7d3850a68d5fc16a1d0660bb3912e0205
AUX zsync-0.6.2-musl-off_t-fix.patch 326 BLAKE2B 9907bac0ca55ebae23318555a0b150fb780049e8843070280158b7a4402c0b4c61befeeb457d1348b7bc0378007986e556c8129a0ec060589b72e40ccad0988f SHA512 f7d64eef956d6afb7018dbd368b4aeb63a0a14c7ba44a60153ce64a12a494463dc94c1325bdf8eac38ad2ac41166aaba80ea84f10ae4e68bf506b9c19407406d
+AUX zsync-0.6.2-unbundle-zlib.patch 4249 BLAKE2B 7863b3c31eba4df750bef101a7d17ce23f5e84333635239eb16902e53cb5c989a72cbc2e09417d601d060a5623008bf8b4972a99b548dd99fcc6d486c3218ff4 SHA512 7ee8feee77d53b6c3bb1f45d889dc74e83f91f7e7a206d6ef98f0aa1e3b5684c8dfd3ccea6c61a52f7214f2a29fcd6f627873a8400bd0fbfb82624b9d2d90c04
+AUX zsync-0.6.2-warning-fixes.patch 6097 BLAKE2B ccc4818d4354304ae07f4ff98b68f5750884a47fc4c104ec7a23ae216a28ba0ee54533663b0966fd14afdea79a0edf1a868e92c5d393586f1611f73d74ecca27 SHA512 5691049dfd94fe14e4236fea00c99ddcce213d8d17238725614ef57a2d555cd6469584736e7a10556ee06e058ab1dea5bed7f56e7f8a5b022dc633130a9d9122
AUX zsync-0.6.2-zlib-1.2.3-support.patch 7069 BLAKE2B 841778a6495e1e0853965b8e7c6b8f2df51d98e73806f78197ac147a9ed57331e9b13d17dbc92f13c0dbc6887d145946ce5dcf769d51234aac9d40ade2d4fe7a SHA512 b572510cb135f97d63df6d49e3f07ce91c30926c91d1096f73d4577be754bcb37c8106ac51a1a0a651d9e77b971b4fdbdc82380b081b2065183ffa95930bcd47
DIST zlib-1.2.3.tar.bz2 425209 BLAKE2B e4226371cbb4219d5f287bbb48a7bf6f8195b9b8de05c168238f39d82f53727f9a2090ceaac45032c6bbece9f839882cf0cd59c783d38be285eae0c02a30b895 SHA512 edae735960279d92acf58e1f4095c6392a7c2059b8f1d2c46648fc608a0fb06b392db2d073f4973f5762c034ea66596e769b95b3d26ad963a086b9b2d09825f2
DIST zsync-0.6.2.tar.bz2 245592 BLAKE2B 9e5a7538a2268d4d3042db44722546d2e76d69d28bd965a3674bf517b12429c4ac6dea86b022047d635163bfd7e71d7e332b5a831cbee7db2544b9ed56d3a4ee SHA512 56437594831f2320c532759805b5c51116c53c8848f14b54cfd9b76676d1d061abe7fc914264f496ed1c7922fbbd5b884166c855a2fb9eb1285f216e478c5f0d
-EBUILD zsync-0.6.2-r3.ebuild 1139 BLAKE2B fade6f795770c982e95a019f85fd55326167a853399360f4a210604311e66e20c177a4a9f3c6f3232c26a22f51b18b83ee38ab0e921befcb934f6a8cc10adbca SHA512 ce00c18d12a9bee8a0a2373a43709c23269ac09c68d52896f01eb3715b445ba1ed37adf3fdb5865d566d483366af737f55e85d7f6ad38851d35cb0aa95b1f09c
+EBUILD zsync-0.6.2-r4.ebuild 1176 BLAKE2B 0de612aa37eed227ca4707f732fba850d5d4d058350470aaacac769c8df90f8b720cc6d367823796f92e8ba116e925e3e6b61231334d40353bb0dbc02d55a0da SHA512 7708ec9e9e35a77334d5971c104b8a5569e22dc1f64e44175979eb21a59f175cdd69f438b0a6abb2f8272e4d87a726698c8cda84e2253e040b593216a5880d53
+EBUILD zsync-0.6.2-r5.ebuild 810 BLAKE2B 696ced50019603a417350bbbbc745cc93f72f33167e13f509f518c1a43ec65d4c7096a1d15a4140a54350775eee7c9f7f1364c399bcb8c42b6e30b97e68753a2 SHA512 e8f605b585ee2854da1e4b687442815d03e9ab3003274c869947c7ed6e78861a45a120b602cc6811a5850e2893729d30e182e51d6a319f26cbadbfc1d2d564a6
MISC metadata.xml 1324 BLAKE2B 6a0cf68e98964abcd423f9d5d9e293c5d4c152b1ed2fc98ab805927d2f0dcdda6a07e2a16bbe590bbbe23590e1fae99e4c618680d4db3864d7cec20b175a6656 SHA512 99151fb2267583e7f3174087a2758aebfcfbcb81196af87c7d4f84c847806f08ad35a361fbc3ade104a60fcd555b5110712b8569a9993bbfd0574992eb36704c
diff --git a/net-misc/zsync/files/zsync-0.6.2-c99.patch b/net-misc/zsync/files/zsync-0.6.2-c99.patch
new file mode 100644
index 000000000000..f71453129d35
--- /dev/null
+++ b/net-misc/zsync/files/zsync-0.6.2-c99.patch
@@ -0,0 +1,82 @@
+https://bugs.gentoo.org/921150
+https://sources.debian.org/data/main/z/zsync/0.6.2-7/debian/patches/fix-build-with-gcc-14.patch
+
+Description: Fix build with GCC-14
+Author: Marcos Talau <talau@debian.org>
+Bug-Debian: https://bugs.debian.org/1075710
+Forwarded: https://github.com/cph6/zsync/issues/20
+Last-Update: 2024-08-16
+
+--- a/client.c
++++ b/client.c
+@@ -392,7 +392,7 @@ int fetch_remaining_blocks_http(struct z
+ */
+ int fetch_remaining_blocks(struct zsync_state *zs) {
+ int n, utype;
+- const char *const *url = zsync_get_urls(zs, &n, &utype);
++ char **url = zsync_get_urls(zs, &n, &utype);
+ int *status; /* keep status for each URL - 0 means no error */
+ int ok_urls = n;
+
+@@ -452,7 +452,7 @@ extern long global_offset;
+ int main(int argc, char **argv) {
+ struct zsync_state *zs;
+ char *temp_file = NULL;
+- char **seedfiles = NULL;
++ void **seedfiles = NULL;
+ int nseedfiles = 0;
+ char *filename = NULL;
+ long long local_used;
+--- a/libzsync/zmap.c
++++ b/libzsync/zmap.c
+@@ -333,7 +333,7 @@ int zmap_search(const struct zmap* zm, l
+ * and in the order that it returned them, this condition is satisfied.
+ */
+ void configure_zstream_for_zdata(const struct zmap *zm, z_stream * zs,
+- long zoffset, long long *poutoffset) {
++ long zoffset, off_t *poutoffset) {
+ /* Find the zmap entry corresponding to this offset */
+ int i = zmap_search(zm, zoffset);
+
+--- a/libzsync/zmap.h
++++ b/libzsync/zmap.h
+@@ -29,7 +29,7 @@ struct zmap* zmap_make(const struct gzbl
+ void zmap_free(struct zmap*);
+
+ off_t* zmap_to_compressed_ranges(const struct zmap* zm, off_t* byterange, int nrange, int* num);
+-void configure_zstream_for_zdata(const struct zmap* zm, struct z_stream_s* zs, long zoffset, long long* poutoffset);
++void configure_zstream_for_zdata(const struct zmap* zm, struct z_stream_s* zs, long zoffset, off_t* poutoffset);
+
+ /* gzip flag byte */
+ #define GZ_ASCII_FLAG 0x01 /* bit 0 set: file probably ascii text */
+--- a/libzsync/zsync.c
++++ b/libzsync/zsync.c
+@@ -436,7 +436,7 @@ void zsync_progress(const struct zsync_s
+ * Note that these URLs could be for encoded versions of the target; a 'type'
+ * is returned in *type which tells libzsync in later calls what version of the
+ * target is being retrieved. */
+-const char *const *zsync_get_urls(struct zsync_state *zs, int *n, int *t) {
++char **zsync_get_urls(struct zsync_state *zs, int *n, int *t) {
+ if (zs->zmap && zs->nzurl) {
+ *n = zs->nzurl;
+ *t = 1;
+@@ -768,7 +768,7 @@ char *zsync_end(struct zsync_state *zs)
+ */
+ void zsync_configure_zstream_for_zdata(const struct zsync_state *zs,
+ struct z_stream_s *zstrm,
+- long zoffset, long long *poutoffset) {
++ long zoffset, off_t *poutoffset) {
+ configure_zstream_for_zdata(zs->zmap, zstrm, zoffset, poutoffset);
+ { /* Load in prev 32k sliding window for backreferences */
+ long long pos = *poutoffset;
+--- a/libzsync/zsync.h
++++ b/libzsync/zsync.h
+@@ -58,7 +58,7 @@ int zsync_submit_source_file(struct zsyn
+ * (the URL pointers are still referenced by the library, and are valid only until zsync_end).
+ */
+
+-const char * const * zsync_get_urls(struct zsync_state* zs, int* n, int* t);
++char ** zsync_get_urls(struct zsync_state* zs, int* n, int* t);
+
+ /* zsync_needed_byte_ranges - get the byte ranges needed from a URL.
+ * Returns the number of ranges in *num, and a malloc'd array (to be freed
diff --git a/net-misc/zsync/files/zsync-0.6.2-unbundle-zlib.patch b/net-misc/zsync/files/zsync-0.6.2-unbundle-zlib.patch
new file mode 100644
index 000000000000..4b78ba85683d
--- /dev/null
+++ b/net-misc/zsync/files/zsync-0.6.2-unbundle-zlib.patch
@@ -0,0 +1,124 @@
+https://sources.debian.org/data/main/z/zsync/0.6.2-7/debian/patches/devendor-zlib.patch
+
+Description: De-vendor zlib
+ Use the zlib as it is in the archive, not an embedded copy
+Author: Simon Quigley <tsimonq2@debian.org>
+Origin: vendor
+Forwarded: not-needed
+Last-Update: 2025-02-26
+--- a/configure.ac
++++ b/configure.ac
+@@ -38,6 +38,9 @@ X_DECL_H_ERRNO
+ dnl Solaris needs -lsocket - and we need this for the getaddrinfo test
+ AC_CHECK_LIB(socket,socket)
+
++AC_CHECK_LIB([z], [inflate], [], [AC_MSG_ERROR([zlib library not found])])
++AC_CHECK_HEADER([zlib.h], [], [AC_MSG_ERROR([zlib headers not found])])
++
+ AC_REPLACE_FUNCS(getaddrinfo)
+
+ dnl - Large file support if available
+@@ -65,6 +68,6 @@ X_C_COMPILE_FLAGS($ZS_CFLAGS -g -Wall -W
+ dnl --- output
+ AC_SUBST(ac_aux_dir)
+ AC_CONFIG_HEADERS([config.h])
+-AC_CONFIG_FILES([Makefile librcksum/Makefile zlib/Makefile libzsync/Makefile doc/Makefile])
++AC_CONFIG_FILES([Makefile librcksum/Makefile libzsync/Makefile doc/Makefile])
+ AC_OUTPUT
+
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -2,15 +2,15 @@
+ AUTOMAKE_OPTIONS = check-news
+ ACLOCAL_AMFLAGS = -I autotools
+
+-SUBDIRS = librcksum zlib libzsync doc
++SUBDIRS = librcksum libzsync doc
+
+ bin_PROGRAMS = zsyncmake zsync
+
+ zsyncmake_SOURCES = make.c makegz.c makegz.h format_string.h
+-zsyncmake_LDADD = libzsync/libzsync.a librcksum/librcksum.a zlib/libinflate.a zlib/libdeflate.a -lm
++zsyncmake_LDADD = libzsync/libzsync.a librcksum/librcksum.a -lz -lm
+
+ zsync_SOURCES = client.c http.c http.h url.c url.h progress.c progress.h base64.c format_string.h zsglobal.h
+-zsync_LDADD = libzsync/libzsync.a librcksum/librcksum.a zlib/libinflate.a $(LIBOBJS)
++zsync_LDADD = libzsync/libzsync.a librcksum/librcksum.a -lz $(LIBOBJS)
+
+ EXTRA_zsync_SOURCES = getaddrinfo.h
+
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -61,11 +61,10 @@ am_zsync_OBJECTS = client.$(OBJEXT) http
+ progress.$(OBJEXT) base64.$(OBJEXT)
+ zsync_OBJECTS = $(am_zsync_OBJECTS)
+ zsync_DEPENDENCIES = libzsync/libzsync.a librcksum/librcksum.a \
+- zlib/libinflate.a $(LIBOBJS)
++ $(LIBOBJS)
+ am_zsyncmake_OBJECTS = make.$(OBJEXT) makegz.$(OBJEXT)
+ zsyncmake_OBJECTS = $(am_zsyncmake_OBJECTS)
+-zsyncmake_DEPENDENCIES = libzsync/libzsync.a librcksum/librcksum.a \
+- zlib/libinflate.a zlib/libdeflate.a
++zsyncmake_DEPENDENCIES = libzsync/libzsync.a librcksum/librcksum.a
+ DEFAULT_INCLUDES = -I.@am__isrc@
+ depcomp = $(SHELL) $(top_srcdir)/autotools/depcomp
+ am__depfiles_maybe = depfiles
+@@ -252,11 +251,11 @@ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ AUTOMAKE_OPTIONS = check-news
+ ACLOCAL_AMFLAGS = -I autotools
+-SUBDIRS = librcksum zlib libzsync doc
++SUBDIRS = librcksum libzsync doc
+ zsyncmake_SOURCES = make.c makegz.c makegz.h format_string.h
+-zsyncmake_LDADD = libzsync/libzsync.a librcksum/librcksum.a zlib/libinflate.a zlib/libdeflate.a -lm
++zsyncmake_LDADD = libzsync/libzsync.a librcksum/librcksum.a -lz -lm
+ zsync_SOURCES = client.c http.c http.h url.c url.h progress.c progress.h base64.c format_string.h zsglobal.h
+-zsync_LDADD = libzsync/libzsync.a librcksum/librcksum.a zlib/libinflate.a $(LIBOBJS)
++zsync_LDADD = libzsync/libzsync.a librcksum/librcksum.a -lz $(LIBOBJS)
+ EXTRA_zsync_SOURCES = getaddrinfo.h
+
+ # From "GNU autoconf, automake and libtool" Vaughan, Elliston,
+--- a/libzsync/zmap.c
++++ b/libzsync/zmap.c
+@@ -287,7 +287,7 @@ off_t *zmap_to_compressed_ranges(const s
+ return consolidate_byteranges(zbyterange, num);
+ }
+
+-#include "zlib/zlib.h"
++#include <zlib.h>
+ /* zmap_search(self, offset)
+ * Find this offset in the Z-Map */
+ int zmap_search(const struct zmap* zm, long zoffset) {
+--- a/libzsync/zsync.c
++++ b/libzsync/zsync.c
+@@ -48,7 +48,7 @@
+ # include <dmalloc.h>
+ #endif
+
+-#include "zlib/zlib.h"
++#include <zlib.h>
+
+ #include "librcksum/rcksum.h"
+ #include "zsync.h"
+--- a/make.c
++++ b/make.c
+@@ -43,7 +43,7 @@
+ #include "librcksum/rcksum.h"
+ #include "libzsync/zmap.h"
+ #include "libzsync/sha1.h"
+-#include "zlib/zlib.h"
++#include <zlib.h>
+ #include "format_string.h"
+
+ /* We're only doing one file per run, so these are global state for the current
+--- a/makegz.c
++++ b/makegz.c
+@@ -20,7 +20,7 @@
+ #include <unistd.h>
+ #include <stdlib.h>
+
+-#include "zlib/zlib.h"
++#include <zlib.h>
+
+ #include <sys/types.h>
+ #include <sys/stat.h>
diff --git a/net-misc/zsync/files/zsync-0.6.2-warning-fixes.patch b/net-misc/zsync/files/zsync-0.6.2-warning-fixes.patch
new file mode 100644
index 000000000000..c15783604010
--- /dev/null
+++ b/net-misc/zsync/files/zsync-0.6.2-warning-fixes.patch
@@ -0,0 +1,157 @@
+(Note that despite the Debian description, it really seems largely about
+warning fixes instead with one zlib modernisation fix as well.)
+
+https://sources.debian.org/data/main/z/zsync/0.6.2-7/debian/patches/update-zlib-functions.patch
+
+Description: Update functions for zlib de-vendoring
+Author: Simon Quigley <tsimonq2@debian.org>
+Origin: vendor
+Forwarded: not-needed
+Last-Update: 2025-02-26
+--- a/libzsync/zsync.c
++++ b/libzsync/zsync.c
+@@ -151,7 +151,7 @@ struct zsync_state *zsync_begin(FILE * f
+ char *safelines = NULL;
+
+ /* Allocate memory for the object */
+- struct zsync_state *zs = calloc(sizeof *zs, 1);
++ struct zsync_state *zs = calloc(1, sizeof *zs);
+
+ if (!zs)
+ return NULL;
+@@ -210,7 +210,7 @@ struct zsync_state *zsync_begin(FILE * f
+ }
+ else if (!strcmp(buf, "Blocksize")) {
+ zs->blocksize = atol(p);
+- if (zs->blocksize < 0 || (zs->blocksize & (zs->blocksize - 1))) {
++ if (zs->blocksize & (zs->blocksize - 1)) {
+ fprintf(stderr, "nonsensical blocksize %ld\n", zs->blocksize);
+ free(zs);
+ return NULL;
+@@ -240,7 +240,8 @@ struct zsync_state *zsync_begin(FILE * f
+
+ zblock = malloc(nzblocks * sizeof *zblock);
+ if (zblock) {
+- if (fread(zblock, sizeof *zblock, nzblocks, f) < nzblocks) {
++ size_t nread = fread(zblock, sizeof *zblock, nzblocks, f);
++ if (nread < (size_t)nzblocks) {
+ fprintf(stderr, "premature EOF after Z-Map\n");
+ free(zs);
+ return NULL;
+@@ -701,7 +702,8 @@ static int zsync_recompress(struct zsync
+ p = skip_zhead(buf);
+ skip = 0;
+ }
+- if (fwrite(p, 1, r - (p - buf), zout) != r - (p - buf)) {
++ size_t out_len = r - (p - buf);
++ if (fwrite(p, 1, out_len, zout) != out_len) {
+ perror("fwrite");
+ rc = -1;
+ goto leave_it;
+@@ -714,8 +716,8 @@ static int zsync_recompress(struct zsync
+ rc = -1;
+ }
+ }
+- if (fclose(g) != 0) {
+- perror("close");
++ if (pclose(g) == -1) {
++ perror("pclose failed");
+ rc = -1;
+ }
+
+@@ -782,7 +784,7 @@ void zsync_configure_zstream_for_zdata(c
+ /* Fake an output buffer of 32k filled with data to zlib */
+ zstrm->next_out = wbuf + lookback;
+ zstrm->avail_out = 0;
+- updatewindow(zstrm, lookback);
++ inflateSetDictionary(zstrm, wbuf, lookback);
+ }
+ }
+
+@@ -922,10 +924,10 @@ static int zsync_receive_data_compressed
+ return 0;
+
+ /* Now set up for the downloaded block */
+- zr->strm.next_in = buf;
++ zr->strm.next_in = (Bytef *)buf;
+ zr->strm.avail_in = len;
+
+- if (zr->strm.total_in == 0 || offset != zr->strm.total_in) {
++ if (zr->strm.total_in == 0 || (uLong)offset != zr->strm.total_in) {
+ zsync_configure_zstream_for_zdata(zr->zs, &(zr->strm), offset,
+ &(zr->outoffset));
+
+@@ -939,7 +941,7 @@ static int zsync_receive_data_compressed
+ "data didn't align with block boundary in compressed stream\n");
+ return 1;
+ }
+- zr->strm.next_in = buf;
++ zr->strm.next_in = (Bytef *)buf;
+ zr->strm.avail_in = len;
+ }
+
+@@ -952,6 +954,7 @@ static int zsync_receive_data_compressed
+ switch (rc) {
+ case Z_STREAM_END:
+ eoz = 1;
++ [[fallthrough]];
+ case Z_BUF_ERROR:
+ case Z_OK:
+ if (zr->strm.avail_out == 0 || eoz) {
+--- a/libzsync/zmap.c
++++ b/libzsync/zmap.c
+@@ -359,5 +359,8 @@ void configure_zstream_for_zdata(const s
+ *poutoffset = zm->e[i].outbytes;
+
+ /* Align with the bitstream */
+- inflate_advance(zs, zoffset, zm->e[i].inbits % 8, !zm->e[i].blockcount);
++ int ret;
++ do {
++ ret = inflate(zs, Z_SYNC_FLUSH);
++ } while (ret == Z_OK);
+ }
+--- a/make.c
++++ b/make.c
+@@ -316,7 +316,7 @@ void do_zstream(FILE * fin, FILE * fout,
+ /* If we passed a block boundary in the uncompressed data, record the
+ * next available point at which we could stop or start decompression.
+ * Write a zmap delta with the 1st when we see the 2nd, etc */
+- if (want_zdelta && inflateSafePoint(&zs)) {
++ if (want_zdelta && inflateSyncPoint(&zs)) {
+ long long cur_in = header_bits + in_position(&zs);
+ if (midblock_in) {
+ write_zmap_delta(&prev_in, &prev_out, midblock_in,
+@@ -718,7 +718,7 @@ int main(int argc, char **argv) {
+ read_stream_write_blocksums(instream, tf);
+
+ { /* Decide how long a rsum hash and checksum hash per block we need for this file */
+- seq_matches = len > blocksize ? 2 : 1;
++ seq_matches = ((off_t)len > (off_t)blocksize) ? 2 : 1;
+ rsum_len = ceil(((log(len) + log(blocksize)) / log(2) - 8.6) / seq_matches / 8);
+
+ /* min and max lengths of rsums to store */
+@@ -836,7 +836,7 @@ int main(int argc, char **argv) {
+ fprintf(fout, "MTime: %s\n", buf);
+ }
+ else {
+- fprintf(stderr, "error converting %d to struct tm\n", mtime);
++ fprintf(stderr, "error converting %ld to struct tm\n", (long)mtime);
+ }
+ }
+ }
+--- a/http.c
++++ b/http.c
+@@ -554,9 +554,10 @@ static int range_fetch_set_url(struct ra
+ if (rf->authh) free(rf->authh);
+
+ /* Get host:port for Host: header */
+- if (strcmp(cport, "http") != 0)
+- snprintf(rf->hosth, sizeof(rf->hosth), "%s:%s", hostn, cport);
+- else
++ if (strcmp(cport, "http") != 0) {
++ strncpy(rf->hosth, hostn, sizeof(rf->hosth) - 1);
++ rf->hosth[sizeof(rf->hosth) - 1] = '\0';
++ } else
+ snprintf(rf->hosth, sizeof(rf->hosth), "%s", hostn);
+
+ if (proxy) {
diff --git a/net-misc/zsync/zsync-0.6.2-r3.ebuild b/net-misc/zsync/zsync-0.6.2-r4.ebuild
index 798fb552ab27..f878a449a366 100644
--- a/net-misc/zsync/zsync-0.6.2-r3.ebuild
+++ b/net-misc/zsync/zsync-0.6.2-r4.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -22,6 +22,7 @@ KEYWORDS="amd64 ~arm ppc ppc64 x86"
PATCHES=(
"${FILESDIR}"/${PN}-0.6.2-musl-off_t-fix.patch
+ "${FILESDIR}"/${PN}-0.6.2-c99.patch
)
src_prepare() {
diff --git a/net-misc/zsync/zsync-0.6.2-r5.ebuild b/net-misc/zsync/zsync-0.6.2-r5.ebuild
new file mode 100644
index 000000000000..9e28818bb6ce
--- /dev/null
+++ b/net-misc/zsync/zsync-0.6.2-r5.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+DESCRIPTION="Partial/differential file download client over HTTP using the rsync algorithm"
+HOMEPAGE="http://zsync.moria.org.uk/"
+SRC_URI="
+ http://zsync.moria.org.uk/download/${P}.tar.bz2
+"
+
+LICENSE="Artistic-2"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86"
+
+RDEPEND="sys-libs/zlib"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.6.2-musl-off_t-fix.patch
+ "${FILESDIR}"/${PN}-0.6.2-c99.patch
+ "${FILESDIR}"/${PN}-0.6.2-unbundle-zlib.patch
+ "${FILESDIR}"/${PN}-0.6.2-warning-fixes.patch
+)
+
+src_prepare() {
+ default
+
+ # Drop bundled zlib
+ rm -r zlib || die
+
+ eautoreconf
+}
+
+src_install() {
+ dobin zsync zsyncmake
+ dodoc NEWS README
+ doman doc/zsync.1 doc/zsyncmake.1
+}