[Top][All Lists]
[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
pgpiGlmGWB_D0.pgp
Description: PGP signature