Add fix for RT #71271.
[perl-fuse.git] / examples / fioclient.pl
index c961d2e..4626443 100755 (executable)
@@ -1,5 +1,8 @@
 #!/usr/bin/env perl
 
+# fioclient.pl: A Perl version of the fioclient IOCTL client example from
+# the FUSE distribution.
+
 use strict;
 no strict qw(refs);
 
@@ -10,16 +13,11 @@ use Fcntl qw(:mode);
 use Errno qw(:POSIX);
 use POSIX;
 
-use constant FIOC_NAME => 'fioc';
-use constant FIOC_NONE  => 0;
-use constant FIOC_ROOT  => 1;
-use constant FIOC_FILE  => 2;
-
 require 'asm/ioctl.ph';
 
-our %sizeof = ('int' => 4);
-sub FIOC_GET_SIZE { _IOR(ord 'E', 0, 'int'); }
-sub FIOC_SET_SIZE { _IOW(ord 'E', 1, 'int'); }
+our %sizeof = ('size_t' => length(pack('L!')));
+sub FIOC_GET_SIZE { _IOR(ord 'E', 0, 'size_t'); }
+sub FIOC_SET_SIZE { _IOW(ord 'E', 1, 'size_t'); }
 
 sub usage {
     print <<'_EOT_';
@@ -46,10 +44,10 @@ if ($ARGV[1] eq 's') {
         if (!defined($rv) || $rv != 0) {
             croak($!);
         }
-        printf("\%u\n", unpack('L', $size));
+        printf("\%u\n", unpack('L!', $size));
     }
     else {
-        my $rv = ioctl($file, FIOC_SET_SIZE, pack('L', $ARGV[2]));
+        my $rv = ioctl($file, FIOC_SET_SIZE, pack('L!', $ARGV[2]));
         if (!defined($rv) || $rv != 0) {
             croak($!);
         }