diff options
author | alfred <alfred@FreeBSD.org> | 2005-06-18 01:23:18 +0800 |
---|---|---|
committer | alfred <alfred@FreeBSD.org> | 2005-06-18 01:23:18 +0800 |
commit | 812d0439861016cb85446f0f2a5d8ab0d5c99428 (patch) | |
tree | 02353f3b1172278add8128b84643aaf5569ce1bf /sysutils | |
parent | 738b83e038f3ed900e860041d6d24f882bf5dc57 (diff) | |
download | freebsd-ports-gnome-812d0439861016cb85446f0f2a5d8ab0d5c99428.tar.gz freebsd-ports-gnome-812d0439861016cb85446f0f2a5d8ab0d5c99428.tar.zst freebsd-ports-gnome-812d0439861016cb85446f0f2a5d8ab0d5c99428.zip |
Make this work on FreeBSD 5.x.
Diffstat (limited to 'sysutils')
-rw-r--r-- | sysutils/p5-Filesys-DiskSpace/files/patch-DiskSpace.pm | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/sysutils/p5-Filesys-DiskSpace/files/patch-DiskSpace.pm b/sysutils/p5-Filesys-DiskSpace/files/patch-DiskSpace.pm new file mode 100644 index 000000000000..7db76c90700c --- /dev/null +++ b/sysutils/p5-Filesys-DiskSpace/files/patch-DiskSpace.pm @@ -0,0 +1,101 @@ +--- lib/Filesys/DiskSpace.pm.old Sun Sep 5 18:41:22 1999 ++++ lib/Filesys/DiskSpace.pm Fri Jun 17 13:20:44 2005 +@@ -44,7 +44,7 @@ + sub df ($) { + my $dir = shift; + +- my ($fmt, $res, $type, $flags, $osvers, $w); ++ my ($fmt, $res, $type, $typestr, $flags, $osvers, $w); + + # struct fields for statfs or statvfs.... + my ($bsize, $frsize, $blocks, $bfree, $bavail, $files, $ffree, $favail); +@@ -53,7 +53,8 @@ + Carp::croak "Error: $dir is not a directory" unless -d $dir; + + # try with statvfs.. +- eval { # will work for Solaris 2.*, OSF1 v3.2, OSF1 v4.0 and HP-UX 10.*. ++ ($^O ne 'freebsd' && ++ eval { # will work for Solaris 2.*, OSF1 v3.2, OSF1 v4.0 and HP-UX 10.*. + { + package main; + require "sys/syscall.ph"; +@@ -78,7 +79,7 @@ + $bsize = $frsize; + # $blocks -= $bfree - $bavail; + $res == 0 && defined $fs_type{$type}; +- } ++ }) + # try with statfs.. + || eval { # will work for SunOS 4, Linux 2.0.* and 2.2.* + { +@@ -90,11 +91,37 @@ + # statfs... + + if ($^O eq 'freebsd') { +- # only tested with FreeBSD 3.0. Should also work with 4.0. +- my ($f1, $f2); +- ($f1, $bsize, $f2, $blocks, $bfree, $bavail, $files, $ffree) = +- unpack "L8", $fmt; +- $type = 0; # read it from 'f_type' field ? ++ $type = 0; ++ { ++ package main; ++ require "sys/param.ph"; ++ require "sys/mount.ph"; ++ } ++ my $STATFS_VERSION; ++ if (defined(&main::STATFS_VERSION)) { ++ $STATFS_VERSION = &main::STATFS_VERSION; ++ } ++ if (defined($STATFS_VERSION)) { ++ my ($version, $f1); ++ my $crap = ++ "Q4" . # f_syncwrites, f_asyncwrites, f_syncreads, f_asyncreads ++ "Q10" . # f_spare[10] ++ "Lll2" . # f_namemax, f_owner, f_fsid ++ "c80"; # MFSNAMELEN ++ my $MFSNAMELEN = &main::MFSNAMELEN; ++ ($version, $f1, $flags, $bsize, $frsize, $blocks, ++ $bfree, $bavail, $files, $ffree, $typestr) = ++ unpack "L2Q5qQqx[$crap]Z$MFSNAMELEN", $fmt; ++ if ($STATFS_VERSION != 0x20030518) { ++ warn "Unknown STATFS_VERSION ($STATFS_VERSION) results may be bad.\n"; ++ } ++ } ++ else { ++ # only tested with FreeBSD 3.0. Should also work with 4.0. ++ my ($f1, $f2); ++ ($f1, $bsize, $f2, $blocks, $bfree, $bavail, $files, $ffree) = ++ unpack "L8", $fmt; ++ } + } + else { + ($type, $bsize, $blocks, $bfree, $bavail, $files, $ffree) = +@@ -108,7 +135,7 @@ + # files: total file nodes in file system + # ffree: free file nodes in fs + +- $res == 0 && defined $fs_type{$type}; ++ $res == 0 && (defined $typestr || defined $fs_type{$type}); + } + || eval { + { +@@ -170,7 +197,7 @@ + } + + warn "Warning : type $fs_type{$type} untested.. results may be incorrect\n" +- unless $type != 2560 && defined $fs_type{$type}; ++ unless defined($typestr) || ($type != 2560 && defined $fs_type{$type}); + + if ($DEBUG) { + warn "Fs type : [$type] $fs_type{$type}\n" . +@@ -185,7 +212,8 @@ + } + } + +- ($type, $fs_type{$type}, ($blocks - $bavail) * $bsize / 1024, ++ ($type, (defined($typestr) ? $typestr : $fs_type{$type}), ++ ($blocks - $bavail) * $bsize / 1024, + $bavail * $bsize / 1024, $files - $ffree, $ffree); + } + |