--- hald/freebsd/libprobe/hfp-cdrom.h.orig 2008-02-03 10:35:35.000000000 -0500 +++ hald/freebsd/libprobe/hfp-cdrom.h 2008-02-03 10:39:13.000000000 -0500 @@ -149,8 +149,8 @@ HFPCDROM *hfp_cdrom_new_from_fd (int fd, const char *path, const char *parent); boolean hfp_cdrom_send_ccb (HFPCDROM *cdrom, - char ccb[16], - int timeout, + const char *ccb, + int ccb_len, HFPCDROMDirection direction, void *data, int len, --- hald/freebsd/libprobe/hfp-cdrom.c.orig 2008-02-03 10:36:09.000000000 -0500 +++ hald/freebsd/libprobe/hfp-cdrom.c 2008-02-03 10:39:13.000000000 -0500 @@ -124,13 +124,14 @@ boolean hfp_cdrom_send_ccb (HFPCDROM *cdrom, - char ccb[16], - int timeout, + const char *ccb, + int ccb_len, HFPCDROMDirection direction, void *data, int len, char **err) { + int timeout = 10; assert(cdrom != NULL); assert(ccb != NULL); assert(direction == HFP_CDROM_DIRECTION_NONE @@ -227,7 +228,7 @@ data, len, sizeof(cam_ccb.csio.sense_data), - 16, + ccb_len, timeout * 1000); memcpy(cam_ccb.csio.cdb_io.cdb_bytes, ccb, 16); @@ -255,7 +256,7 @@ assert(cdrom != NULL); - return hfp_cdrom_send_ccb(cdrom, ccb, 10, HFP_CDROM_DIRECTION_NONE, NULL, 0, NULL); + return hfp_cdrom_send_ccb(cdrom, ccb, 6, HFP_CDROM_DIRECTION_NONE, NULL, 0, NULL); } void --- hald/freebsd/probing/freebsd_dvd_rw_utils.c.orig 2008-02-03 10:35:14.000000000 -0500 +++ hald/freebsd/probing/freebsd_dvd_rw_utils.c 2008-02-03 10:39:27.000000000 -0500 @@ -28,6 +28,7 @@ struct ScsiCommand { HFPCDROM *cdrom; char ccb[16]; + int len; }; static ScsiCommand * @@ -51,13 +52,14 @@ scsi_command_init (ScsiCommand * cmd, size_t i, int arg) { cmd->ccb[i] = arg; + cmd->len = i + 1; } static int scsi_command_transport (ScsiCommand * cmd, Direction dir, void *buf, size_t sz) { - if (hfp_cdrom_send_ccb(cmd->cdrom, cmd->ccb, 10, dir, buf, sz, NULL)) + if (hfp_cdrom_send_ccb(cmd->cdrom, cmd->ccb, cmd->len, dir, buf, sz, NULL)) return 0; else return -1;