summaryrefslogtreecommitdiff
path: root/devel/p5-Sys-Syscall/files/patch-lib__Sys__Syscall.pm
blob: 1b97c1c6bf2af0e843bb2056849f1d2b6370339b (plain) (blame)
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
28
29
30
--- lib/Sys/Syscall.pm.orig	2010-04-18 17:51:10.000000000 -0800
+++ lib/Sys/Syscall.pm	2012-04-09 08:39:07.000000000 -0800
@@ -2,7 +2,7 @@
 
 package Sys::Syscall;
 use strict;
-use POSIX qw(ENOSYS SEEK_CUR);
+use POSIX qw(ENOSYS EAGAIN SEEK_CUR);
 
 require Exporter;
 use vars qw(@ISA @EXPORT_OK %EXPORT_TAGS $VERSION);
@@ -180,12 +180,14 @@
                      0,           # struct sf_hdtr *hdtr
                      $sbytes_buf, # off_t *sbytes
                      0);          # flags
-    return $rv if $rv < 0;
+    return $rv if $rv < 0 && $! != EAGAIN;
 
 
-    my $set = unpack("L", $sbytes_buf);
-    POSIX::lseek($_[1]+0, SEEK_CUR, $set);
-    return $set;
+    if (my $set = unpack("L", $sbytes_buf)) {
+	    POSIX::lseek($_[1]+0, $set, SEEK_CUR);
+	    return $set;
+    }
+    return $rv < 0 ? $rv : 0;
 }