aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Isocheck.pm160
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