| From 0beb62f564072f3585762c9c55fe894485993b62 Mon Sep 17 00:00:00 2001 |
| From: Fabrice Fontaine <fontaine.fabrice@gmail.com> |
| Date: Tue, 10 Apr 2018 18:55:11 +0200 |
| Subject: [PATCH] gio: fix compilation without F_{S,G}ETPIPE_SZ |
| |
| Commit a5778ef7c51044147fe470ea1707dd297f44f880 broke compilation on |
| architectures without F_SETPIPE_SZ and F_GETPIPE_SZ such as or1k. |
| If those variables are undefined, put back previous behavior, buffer |
| size set to 1024 * 64 |
| |
| Fixes: |
| - http://autobuild.buildroot.net/results/398490e07343a931b25ca6ab5c90a75d7a073e9f |
| |
| (Modified by Philip Withnall <withnall@endlessm.com> to add an |
| explanatory comment.) |
| |
| Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> |
| |
| https://bugzilla.gnome.org/show_bug.cgi?id=795133 |
| --- |
| gio/gfile.c | 8 ++++++++ |
| 1 file changed, 8 insertions(+) |
| |
| diff --git a/gio/gfile.c b/gio/gfile.c |
| index 334ad8ec3..a67aad383 100644 |
| --- a/gio/gfile.c |
| +++ b/gio/gfile.c |
| @@ -3012,6 +3012,7 @@ splice_stream_with_progress (GInputStream *in, |
| if (!g_unix_open_pipe (buffer, FD_CLOEXEC, error)) |
| return FALSE; |
| |
| +#if defined(F_SETPIPE_SZ) && defined(F_GETPIPE_SZ) |
| /* Try a 1MiB buffer for improved throughput. If that fails, use the default |
| * pipe size. See: https://bugzilla.gnome.org/791457 */ |
| buffer_size = fcntl (buffer[1], F_SETPIPE_SZ, 1024 * 1024); |
| @@ -3029,6 +3030,13 @@ splice_stream_with_progress (GInputStream *in, |
| goto out; |
| } |
| } |
| +#else |
| + /* If #F_GETPIPE_SZ isn’t available, assume we’re on Linux < 2.6.35, |
| + * but ≥ 2.6.11, meaning the pipe capacity is 64KiB. Ignore the possibility of |
| + * running on Linux < 2.6.11 (where the capacity was the system page size, |
| + * typically 4KiB) because it’s ancient. See pipe(7). */ |
| + buffer_size = 1024 * 64; |
| +#endif |
| |
| g_assert (buffer_size > 0); |
| |
| -- |
| 2.13.0 |
| |