decomp: fallback to write() if Linux vmsplice returns ENOSYS
authorRémi Denis-Courmont <rdenis@simphalempin.com>
Tue, 13 Jan 2009 20:36:21 +0000 (22:36 +0200)
committerRémi Denis-Courmont <rdenis@simphalempin.com>
Tue, 13 Jan 2009 20:58:20 +0000 (22:58 +0200)
(Since we are always dealing with a pipe, it cannot return EINVAL)

modules/stream_filter/decomp.c

index f89d16d..7ec7b51 100644 (file)
@@ -120,9 +120,9 @@ static void *Thread (void *data)
                 struct iovec iov = { buf + i, (len - i) & ~page_mask, };
                 j = vmsplice (fd, &iov, 1, SPLICE_F_GIFT);
             }
-#else
-            j = write (fd, buf + i, len - i);
+            if (j == -1 && errno == ENOSYS) /* vmsplice() not supported */
 #endif
+            j = write (fd, buf + i, len - i);
             if (j <= 0)
             {
                 if (j == 0)