diff options
author | Romain d'Alverny <rda@mageia.org> | 2012-02-17 18:42:18 +0000 |
---|---|---|
committer | Romain d'Alverny <rda@mageia.org> | 2012-02-17 18:42:18 +0000 |
commit | 00b1ab6b40f25ce4f9296590ec17f406612c992f (patch) | |
tree | d4c3185fbb2a1b978e987b442c700c49a13754a3 | |
parent | 9e4bd485b397e7ff07d9023ef49dc977f97b2b12 (diff) | |
download | isocheck-00b1ab6b40f25ce4f9296590ec17f406612c992f.tar isocheck-00b1ab6b40f25ce4f9296590ec17f406612c992f.tar.gz isocheck-00b1ab6b40f25ce4f9296590ec17f406612c992f.tar.bz2 isocheck-00b1ab6b40f25ce4f9296590ec17f406612c992f.tar.xz isocheck-00b1ab6b40f25ce4f9296590ec17f406612c992f.zip |
move functions into module
-rw-r--r-- | Isocheck.pm | 72 | ||||
-rw-r--r-- | image_tests/003_is_hybrid.t | 71 |
2 files changed, 72 insertions, 71 deletions
diff --git a/Isocheck.pm b/Isocheck.pm index fe0b85b..4778af5 100644 --- a/Isocheck.pm +++ b/Isocheck.pm @@ -51,7 +51,7 @@ our $VERSION = '0.2.0'; use base 'Exporter'; -our @EXPORT = qw(parse_image_file_name); +our @EXPORT = qw(parse_image_file_name is_hybrid hybrid1 hybrid2 hybrid3); sub parse_image_file_name { my ($name) = @_; @@ -87,4 +87,74 @@ sub parse_image_file_name { return %info; } +# Verification if the ISO is hybrid +sub is_hybrid { + my ($img, $full) = @_; + + open(my $iso, $img); + my $hybrid = hybrid1($iso); + $hybrid &= hybrid2($iso); + $hybrid &= hybrid3($iso); + if ($full) { + # system "dd if=$img of=/dev/my-pendrive bs=8"; + } + close($iso); + + return $hybrid; +} + + +# Check the first 512 bytes of the iso +sub hybrid1 { + my ($iso) = @_; + my $buffer; + my $hybrid; + + foreach (0 .. 512) { + read($iso, $buffer, 1); + if ($buffer ne '\x00') { + $hybrid = 1; + } + } + + return $hybrid; +} + +#Check the 0x1fe & 0x1ff bytes of the iso +sub hybrid2 { + my ($iso) = @_; + my $hybrid; + my $buffer; + my $byte = "\x55"; + + seek($iso, 0x1fe, 0); + read($iso, $buffer, 1); + if ($buffer eq $byte) { + read($iso, $buffer, 1); + $byte = "\xaa"; + if ($buffer eq $byte) { + $hybrid = 1; + } + } + + return $hybrid; +} + +# check from the 0x200 to the 0x8000 bytes +sub hybrid3 { + my ($iso) = @_; + my $hybrid = 1; + my $buffer; + + seek($iso, 0x200, 0); + foreach (0x200 .. 0x8000) { + read($iso, $buffer, 1); + if ($buffer eq '\x00') { + $hybrid = 0; + } + } + + return $hybrid; +} + 1;
\ No newline at end of file diff --git a/image_tests/003_is_hybrid.t b/image_tests/003_is_hybrid.t index dd89fd7..fc1ebba 100644 --- a/image_tests/003_is_hybrid.t +++ b/image_tests/003_is_hybrid.t @@ -19,6 +19,7 @@ # use Test::Most; +use Isocheck; bail_on_fail; @@ -26,74 +27,4 @@ my ($image_path) = @ARGV; ok(is_hybrid($image_path, 0), "Is hybrid"); -# Verification if the ISO is hybrid -sub is_hybrid { - my ($img, $full) = @_; - - open(my $iso, $img); - my $hybrid = hybrid1($iso); - $hybrid &= hybrid2($iso); - $hybrid &= hybrid3($iso); - if ($full) { - # system "dd if=$img of=/dev/my-pendrive bs=8"; - } - close($iso); - - return $hybrid; -} - - -# Check the first 512 bytes of the iso -sub hybrid1 { - my ($iso) = @_; - my $buffer; - my $hybrid; - - foreach (0 .. 512) { - read($iso, $buffer, 1); - if ($buffer ne '\x00') { - $hybrid = 1; - } - } - - return $hybrid; -} - -#Check the 0x1fe & 0x1ff bytes of the iso -sub hybrid2 { - my ($iso) = @_; - my $hybrid; - my $buffer; - my $byte = "\x55"; - - seek($iso, 0x1fe, 0); - read($iso, $buffer, 1); - if ($buffer eq $byte) { - read($iso, $buffer, 1); - $byte = "\xaa"; - if ($buffer eq $byte) { - $hybrid = 1; - } - } - - return $hybrid; -} - -# check from the 0x200 to the 0x8000 bytes -sub hybrid3 { - my ($iso) = @_; - my $hybrid = 1; - my $buffer; - - seek($iso, 0x200, 0); - foreach (0x200 .. 0x8000) { - read($iso, $buffer, 1); - if ($buffer eq '\x00') { - $hybrid = 0; - } - } - - return $hybrid; -} - done_testing(); |