[Debburn-devel] geteltorito.pl
Eduard Bloch
edi at gmx.de
Tue Jan 2 17:16:14 CET 2007
#include <hallo.h>
Rainer, do you approve this change? Shall we release it as 0.4 or better
as 0.3.1, or 0.3a or so?
Eduard.
* Santiago Garcia Mantinan [Tue, Jan 02 2007, 01:50:51PM]:
> Hi!
>
> I'm sending a patch against geteltorito.pl version 0.3 to correct a problem
> when trying to extract non emulated images.
>
> The problem was on two sides:
>
> First of all... the sector count was being unpacked as "n", the "El Torito"
> specs say it is a word, and specifies words as being little endian, not big
> endian, so that should be a "v" and not a "n". While checking this I have
> also changed all other "S" to "v", they are not used for anything on
> geteltorito right now, but just in case...
> I have one doubt here, all the "S" we had were descrived as words by the
> specs except for the checksum which is supposed to be a integer. We are not
> using this so it is just a silly doubt I have, will that be machine
> dependant and thus a "S"?
>
> The second thing was that we were having the same sizes for the sectors on
> the CD and for the virtual sectors and the specs say that the virtual
> sectors are 0x200 bytes long, thus I have incorporated vSecSize for the
> virtual sector size and all the images are counted in vSectsize sectors.
> This solves the problem when extracting non emulated images (the image being
> extracted after fixing the first bug was 4 times bigger than it should be).
>
> I have tested this couple of fixes with both emulated and not emulated
> images. I didn't have any CD with a HD image around, so I could not test
> those.
>
> One more thing for the cdrkit guys... geteltorito.pl doesn't seem to be
> installed on Debian, wouldn't it be good to get it installed with one of the
> packages? And if so... while you are at it... have something on the
> description specifying that a boot image extractor or similar is included, I
> have been apt-cache searching for a long time without finding any tool to do
> that on Debian.
>
> Well, I guess that's all for now. Comments are welcome.
>
> Regards...
> --
> Manty/BestiaTester -> http://manty.net
>
> --- geteltorito.pl.orig 2007-01-02 11:53:48.000000000 +0100
> +++ geteltorito.pl 2007-01-02 13:27:32.000000000 +0100
> @@ -12,8 +12,13 @@
> # Get latest version from:
> # http://www.uni-koblenz.de/~krienke/ftp/noarch/geteltorito
> #
> -$utilVersion="0.3";
> +$utilVersion="0.4";
> #
> +# Version 0.4
> +# 2007/02/01
> +# A patch from Santiago Garcia <manty at debian.org> to use a virtual sector
> +# size (vSecSize) of 512 bytes, as defined on "El Torito" specs and change
> +# unpack of the sector count from n to v to get the correct sector count.
> # Version 0.3
> # 2006/02/21
> # A patch from Ben Collins <bcollins at ubuntu.com> to make the
> @@ -27,6 +32,7 @@
> # For information on El Torito see
> # http://www.cdpage.com/Compact_Disc_Variations/eltoritoi.html
>
> +$vSecSize=512;
> $secSize=2048;
> $ret=undef;$version=undef;$opt_h=undef;$loadSegment=undef;$systemType=undef;
>
> @@ -41,9 +47,9 @@
> open(FILE, $file) || die "Cannot open \"$file\" \n";
>
> seek(FILE, $secNum*$secSize, 0);
> - $count=read(FILE, $sec, $secSize*$secCount, 0) ;
> - if( $count != $secSize*$secCount ){
> - warn "Error reading $secSize bytes from file \"$file\"\n";
> + $count=read(FILE, $sec, $vSecSize*$secCount, 0) ;
> + if( $count != $vSecSize*$secCount ){
> + warn "Error reading from file \"$file\"\n";
> }
> close(FILE);
>
> @@ -136,7 +142,7 @@
> $validateEntry=substr($sector, 0, 32);
>
> ($header, $platform, $unUsed, $manufact, $unUsed, $five, $aa)=
> - unpack( "CCSA24SCC", $validateEntry);
> + unpack( "CCvA24vCC", $validateEntry);
>
> if( $header != 1 || $five != 0x55 || $aa != 0xaa ){
> die "Invalid Validation Entry on image \n";
> @@ -157,7 +163,7 @@
> $initialEntry=substr($sector, 32, 32);
>
> ($boot, $media, $loadSegment, $systemType, $unUsed,
> - $sCount, $imgStart, $unUsed)=unpack( "CCSCCnVC", $initialEntry);
> + $sCount, $imgStart, $unUsed)=unpack( "CCvCCvVC", $initialEntry);
>
> if( $boot != 0x88 ){
> die "Boot indicator in Initial/Default-Entry is not 0x88. CD is not bootable. \n";
> @@ -170,15 +176,15 @@
> }
> if( $media == 1 ){
> print STDERR "1.2meg floppy";
> - $count=1200*1024/$secSize;
> + $count=1200*1024/$vSecSize;
> }
> if( $media == 2 ){
> print STDERR "1.44meg floppy";
> - $count=1440*1024/$secSize;
> + $count=1440*1024/$vSecSize;
> }
> if( $media == 3 ){
> print STDERR "2.88meg floppy";
> - $count=2880*1024/$secSize;
> + $count=2880*1024/$vSecSize;
> }
> if( $media == 4 ){
> print STDERR "harddisk";
> @@ -190,7 +196,7 @@
> # ($count==0)
> $cnt=$count==0?$sCount:$count;
>
> -print STDERR "El Torito image starts at sector $imgStart and has $cnt sector(s) of $secSize Bytes\n";
> +print STDERR "El Torito image starts at sector $imgStart and has $cnt sector(s) of $vSecSize Bytes\n";
>
> # We are there:
> # Now read the bootimage to stdout
>
> _______________________________________________
> Debburn-devel mailing list
> Debburn-devel at lists.alioth.debian.org
> http://lists.alioth.debian.org/mailman/listinfo/debburn-devel
--
Neue Meldungen von Windows 2000:
KAFFEE.DLL fehlt. Bitte Tasse in Tassenhalter einsetzen und
beliebige Taste drücken.
More information about the Debburn-devel
mailing list