diff options
author | Chmouel Boudjnah <chmouel@mandriva.org> | 1999-07-01 12:29:54 +0000 |
---|---|---|
committer | Chmouel Boudjnah <chmouel@mandriva.org> | 1999-07-01 12:29:54 +0000 |
commit | e1729dfdb9c341fe0b9fed7d7b0a80691a547d82 (patch) | |
tree | b72fd8f59af166fe944ebcf114d648ed5644f752 /perl-install/resize_fat/info_sector.pm | |
parent | b50e655e352e2524fb3fb84b2bb4bc96e6a04cf0 (diff) | |
download | drakx-e1729dfdb9c341fe0b9fed7d7b0a80691a547d82.tar drakx-e1729dfdb9c341fe0b9fed7d7b0a80691a547d82.tar.gz drakx-e1729dfdb9c341fe0b9fed7d7b0a80691a547d82.tar.bz2 drakx-e1729dfdb9c341fe0b9fed7d7b0a80691a547d82.tar.xz drakx-e1729dfdb9c341fe0b9fed7d7b0a80691a547d82.zip |
"See_The_Changelog"
Diffstat (limited to 'perl-install/resize_fat/info_sector.pm')
-rw-r--r-- | perl-install/resize_fat/info_sector.pm | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/perl-install/resize_fat/info_sector.pm b/perl-install/resize_fat/info_sector.pm new file mode 100644 index 000000000..c46ae15fc --- /dev/null +++ b/perl-install/resize_fat/info_sector.pm @@ -0,0 +1,36 @@ +package resize_fat::info_sector; + +use diagnostics; +use strict; + +use common qw(:system); +use resize_fat::io; + +my $format = "a484 I I I a16"; +my @fields = ( + 'unused', + 'signature', # should be 0x61417272 + 'free_clusters', # -1 for unknown + 'next_cluster', # most recently allocated cluster + 'unused2', +); + +1; + + +sub read($) { + my ($fs) = @_; + my $info = resize_fat::io::read($fs, $fs->{offset}, psizeof($format)); + @{$fs->{info_sector}}{@fields} = unpack $format, $info; + $fs->{info_sector}->{signature} == 0x61417272 or die "Invalid information sector signature\n"; +} + +sub write($) { + my ($fs) = @_; + $fs->{info_sector}->{free_clusters} = $fs->{clusters}->{count}->{free}; + $fs->{info_sector}->{next_cluster} = 2; + + my $info = pack $format, @{$fs->{info_sector}}{@fields}; + + resize_fat::io::write($fs, $fs->{info_offset}, psizeof($format), $info); +} |