aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Isocheck.pm72
-rw-r--r--image_tests/003_is_hybrid.t71
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();