forked from lix-project/lix
nix-daemon: Fix splice faking on non-Linux
This commit is contained in:
parent
8bf378e999
commit
3f4d3f8a1a
|
@ -32,14 +32,14 @@ using namespace nix;
|
||||||
|
|
||||||
#ifndef __linux__
|
#ifndef __linux__
|
||||||
#define SPLICE_F_MOVE 0
|
#define SPLICE_F_MOVE 0
|
||||||
static ssize_t splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out, size_t len, unsigned int flags)
|
static ssize_t splice(int fd_in, void *off_in, int fd_out, void *off_out, size_t len, unsigned int flags)
|
||||||
{
|
{
|
||||||
/* We ignore most parameters, we just have them for conformance with the linux syscall */
|
/* We ignore most parameters, we just have them for conformance with the linux syscall */
|
||||||
char buf[8192];
|
char buf[8192];
|
||||||
auto read_count = read(fd_in, buf, sizeof(buf));
|
auto read_count = read(fd_in, buf, sizeof(buf));
|
||||||
if (read_count == -1)
|
if (read_count == -1)
|
||||||
return read_count;
|
return read_count;
|
||||||
auto write_count = decltype<read_count>(0);
|
auto write_count = decltype(read_count)(0);
|
||||||
while (write_count < read_count) {
|
while (write_count < read_count) {
|
||||||
auto res = write(fd_out, buf + write_count, read_count - write_count);
|
auto res = write(fd_out, buf + write_count, read_count - write_count);
|
||||||
if (res == -1)
|
if (res == -1)
|
||||||
|
|
Loading…
Reference in a new issue