diff options
-rw-r--r-- | Isocheck.pm | 160 |
1 files changed, 0 insertions, 160 deletions
diff --git a/Isocheck.pm b/Isocheck.pm deleted file mode 100644 index 4778af5..0000000 --- a/Isocheck.pm +++ /dev/null @@ -1,160 +0,0 @@ -# This file is part of the Mageia project -# -# Copyright (C) 2011 Damien Lallement <dams@mageia.org> -# (C) 2011 Romain d'Alverny <rda@mageia.org> -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Library General Public -# License as published by the Free Software Foundation; either -# version 2 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Library General Public License for more details. -# -# You should have received a copy of the GNU Library General Public License -# along with this library; see the file COPYING.LIB. If not, write to -# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -# Boston, MA 02110-1301, USA. -# - -=head1 NAME - - Isocheck - miscellaneous functions - -=head1 SYNOPSIS - - use Isocheck; - -=head1 EXPORTS - -=over - -=item parse_image_file_name(STRING) - -return a populated hash if param is a valid image file name -(see https://wiki.mageia.org/en/Product_naming ). - -return empty hash if invalid. - -=back - -=cut - -package Isocheck; - -use strict; -use warnings; - -our $VERSION = '0.2.0'; - -use base 'Exporter'; - -our @EXPORT = qw(parse_image_file_name is_hybrid hybrid1 hybrid2 hybrid3); - -sub parse_image_file_name { - my ($name) = @_; - - return unless $name =~ m/^ - ( - (\w+) # name - - - (\d+) # version - (?:-((?:nightly|alpha|beta|RC)\d*))? # release - (?:-(.+))? # variant - - - (i586|x86_64|dual) # arch - (?:-(CD|DVD|BR))? # medium - (?:-(build_\w+))? # build - ) - \. - (\w+) # extension - $/x; - - my %info = ( - full => $1, - name => $2, - version => $3, - defined $4 ? (release => $4) : (), - defined $5 ? (variant => $5) : (), - arch => $6, - defined $7 ? (medium => $7) : (), - defined $8 ? (build => $8) : (), - ext => $9 - ); - - 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 |