Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as Perl by adrian ( 18 years ago )
# -*- Mode: Perl -*-
package Filesys::DiskSpace;
use strict;
use vars qw(@ISA @EXPORT $VERSION $DEBUG);
use Exporter;
use Config;
use Carp;
require 5.003;
@ISA = qw(Exporter);
@EXPORT = qw(df);
$VERSION = "0.05";
# known FS type numbers
my %fs_type = (
0 => "4.2", # 0x00000000
256 => "UFS", # 0x00000100
2560 => "ADVFS", # 0x00000A00
4989 => "EXT_SUPER_MAGIC", # 0x0000137D
4991 => "MINIX_SUPER_MAGIC", # 0x0000137F
5007 => "MINIX_SUPER_MAGIC2", # 0x0000138F
9320 => "MINIX2_SUPER_MAGIC", # 0x00002468
9336 => "MINIX2_SUPER_MAGIC2", # 0x00002478
19780 => "MSDOS_SUPER_MAGIC", # 0x00004d44
20859 => "SMB_SUPER_MAGIC", # 0x0000517B
22092 => "NCP_SUPER_MAGIC", # 0x0000564c
26985 => "NFS_SUPER_MAGIC", # 0x00006969
38496 => "ISOFS_SUPER_MAGIC", # 0x00009660
40864 => "PROC_SUPER_MAGIC", # 0x00009fa0
44543 => "AFFS_SUPER_MAGIC", # 0x0000ADFF
61265 => "EXT2_OLD_SUPER_MAGIC", # 0x0000EF51
61267 => "EXT2_SUPER_MAGIC", # 0x0000EF53
72020 => "UFS_MAGIC", # 0x00011954
19911021 => "_XIAFS_SUPER_MAGIC", # 0x012FD16D
19920820 => "XENIX_SUPER_MAGIC", # 0x012FF7B4
19920821 => "SYSV4_SUPER_MAGIC", # 0x012FF7B5
19920822 => "SYSV2_SUPER_MAGIC", # 0x012FF7B6
19920823 => "COH_SUPER_MAGIC", # 0x012FF7B7
4187351113 => "HPFS_SUPER_MAGIC", # 0xF995E849
);
sub df ($) {
my $dir = shift;
my ($fmt, $res, $type, $flags, $osvers, $w);
# struct fields for statfs or statvfs....
my ($bsize, $frsize, $blocks, $bfree, $bavail, $files, $ffree, $favail);
Carp::croak "Usage: df '$dir'" unless $dir;
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.*.
{
package main;
require "sys/syscall.ph";
}
$fmt = "