Still waiting for an OK.

bluhm

On Wed, Sep 26, 2012 at 12:50:34AM +0200, Alexander Bluhm wrote:
> Hi,
> 
> I have updated BSD::stat to 1.33 which gives us the new functions
> utimes() and lutimes().  Unfortunately lutimes() is specific to
> FreeBSD.  So I emulated it with OpenBSD utimensat() and added a
> test.
> 
> ok?
> 
> bluhm
> 
> Index: devel/p5-BSD-stat/Makefile
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/ports/devel/p5-BSD-stat/Makefile,v
> retrieving revision 1.12
> diff -u -p -r1.12 Makefile
> --- devel/p5-BSD-stat/Makefile        30 Aug 2012 21:16:14 -0000      1.12
> +++ devel/p5-BSD-stat/Makefile        25 Sep 2012 21:38:27 -0000
> @@ -4,8 +4,7 @@ SHARED_ONLY =         Yes
>  
>  COMMENT =            stat() with BSD 4.4 extentions
>  
> -DISTNAME =           BSD-stat-1.21
> -REVISION =           5
> +DISTNAME =           BSD-stat-1.33
>  
>  CATEGORIES =         devel
>  
> @@ -14,7 +13,7 @@ MAINTAINER =                Alexander Bluhm <bluhm@ope
>  # perl
>  PERMIT_PACKAGE_CDROM =       Yes
>  PERMIT_PACKAGE_FTP = Yes
> -PERMIT_DISTFILES_CDROM = Yes
> +PERMIT_DISTFILES_CDROM =Yes
>  PERMIT_DISTFILES_FTP =       Yes
>  
>  WANTLIB +=           c
> Index: devel/p5-BSD-stat/distinfo
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/ports/devel/p5-BSD-stat/distinfo,v
> retrieving revision 1.2
> diff -u -p -r1.2 distinfo
> --- devel/p5-BSD-stat/distinfo        5 Apr 2007 15:37:57 -0000       1.2
> +++ devel/p5-BSD-stat/distinfo        25 Sep 2012 21:25:57 -0000
> @@ -1,5 +1,2 @@
> -MD5 (BSD-stat-1.21.tar.gz) = 3Yn7dPVXivQRJPguabmVTQ==
> -RMD160 (BSD-stat-1.21.tar.gz) = IXWyZmD50sH7PhaCBLB3bbSzQrg=
> -SHA1 (BSD-stat-1.21.tar.gz) = JeLYP2xVsXpO1eA15EnpvEatRv8=
> -SHA256 (BSD-stat-1.21.tar.gz) = Z56R1HfciIvcvgSnLL3THzIC3b6OnVa4GWTv17u86xo=
> -SIZE (BSD-stat-1.21.tar.gz) = 8805
> +SHA256 (BSD-stat-1.33.tar.gz) = SFVSgwwpIQRXqshvI5vOl1GhdHDVci3TTbMK3X3XbHg=
> +SIZE (BSD-stat-1.33.tar.gz) = 10479
> Index: devel/p5-BSD-stat/patches/patch-stat_xs
> ===================================================================
> RCS file: devel/p5-BSD-stat/patches/patch-stat_xs
> diff -N devel/p5-BSD-stat/patches/patch-stat_xs
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ devel/p5-BSD-stat/patches/patch-stat_xs   25 Sep 2012 22:42:43 -0000
> @@ -0,0 +1,36 @@
> +$OpenBSD$
> +--- stat.xs.orig     Tue Aug 21 12:06:12 2012
> ++++ stat.xs  Wed Sep 26 00:42:32 2012
> +@@ -7,8 +7,9 @@
> + #include "XSUB.h"
> + #include <sys/types.h>
> + #include <sys/stat.h>
> +-#include <unistd.h>
> + #include <sys/time.h>
> ++#include <fcntl.h>
> ++#include <unistd.h>
> + 
> + /*
> +  * Perl prior to 5.6.0 lacks newSVuv()
> +@@ -137,12 +138,21 @@ xs_utimes(double atime, double mtime, char *path){
> + 
> + static int
> + xs_lutimes(double atime, double mtime, char *path){
> ++#ifdef __OpenBSD__
> ++    struct timespec times[2];
> ++    times[0].tv_sec = (int)atime;
> ++    times[0].tv_nsec = (int)((atime - times[0].tv_sec) * 1e9);
> ++    times[1].tv_sec = (int)mtime;
> ++    times[1].tv_nsec = (int)((mtime - times[1].tv_sec) * 1e9);
> ++    int err = utimensat(AT_FDCWD, path, times, AT_SYMLINK_NOFOLLOW);
> ++#else
> +     struct timeval times[2];
> +     times[0].tv_sec = (int)atime;
> +     times[0].tv_usec = (int)((atime - times[0].tv_sec) * 1e6);
> +     times[1].tv_sec = (int)mtime;
> +     times[1].tv_usec = (int)((mtime - times[1].tv_sec) * 1e6);
> +     int err = lutimes(path, times);
> ++#endif
> +     return setbang(err);
> + }
> + 
> Index: devel/p5-BSD-stat/patches/patch-t_utimes_t
> ===================================================================
> RCS file: devel/p5-BSD-stat/patches/patch-t_utimes_t
> diff -N devel/p5-BSD-stat/patches/patch-t_utimes_t
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ devel/p5-BSD-stat/patches/patch-t_utimes_t        25 Sep 2012 22:28:11 
> -0000
> @@ -0,0 +1,27 @@
> +$OpenBSD$
> +--- t/utimes.t.orig  Tue Aug 21 12:06:22 2012
> ++++ t/utimes.t       Wed Sep 26 00:28:08 2012
> +@@ -5,7 +5,7 @@
> + use strict;
> + use warnings;
> + use BSD::stat;
> +-use Test::More tests => 5;
> ++use Test::More tests => 8;
> + use File::Spec;
> + 
> + my $target = File::Spec->catfile('t', "test$$");
> +@@ -20,8 +20,13 @@ $st = stat($wfh);
> + close $wfh;
> + 
> + symlink $target, $symlink or die "symlink $target, $symlink : $!";
> +-ok lutimes(0, 0, $symlink), "lutimes($when, $when, $symlink)";
> ++ok lutimes(0, 0, $symlink), "lutimes(0, 0, $symlink)";
> + is lstat($symlink)->mtime, 0, "lutimes() does touch $symlink";
> + is lstat($target)->mtime, 1234567890, "lutimes() leaves $target";
> ++
> ++$when = 1234.5678;
> ++ok lutimes($when, $when, $symlink), "lutimes($when, $when, $symlink)";
> ++is lstat($symlink)->mtime, 1234, "lutimes() wrong sec on $symlink";
> ++is lstat($symlink)->mtimensec, 567800000, "lutimes() wrong nsec on 
> $symlink";
> + 
> + unlink($target, $symlink) == 2 or die "unlink($target, $symlink):$!";

Reply via email to