summaryrefslogtreecommitdiffstats
path: root/perl-install/resize_fat/fat.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/resize_fat/fat.pm')
-rw-r--r--perl-install/resize_fat/fat.pm28
1 files changed, 12 insertions, 16 deletions
diff --git a/perl-install/resize_fat/fat.pm b/perl-install/resize_fat/fat.pm
index e6039077a..67c64165c 100644
--- a/perl-install/resize_fat/fat.pm
+++ b/perl-install/resize_fat/fat.pm
@@ -5,6 +5,7 @@ use strict;
use resize_fat::any;
use resize_fat::io;
+use resize_fat::c_rewritten;
1;
@@ -20,15 +21,8 @@ sub read($) {
$fs->{fat} = $fs->{fats}[0];
- my ($free, $bad, $used) = (0, 0, 0);
-
- for (my $i = 2; $i < $fs->{nb_clusters} + 2; $i++) {
- my $cluster = &next($fs, $i);
- if ($cluster == 0) { $free++; }
- elsif ($cluster == $resize_fat::bad_cluster_value) { $bad++; }
- else { $used++; }
- }
- @{$fs->{clusters}{count}}{qw(free bad used)} = ($free, $bad, $used);
+ @{$fs->{clusters}{count}}{qw(free bad used)} =
+ resize_fat::c_rewritten::scan_fat($fs->{fat}, $fs->{nb_clusters}, $fs->{fs_type_size});
}
sub write($) {
@@ -61,7 +55,7 @@ sub allocate_remap {
$fs->{last_free_cluster} = 2;
for ($cluster = 2; $cluster < $fs->{nb_clusters} + 2; $cluster++) {
if ($cluster < $cut_point) {
- if ($fs->{fat_flag_map}[$cluster] == $resize_fat::any::DIRECTORY) {
+ if (resize_fat::c_rewritten::flag($cluster) == $resize_fat::any::DIRECTORY) {
&$get_new();
} else {
$new_cluster = $cluster;
@@ -80,7 +74,7 @@ sub update {
my ($fs) = @_;
for (my $cluster = 2; $cluster < $fs->{nb_clusters} + 2; $cluster++) {
- if ($fs->{fat_flag_map}[$cluster]) {
+ if (resize_fat::c_rewritten::flag($cluster)) {
my $old_next = &next($fs, $cluster);
my $new = $fs->{fat_remap}[$cluster];
my $new_next = $fs->{fat_remap}[$old_next];
@@ -100,6 +94,7 @@ sub update {
#- are done in count.c
sub check($) {
my ($fs) = @_;
+ return;
foreach (@{$fs->{fats}}) {
$_ eq $fs->{fats}[0] or die "FAT tables do not match";
}
@@ -118,12 +113,13 @@ sub endianness($$) {
$r;
}
-sub next($$) {
- my ($fs, $cluster) = @_;
- $cluster > $fs->{nb_clusters} + 2 and die "fat::next: cluster $cluster outside filesystem";
- endianness(vec($fs->{fat}, $cluster, $fs->{fs_type_size}), $fs->{fs_type_size});
+#-sub next($$) {
+#- my ($fs, $cluster) = @_;
+#- $cluster > $fs->{nb_clusters} + 2 and die "fat::next: cluster $cluster outside filesystem";
+#- endianness(vec($fs->{fat}, $cluster, $fs->{fs_type_size}), $fs->{fs_type_size});
+#-}
+*next = \&resize_fat::c_rewritten::next;
-}
sub set_next($$$) {
my ($fs, $cluster, $new_v) = @_;
$cluster > $fs->{nb_clusters} + 2 and die "fat::set_next: cluster $cluster outside filesystem";