ports/net/trickle/files/patch-trickle-overload.c
Dmitry Marakasov 7ecb7efd16 - Switch to USES=localbase
- Switch to options helpers
- Regenerate patches
2016-12-18 09:05:44 +00:00

105 lines
2.4 KiB
C

--- trickle-overload.c.orig 2004-12-13 01:21:53 UTC
+++ trickle-overload.c
@@ -61,6 +61,7 @@
#define SD_INSELECT 0x01
+
struct sockdesc {
int sock;
int flags;
@@ -141,8 +142,12 @@ DECLARE(dup, int, (int));
DECLARE(dup2, int, (int, int));
#ifdef HAVE_SENDFILE
+#ifdef __FreeBSD__
+DECLARE(sendfile, int, (int, int, off_t, size_t, struct sf_hdtr *, off_t *, int));
+#else
DECLARE(sendfile, ssize_t, (int, int, off_t *, size_t));
#endif
+#endif
static int delay(int, ssize_t *, short);
static struct timeval *getdelay(struct sockdesc *, ssize_t *, short);
@@ -202,15 +207,11 @@ trickle_init(void)
GETADDR(read);
GETADDR(readv);
-#ifndef __FreeBSD__
GETADDR(recv);
-#endif /* !__FreeBSD__ */
GETADDR(recvfrom);
GETADDR(writev);
-#ifndef __FreeBSD__
GETADDR(send);
-#endif /* !__FreeBSD__ */
GETADDR(sendto);
GETADDR(select);
@@ -701,7 +702,6 @@ readv(int fd, const struct iovec *iov, i
return (ret);
}
-#ifndef __FreeBSD__
ssize_t
recv(int sock, void *buf, size_t len, int flags)
{
@@ -730,7 +730,6 @@ recv(int sock, void *buf, size_t len, in
return (ret);
}
-#endif /* !__FreeBSD__ */
#ifdef __sun__
ssize_t
@@ -832,7 +831,6 @@ writev(int fd, const struct iovec *iov,
return (ret);
}
-#ifndef __FreeBSD__
ssize_t
send(int sock, const void *buf, size_t len, int flags)
{
@@ -862,7 +860,6 @@ send(int sock, const void *buf, size_t l
return (ret);
}
-#endif /* !__FreeBSD__ */
ssize_t
sendto(int sock, const void *buf, size_t len, int flags, const struct sockaddr *to,
@@ -1004,11 +1001,20 @@ accept(int sock, struct sockaddr *addr,
}
#ifdef HAVE_SENDFILE
+#ifdef __FreeBSD__
+int
+sendfile(int out_fd, int in_fd, off_t offset, size_t count, struct sf_hdtr *hdtr, off_t *sbytes, int flags)
+#else
ssize_t
sendfile(int out_fd, int in_fd, off_t *offset, size_t count)
+#endif
{
size_t inbytes = count, outbytes = count, bytes;
+#ifdef __FreeBSD__
+ int ret = 0;
+#else
ssize_t ret = 0;
+#endif
INIT;
@@ -1021,8 +1027,11 @@ sendfile(int out_fd, int in_fd, off_t *o
/* This is a slightly ugly hack. */
bytes = MIN(inbytes, outbytes);
if (bytes > 0)
+#ifdef __FreeBSD__
+ ret = (*libc_sendfile)(out_fd, in_fd, offset, bytes, hdtr, sbytes, flags);
+#else
ret = (*libc_sendfile)(out_fd, in_fd, offset, bytes);
-
+#endif
return (ret);
}
#endif /* HAVE_SENDFILE */