[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