aboutsummaryrefslogtreecommitdiffstats
path: root/main/apk-tools/0001-io-fix-posix_fallocate-failure-handling.patch
blob: 662d40b1ca797a95adae29c2a13a07d6311c0dbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
From 19356dfbd6b3e7d4880d29b1f4b5c0cb665eb467 Mon Sep 17 00:00:00 2001
From: Natanael Copa <ncopa@alpinelinux.org>
Date: Fri, 11 Sep 2015 16:16:26 +0200
Subject: [PATCH] io: fix posix_fallocate failure handling

We need fall back to a splice buffer if posix_fallocate call fails due
to file being a device (eg tty) or a pipe. This fixes apk fetch --stdout.
---
 src/io.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/io.c b/src/io.c
index a321c0c..65851be 100644
--- a/src/io.c
+++ b/src/io.c
@@ -149,7 +149,7 @@ size_t apk_istream_splice(void *stream, int fd, size_t size,
 			if (r == 0)
 				mmapbase = mmap(NULL, size, PROT_READ | PROT_WRITE,
 						MAP_SHARED, fd, 0);
-			else if (r != ENOSYS)
+			else if (r == EBADF || r == EFBIG || r == ENOSPC || r == EIO)
 				return -r;
 		}
 		if (bufsz > 2*1024*1024)
-- 
2.5.1