--- ./lib/Sys/Filesystem/Aix.pm.orig	Thu Jun  1 14:10:48 2006
+++ ./lib/Sys/Filesystem/Aix.pm	Fri Nov 30 11:39:17 2007
@@ -37,7 +37,7 @@
 	$args{fstab} ||= '/etc/filesystems';
 
 	my @fstab_keys = qw(account boot check dev free mount nodename size type vfs vol log);
-	my @special_fs = qw(swap procfs proc tmpfs nfs mntfs autofs);
+	push (@Sys::Filesystem::special_fs, qw(procfs mntfs));
 
 	# Read the fstab
 	my $fstab = new FileHandle;
@@ -53,18 +53,43 @@
 
 			# This matches a filesystem attribute
 			} elsif (my ($key,$value) = $_ =~ /^\s*([a-z]{3,8})\s+=\s+"?(.+)"?\s*$/) {
-				$self->{$current_filesystem}->{$key} = $value;
 				$self->{$current_filesystem}->{unmounted} = -1; # Unknown mount state?
 				if ($key eq 'vfs') {
-					if (grep(/^$value$/, @special_fs)) {
+					if (grep(/^$value$/, @Sys::Filesystem::special_fs)) {
 						$self->{$current_filesystem}->{special} = 1;
 					}
+					$self->{$current_filesystem}->{type} = $value;
+				} else {
+					$self->{$current_filesystem}->{$key} = $value
+						if ( $key ne 'type');
 				}
 			}
 		}
 		$fstab->close;
 	} else {
 		croak "Unable to open fstab file ($args{fstab})\n";
+	}
+
+	# /dev/hd4 / jfs Apr 02 13:45 rw,log=/dev/hd8
+	if ($fstab->open('/usr/sbin/mount -p|')) {
+		while (<$fstab>) {
+			my ($device, $mount_point, $fstype);
+			grep (m|^\s+(/\S+)\s+(/\S+)\s+(\S+)| 
+				&& ($device=$1, $mount_point=$2, $fstype=$3), $_);
+
+			if ( defined $mount_point ) {
+				$self->{$mount_point}->{mounted} = 1;
+				$self->{$mount_point}->{device} = $device;
+				$self->{$mount_point}->{mount_point} = $mount_point;
+				$self->{$mount_point}->{fs_vfstype} = $fstype;
+				if (grep(/^$fstype$/, @Sys::Filesystem::special_fs)) {
+						$self->{$mount_point}->{special} = 1;
+				}
+			}
+		}
+		$fstab->close;
+	} else {
+		croak "Unable to run mount command\n";
 	}
 
 	bless($self,$class);


syntax highlighted by Code2HTML, v. 0.9.1