[patch] devel/p5-Sys-Syscall: fix sendfile_freebsd

Mel Flynn rflynn at acsalaska.net
Mon Apr 9 18:56:33 UTC 2012


>Submitter-Id:	current-users
>Originator:	Mel Flynn
>Organization:	
>Confidential:	no 
>Synopsis:	[patch] devel/p5-Sys-Syscall: fix sendfile_freebsd
>Severity:	serious
>Priority:	low
>Category:	ports
>Class:		sw-bug
>Release:	FreeBSD 8.2-STABLE amd64
>Environment:
System: FreeBSD datakitty.lan.rachie.is-a-geek.net 8.2-STABLE FreeBSD 8.2-STABLE #6 r230977: Sun Feb 5 06:20:11 AKST 2012 mel at datakitty.lan.rachie.is-a-geek.net:/data/obj/data/RELENG_8/src/sys/GENERIC amd64


>Description:
The sendfile implementation in Sys-Syscall does not actually work,
due to reversal of arguments in POSIX::lseek and incorrect handling of EAGAIN.

>How-To-Repeat:
	
>Fix:

Obtained from: https://rt.cpan.org/Public/Bug/Display.html?id=17326
 with slight modification.

--- devel__p5-Sys-Syscall.patch begins here ---
diff -urN --exclude CVS --exclude '*~' --exclude '.#*' --exclude '*.orig' --exclude '*.rej' devel/p5-Sys-Syscall/Makefile /usr/ports/devel/p5-Sys-Syscall/Makefile
--- devel/p5-Sys-Syscall/Makefile.orig	2010-05-10 05:11:25.000000000 -0800
+++ devel/p5-Sys-Syscall/Makefile	2012-04-09 10:47:36.000000000 -0800
@@ -7,6 +7,7 @@
 
 PORTNAME=	Sys-Syscall
 PORTVERSION=	0.23
+PORTREVISION=	1
 CATEGORIES=	devel perl5
 MASTER_SITES=	CPAN
 MASTER_SITE_SUBDIR=	Sys
diff -urN --exclude CVS --exclude '*~' --exclude '.#*' --exclude '*.orig' --exclude '*.rej' devel/p5-Sys-Syscall/files/patch-lib__Sys__Syscall.pm /usr/ports/devel/p5-Sys-Syscall/files/patch-lib__Sys__Syscall.pm
--- /dev/null	1969-12-31 14:00:00.000000000 -1000
+++ devel/p5-Sys-Syscall/files/patch-lib__Sys__Syscall.pm	2012-04-09 09:55:22.000000000 -0800
@@ -0,0 +1,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);
+ use Config;
+ 
+ require Exporter;
+@@ -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;
+ }
+ 
+ 
--- devel__p5-Sys-Syscall.patch ends here ---



More information about the freebsd-perl mailing list