bug-vcdimager
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [VCDImager Bugs/Devel] vcdxrip rip errors


From: Herbert Valerio Riedel
Subject: Re: [VCDImager Bugs/Devel] vcdxrip rip errors
Date: 13 Oct 2001 20:54:24 +0200

On Sat, 2001-10-13 at 19:54, Steven M. Schultz wrote:

> > from vcd_xml_rip.c:
> > 
> >   vcd_image_source_read_mode2_sector (img, &pvd, ISO_PVD_SECTOR, false);
> 
>       I think I am on the trail of the problem...
> 
>       Using gdb I stopped the program in _read_mode2
> 
> #0  _read_mode2 (fd=6, buf=0x8046464, lba=16, nblocks=1, _workaround=false)
>     at vcd_image_bsdicd.c:155
> #1  0x8058e39 in _read_mode2_sector (user_data=0x8070090, data=0x8046464, 
>     lsn=16, form2=true) at vcd_image_bsdicd.c:222
> #2  0x8058eb5 in _read_mode2_sector (user_data=0x8070090, data=0x8046de4, 
>     lsn=16, form2=false) at vcd_image_bsdicd.c:248
> #3  0x805620a in vcd_image_source_read_mode2_sector (obj=0x806f040, 
>     buf=0x8046de4, lsn=16, mode2raw=false) at vcd_image.c:100
> #4  0x8049a59 in _parse_pvd (obj=0x8047948, img=0x806f040) at 
> vcd_xml_rip.c:216
> #5  0x804c03b in main (argc=3, argv=0x80479f8) at vcd_xml_rip.c:1456
> #6  0x804947e in __start ()
> 
>       It is obviously trying to read lba 16 which is the ISO portion but it
>       is trying to do so with a 'mode2' read command.

 
>       It appears that the "read mode 2" and "read normal 2k" flag is
>       overloaded - "_workaround" means try different methods to read
>       mode2 sectors in _read_mode2() but earlier the flag is "form2"
>       meaning 'mode 2 sectors' or 'iso sized sectors'.

well the workaround is there, in case the CMD_READ_CD ioctl doesn't work
(usually because the command is not implemented...), then the fall back
to work with CMD_READ_10 is used instead...

 
>       In earlier versions of vcdimager I did something this in
>       _read_mode2_sector():
> 
>          if (form2)
>             ioctl(CDROMREADMOE2)
>          else
>             {
>             lseek(lsn * ISO_BLOCKSIZE)
>             read(buf,ISO_BLOCKSIZE)
>             }
> 
>       That uses the 'form2' flag as "do a form2 read" or do a "regular
>       read".
actually I wanted to get rid of the regular read(), since it's not that
flexible;

instead every sector is read as mode2 ioctl, and then the sector is
interpreted either als form1 or form2, checking against the subheader
whether the caller's request matches...
 
>       Am I close to being right?   ;)
well, maybe the workaround mechanism doesn't work anymore...

maybe one should check the return values...

btw, have you changed hardware? cause vcd_image_bsdicd.c hasn't changed
since 2001/08/31 in cvs... and you told me that version worked... :-/

regards,
-- 
Herbert Valerio Riedel       /    Phone: (EUROPE) +43-1-58801-18840
Email: address@hidden       /    Finger address@hidden for GnuPG Public Key
GnuPG Key Fingerprint: 7BB9 2D6C D485 CE64 4748  5F65 4981 E064 883F
4142

Attachment: pgpiGlmGWB_D0.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]