From kde-bugs-dist Sun Oct 24 18:24:53 1999 From: Simon Marlow Date: Sun, 24 Oct 1999 18:24:53 +0000 To: kde-bugs-dist Subject: Bug#2197: Kscd/FreeBSD problems X-MARC-Message: https://marc.info/?l=kde-bugs-dist&m=94079002018427 Kscd failed to do anything reasonable on my FreeBSD system w/ an ATAPI cdrom drive. The patches below fix the immediate problems such that I can now play CDs, but things still aren't perfect. Also, I have no idea how these patches will affect SCSI cdrom support. - kscd segfaults if it can't find or open the CD device (no patch for this one) - play didn't work at all (patch to gen_play below - it seems that the initial CDIOCSTART is bogus, at least on ATAPI cdroms). - pressing stop leaves kscd locked up. (patch below - it seems that the ATAPI cdrom returns CD_AS_PLAY_COMPLETED after a CDIOCSTOP ioctl, which caused kscd to hang waiting for the next track). - kscd doesn't cope with errors on the CD medium very gracefully, notably it claims the CD is ejected and won't do anything until the CD is forcibly ejected and re-inserted (no patch for this one). Cheers, Simon *** plat_freebsd.c Mon May 17 14:07:34 1999 --- /home/simonm/plat_freebsd.c Sun Oct 24 19:20:18 1999 *************** *** 248,258 **** break; case CD_AS_PLAY_COMPLETED: ! *mode = TRACK_DONE; /* waiting for next track. */ break; case CD_AS_NO_STATUS: ! case 0: *mode = STOPPED; break; } --- 248,259 ---- break; case CD_AS_PLAY_COMPLETED: ! *mode = STOPPED; ! /* *mode = TRACK_DONE; /* waiting for next track. */ break; case CD_AS_NO_STATUS: ! case CD_AS_AUDIO_INVALID: *mode = STOPPED; break; } *************** *** 368,378 **** msf.end_s = (end % (60*75)) / 75; msf.end_f = end % 75; if (ioctl(d->fd, CDIOCSTART)) return (-1); ! if (ioctl(d->fd, CDIOCPLAYMSF, &msf)) ! return (-2); return (0); } --- 369,383 ---- msf.end_s = (end % (60*75)) / 75; msf.end_f = end % 75; + #if 0 if (ioctl(d->fd, CDIOCSTART)) return (-1); + #endif ! if (ioctl(d->fd, CDIOCPLAYMSF, &msf)) { ! perror("ioctl(CDIOPLAYMSF)"); ! return (-2); ! } return (0); }