diff --git a/lib/driver/aix.c b/lib/driver/aix.c index c7def303..54270262 100644 --- a/lib/driver/aix.c +++ b/lib/driver/aix.c @@ -128,7 +128,7 @@ typedef struct { } _img_private_t; static track_format_t get_track_format_aix(void *p_user_data, - track_t i_track); + track_t i_track); static access_mode_t str_to_access_mode_aix(const char *psz_access_mode) @@ -141,7 +141,7 @@ str_to_access_mode_aix(const char *psz_access_mode) return _AM_CTRL_SCSI; else { cdio_warn ("unknown access type: %s. Default SCSI used.", - psz_access_mode); + psz_access_mode); return default_access_mode; } } @@ -160,7 +160,7 @@ init_aix (_img_private_t *p_env) } p_env->gen.fd = openx (p_env->gen.source_name, O_RDONLY, NULL, - SC_DIAGNOSTIC); + SC_DIAGNOSTIC); /*p_env->gen.fd = openx (p_env->gen.source_name, O_RDONLY, NULL, IDE_SINGLE);*/ @@ -185,11 +185,11 @@ init_aix (_img_private_t *p_env) p_user_data internal CD structure. i_timeout_ms time in milliseconds we will wait for the command to complete. - i_cdb Size of p_cdb - p_cdb CDB bytes. - e_direction direction the transfer is to go. - i_buf Size of buffer - p_buf Buffer for data, both sending and receiving + i_cdb Size of p_cdb + p_cdb CDB bytes. + e_direction direction the transfer is to go. + i_buf Size of buffer + p_buf Buffer for data, both sending and receiving */ static driver_return_code_t run_mmc_cmd_aix( void *p_user_data, unsigned int i_timeout_ms, @@ -205,9 +205,9 @@ run_mmc_cmd_aix( void *p_user_data, unsigned int i_timeout_ms, memcpy(cgc.scsi_cdb, p_cdb, sizeof(mmc_cdb_t)); #ifdef AIX_DISABLE_ASYNC - /* This enables synchronous negotiation mode. Some CD-ROM drives - * don't handle this well. - */ + /* This enables synchronous negotiation mode. Some CD-ROM drives + * don't handle this well. + */ cgc.flags = 0; #else cgc.flags = SC_ASYNC; @@ -238,7 +238,7 @@ run_mmc_cmd_aix( void *p_user_data, unsigned int i_timeout_ms, static driver_return_code_t _read_audio_sectors_aix (void *p_user_data, void *data, lsn_t lsn, - unsigned int nblocks) + unsigned int nblocks) { char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, }; @@ -262,7 +262,7 @@ _read_audio_sectors_aix (void *p_user_data, void *data, lsn_t lsn, if (env->gen.ioctls_debugged < 75 || (env->gen.ioctls_debugged < (30 * 75) - && env->gen.ioctls_debugged % 75 == 0) + && env->gen.ioctls_debugged % 75 == 0) || env->gen.ioctls_debugged % (30 * 75) == 0) cdio_debug ("reading %d", lsn); @@ -273,8 +273,8 @@ _read_audio_sectors_aix (void *p_user_data, void *data, lsn_t lsn, cdda.cdda_data = (caddr_t) data; if (ioctl (env->gen.fd, CDROMCDDA, &cdda) == -1) { perror ("ioctl(..,CDROMCDDA,..)"); - return 1; - /* exit (EXIT_FAILURE); */ + return 1; + /* exit (EXIT_FAILURE); */ } #endif memcpy (data, buf, CDIO_CD_FRAMESIZE_RAW); @@ -288,7 +288,7 @@ _read_audio_sectors_aix (void *p_user_data, void *data, lsn_t lsn, */ static driver_return_code_t _read_mode1_sector_aix (void *env, void *data, lsn_t lsn, - bool b_form2) + bool b_form2) { #if FIXED @@ -305,7 +305,7 @@ _read_mode1_sector_aix (void *env, void *data, lsn_t lsn, */ static driver_return_code_t _read_mode1_sectors_aix (void *p_user_data, void *p_data, lsn_t lsn, - bool b_form2, unsigned int nblocks) + bool b_form2, unsigned int nblocks) { _img_private_t *p_env = p_user_data; unsigned int i; @@ -314,8 +314,8 @@ _read_mode1_sectors_aix (void *p_user_data, void *p_data, lsn_t lsn, for (i = 0; i < nblocks; i++) { if ( (retval = _read_mode1_sector_aix (p_env, - ((char *)p_data) + (blocksize * i), - lsn + i, b_form2)) ) + ((char *)p_data) + (blocksize * i), + lsn + i, b_form2)) ) return retval; } return 0; @@ -327,7 +327,7 @@ _read_mode1_sectors_aix (void *p_user_data, void *p_data, lsn_t lsn, */ static driver_return_code_t _read_mode2_sector_aix (void *p_user_data, void *p_data, lsn_t lsn, - bool b_form2) + bool b_form2) { char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, }; int offset = 0; @@ -351,10 +351,10 @@ _read_mode2_sector_aix (void *p_user_data, void *p_data, lsn_t lsn, if (p_env->gen.ioctls_debugged < 75 || (p_env->gen.ioctls_debugged < (30 * 75) - && p_env->gen.ioctls_debugged % 75 == 0) + && p_env->gen.ioctls_debugged % 75 == 0) || p_env->gen.ioctls_debugged % (30 * 75) == 0) cdio_debug ("reading %2.2d:%2.2d:%2.2d", - msf->cdmsf_min0, msf->cdmsf_sec0, msf->cdmsf_frame0); + msf->cdmsf_min0, msf->cdmsf_sec0, msf->cdmsf_frame0); p_env->gen.ioctls_debugged++; @@ -389,7 +389,7 @@ _read_mode2_sector_aix (void *p_user_data, void *p_data, lsn_t lsn, */ static driver_return_code_t _read_mode2_sectors_aix (void *p_user_data, void *data, lsn_t lsn, - bool b_form2, unsigned int nblocks) + bool b_form2, unsigned int nblocks) { _img_private_t *env = p_user_data; unsigned int i; @@ -398,8 +398,8 @@ _read_mode2_sectors_aix (void *p_user_data, void *data, lsn_t lsn, for (i = 0; i < nblocks; i++) { if ( (retval = _read_mode2_sector_aix (env, - ((char *)data) + (blocksize * i), - lsn + i, b_form2)) ) + ((char *)data) + (blocksize * i), + lsn + i, b_form2)) ) return retval; } return 0; @@ -462,7 +462,7 @@ _set_arg_aix (void *p_user_data, const char key[], const char value[]) /* * aixioc_send - Issue ioctl command. + Issue ioctl command. Args: p_env - environment @@ -477,14 +477,14 @@ _set_arg_aix (void *p_user_data, const char key[], const char value[]) static bool aixioc_send(_img_private_t *p_env, int cmd, void *arg, bool b_print_err) { - struct cd_audio_cmd *ac; + struct cd_audio_cmd *ac; if (p_env->gen.fd < 0) return false; if (cmd == DKAUDIO) { ac = (struct cd_audio_cmd *) arg; - ac->status = 0; /* Nuke status for audio cmds */ + ac->status = 0; /* Nuke status for audio cmds */ } if (ioctl(p_env->gen.fd, cmd, arg) < 0) { @@ -505,7 +505,7 @@ static bool read_toc_ioctl_aix (void *p_user_data) { _img_private_t *p_env = p_user_data; - struct cd_audio_cmd cmdbuf; + struct cd_audio_cmd cmdbuf; int i; cmdbuf.msf_flag = false; @@ -515,7 +515,7 @@ read_toc_ioctl_aix (void *p_user_data) p_env->gen.i_first_track = cmdbuf.indexing.track_index.first_track; p_env->gen.i_tracks = ( cmdbuf.indexing.track_index.last_track - - p_env->gen.i_first_track ) + 1; + - p_env->gen.i_first_track ) + 1; /* Do it again to get the last MSF data */ cmdbuf.msf_flag = true; @@ -534,9 +534,9 @@ read_toc_ioctl_aix (void *p_user_data) p_env->tocent[ i_track ].start_lsn = cdio_msf3_to_lba( - cmdbuf.indexing.track_msf.mins, - cmdbuf.indexing.track_msf.secs, - cmdbuf.indexing.track_msf.frames ); + cmdbuf.indexing.track_msf.mins, + cmdbuf.indexing.track_msf.secs, + cmdbuf.indexing.track_msf.frames ); } return true; @@ -570,9 +570,9 @@ read_toc_aix (void *p_user_data) CDIO_MMC_SET_READ_LENGTH16(cdb.field, sizeof(cdrom_toc_full)); i_status = run_scsi_cmd_aix (p_env, 1000*60*3, - mmc_get_cmd_len(cdb.field[0]), - &cdb, MMC_DATA_READ, - sizeof(cdrom_toc_full), &cdrom_toc_full); + mmc_get_cmd_len(cdb.field[0]), + &cdb, MMC_DATA_READ, + sizeof(cdrom_toc_full), &cdrom_toc_full); if ( 0 != i_status ) { cdio_debug ("SCSI MMC READ_TOC failed\n"); @@ -592,40 +592,40 @@ read_toc_aix (void *p_user_data) if ( 0xA1 == cdrom_toc_full.TrackData[i].POINT ) { /* Last track number */ p_env->gen.i_tracks = - cdrom_toc_full.TrackData[i].PMIN - p_env->gen.i_first_track + 1; + cdrom_toc_full.TrackData[i].PMIN - p_env->gen.i_first_track + 1; i_seen_flag|=0x02; } if ( 0xA2 == cdrom_toc_full.TrackData[i].POINT ) { /* Start position of the lead out */ p_env->tocent[ p_env->gen.i_tracks ].start_lsn = - cdio_msf3_to_lba( - cdrom_toc_full.TrackData[i].PMIN, - cdrom_toc_full.TrackData[i].PSEC, - cdrom_toc_full.TrackData[i].PFRAME ); + cdio_msf3_to_lba( + cdrom_toc_full.TrackData[i].PMIN, + cdrom_toc_full.TrackData[i].PSEC, + cdrom_toc_full.TrackData[i].PFRAME ); p_env->tocent[ p_env->gen.i_tracks ].Control - = cdrom_toc_full.TrackData[i].Control; + = cdrom_toc_full.TrackData[i].Control; p_env->tocent[ p_env->gen.i_tracks ].Format = i_track_format; i_seen_flag|=0x04; } if (cdrom_toc_full.TrackData[i].POINT > 0 - && cdrom_toc_full.TrackData[i].POINT <= p_env->gen.i_tracks) { + && cdrom_toc_full.TrackData[i].POINT <= p_env->gen.i_tracks) { p_env->tocent[ cdrom_toc_full.TrackData[i].POINT - 1 ].start_lsn = - cdio_msf3_to_lba( - cdrom_toc_full.TrackData[i].PMIN, - cdrom_toc_full.TrackData[i].PSEC, - cdrom_toc_full.TrackData[i].PFRAME ); + cdio_msf3_to_lba( + cdrom_toc_full.TrackData[i].PMIN, + cdrom_toc_full.TrackData[i].PSEC, + cdrom_toc_full.TrackData[i].PFRAME ); p_env->tocent[ cdrom_toc_full.TrackData[i].POINT - 1 ].Control = - cdrom_toc_full.TrackData[i].Control; + cdrom_toc_full.TrackData[i].Control; p_env->tocent[ cdrom_toc_full.TrackData[i].POINT - 1 ].Format = - i_track_format; + i_track_format; cdio_debug("p_sectors: %i, %lu", i, - (unsigned long int) (p_env->tocent[i].start_lsn)); + (unsigned long int) (p_env->tocent[i].start_lsn)); if (cdrom_toc_full.TrackData[i].POINT == p_env->gen.i_tracks) - i_seen_flag|=0x08; + i_seen_flag|=0x08; } if ( 0x0F == i_seen_flag ) break; @@ -732,12 +732,12 @@ get_discmode_aix (void *p_user_data) if((ret = ioctl(p_env->gen.fd, DK_CD_MODE, &media)) != 0) { cdio_warn ("DK_CD_MODE failed: %s", strerror(errno)); - return CDIO_DISC_MODE_NO_INFO; + return CDIO_DISC_MODE_NO_INFO; } switch(media.cd_mode_form) { case CD_DA: return CDIO_DISC_MODE_CD_DA; - case DVD_ROM: + case DVD_ROM: return CDIO_DISC_MODE_DVD_ROM; case DVD_RAM: return CDIO_DISC_MODE_DVD_RAM; @@ -973,14 +973,17 @@ cdio_open_am_aix (const char *psz_orig_source, const char *access_mode) _data = calloc (1, sizeof (_img_private_t)); _data->access_mode = _AM_CTRL_SCSI; - _data->gen.b_cdtext_error = false; _data->gen.init = false; - _data->gen.fd = -1; _data->gen.toc_init = false; + _data->gen.fd = -1; + _data->gen.b_cdtext_error = false; if (NULL == psz_orig_source) { psz_source = cdio_get_default_device_aix(); - if (NULL == psz_source) return NULL; + if (NULL == psz_source) { + free(_data); + return NULL; + } _set_arg_aix(_data, "source", psz_source); free(psz_source); } else { @@ -996,14 +999,15 @@ cdio_open_am_aix (const char *psz_orig_source, const char *access_mode) } ret = cdio_new ( (void *) _data, &_funcs ); - ret->driver_id = DRIVER_AIX; - if (ret == NULL) return NULL; + ret->driver_id = DRIVER_AIX; + if (init_aix(_data)) return ret; else { cdio_generic_free (_data); + free(ret); return NULL; } diff --git a/lib/driver/bsdi.c b/lib/driver/bsdi.c index d9ee9c27..63376a0e 100644 --- a/lib/driver/bsdi.c +++ b/lib/driver/bsdi.c @@ -100,9 +100,9 @@ static lsn_t get_disc_last_lsn_bsdi (void *p_user_data); */ static driver_return_code_t run_mmc_cmd_bsdi(void *p_user_data, unsigned int i_timeout_ms, - unsigned int i_cdb, const mmc_cdb_t *p_cdb, - cdio_mmc_direction_t e_direction, - unsigned int i_buf, /*in/out*/ void *p_buf ) + unsigned int i_cdb, const mmc_cdb_t *p_cdb, + cdio_mmc_direction_t e_direction, + unsigned int i_buf, /*in/out*/ void *p_buf ) { const _img_private_t *p_env = p_user_data; int i_status, i_asc; @@ -132,12 +132,12 @@ run_mmc_cmd_bsdi(void *p_user_data, unsigned int i_timeout_ms, int i; cp = suc.suc_sus.sus_sense; fprintf(stderr,"i_status = %x cdb =", - i_status); + i_status); for (i = 0; i < cdblen; i++) - fprintf(stderr, " %x", cgc->cdb[i]); + fprintf(stderr, " %x", cgc->cdb[i]); fprintf(stderr, "\nsense ="); for (i = 0; i < 16; i++) - fprintf(stderr, " %x", cp[i]); + fprintf(stderr, " %x", cp[i]); fprintf(stderr, "\n"); } #endif @@ -426,7 +426,7 @@ audio_stop_bsdi (void *p_user_data) */ static driver_return_code_t _read_audio_sectors_bsdi (void *user_data, void *data, lsn_t lsn, - uint32_t i_blocks) + uint32_t i_blocks) { char buf[CDIO_CD_FRAMESIZE_RAW] = { 0, }; struct cdrom_msf *msf = (struct cdrom_msf *) &buf; @@ -447,10 +447,10 @@ _read_audio_sectors_bsdi (void *user_data, void *data, lsn_t lsn, if (p_env->gen.ioctls_debugged < 75 || (p_env->gen.ioctls_debugged < (30 * 75) - && p_env->gen.ioctls_debugged % 75 == 0) + && p_env->gen.ioctls_debugged % 75 == 0) || p_env->gen.ioctls_debugged % (30 * 75) == 0) cdio_debug ("reading %2.2d:%2.2d:%2.2d", - msf->cdmsf_min0, msf->cdmsf_sec0, msf->cdmsf_frame0); + msf->cdmsf_min0, msf->cdmsf_sec0, msf->cdmsf_frame0); p_env->gen.ioctls_debugged++; @@ -463,13 +463,13 @@ _read_audio_sectors_bsdi (void *user_data, void *data, lsn_t lsn, case _AM_IOCTL: { unsigned int i; for (i=0; i < i_blocks; i++) { - if (ioctl (p_env->gen.fd, CDROMREADRAW, &buf) == -1) { - perror ("ioctl()"); - return 1; - /* exit (EXIT_FAILURE); */ - } - memcpy (((char *)data) + (CDIO_CD_FRAMESIZE_RAW * i), buf, - CDIO_CD_FRAMESIZE_RAW); + if (ioctl (p_env->gen.fd, CDROMREADRAW, &buf) == -1) { + perror ("ioctl()"); + return 1; + /* exit (EXIT_FAILURE); */ + } + memcpy (((char *)data) + (CDIO_CD_FRAMESIZE_RAW * i), buf, + CDIO_CD_FRAMESIZE_RAW); } break; } @@ -484,7 +484,7 @@ _read_audio_sectors_bsdi (void *user_data, void *data, lsn_t lsn, */ static driver_return_code_t _read_mode1_sector_bsdi (void *user_data, void *data, lsn_t lsn, - bool b_form2) + bool b_form2) { #if FIXED @@ -502,7 +502,7 @@ _read_mode1_sector_bsdi (void *user_data, void *data, lsn_t lsn, */ static driver_return_code_t _read_mode1_sectors_bsdi (void *p_user_data, void *p_data, lsn_t lsn, - bool b_form2, uint32_t i_blocks) + bool b_form2, uint32_t i_blocks) { _img_private_t *p_env = p_user_data; unsigned int i; @@ -511,8 +511,8 @@ _read_mode1_sectors_bsdi (void *p_user_data, void *p_data, lsn_t lsn, for (i = 0; i < i_blocks; i++) { if ( (retval = _read_mode1_sector_bsdi (p_env, - ((char *)p_data) + (blocksize * i), - lsn + i, b_form2)) ) + ((char *)p_data) + (blocksize * i), + lsn + i, b_form2)) ) return retval; } return DRIVER_OP_SUCCESS; @@ -524,7 +524,7 @@ _read_mode1_sectors_bsdi (void *p_user_data, void *p_data, lsn_t lsn, */ static driver_return_code_t _read_mode2_sector_bsdi (void *p_user_data, void *p_data, lsn_t lsn, - bool b_form2) + bool b_form2) { char buf[M2RAW_SECTOR_SIZE] = { 0, }; struct cdrom_msf *msf = (struct cdrom_msf *) &buf; @@ -545,10 +545,10 @@ _read_mode2_sector_bsdi (void *p_user_data, void *p_data, lsn_t lsn, if (p_env->gen.ioctls_debugged < 75 || (p_env->gen.ioctls_debugged < (30 * 75) - && p_env->gen.ioctls_debugged % 75 == 0) + && p_env->gen.ioctls_debugged % 75 == 0) || p_env->gen.ioctls_debugged % (30 * 75) == 0) cdio_debug ("reading %2.2d:%2.2d:%2.2d", - msf->cdmsf_min0, msf->cdmsf_sec0, msf->cdmsf_frame0); + msf->cdmsf_min0, msf->cdmsf_sec0, msf->cdmsf_frame0); p_env->gen.ioctls_debugged++; @@ -561,11 +561,11 @@ _read_mode2_sector_bsdi (void *p_user_data, void *p_data, lsn_t lsn, case _AM_IOCTL: if (ioctl (p_env->gen.fd, CDROMREADMODE2, &buf) == -1) - { - perror ("ioctl()"); - return 1; - /* exit (EXIT_FAILURE); */ - } + { + perror ("ioctl()"); + return 1; + /* exit (EXIT_FAILURE); */ + } break; } @@ -584,7 +584,7 @@ _read_mode2_sector_bsdi (void *p_user_data, void *p_data, lsn_t lsn, */ static driver_return_code_t _read_mode2_sectors_bsdi (void *user_data, void *data, lsn_t lsn, - bool b_form2, uint32_t i_blocks) + bool b_form2, uint32_t i_blocks) { _img_private_t *p_env = user_data; unsigned int i; @@ -593,9 +593,9 @@ _read_mode2_sectors_bsdi (void *user_data, void *data, lsn_t lsn, /* For each frame, pick out the data part we need */ for (i = 0; i < i_blocks; i++) { int retval = _read_mode2_sector_bsdi(p_env, - ((char *)data) + - (i_blocksize * i), - lsn + i, b_form2); + ((char *)data) + + (i_blocksize * i), + lsn + i, b_form2); if (retval) return retval; } return DRIVER_OP_SUCCESS; @@ -642,9 +642,9 @@ _set_arg_bsdi (void *user_data, const char key[], const char value[]) else if (!strcmp (key, "access-mode")) { if (!strcmp(value, "IOCTL")) - p_env->access_mode = _AM_IOCTL; + p_env->access_mode = _AM_IOCTL; else - cdio_warn ("unknown access type: %s. ignored.", value); + cdio_warn ("unknown access type: %s. ignored.", value); } else return DRIVER_OP_ERROR; return DRIVER_OP_SUCCESS; @@ -690,7 +690,7 @@ read_toc_bsdi (void *p_user_data) struct cdrom_msf0 *msf= &p_env->tocent[i-1].cdte_addr.msf; fprintf (stdout, "--- track# %d (msf %2.2x:%2.2x:%2.2x)\n", - i, msf->minute, msf->second, msf->frame); + i, msf->minute, msf->second, msf->frame); ****/ } @@ -700,9 +700,9 @@ read_toc_bsdi (void *p_user_data) p_env->tocent[p_env->gen.i_tracks].cdte_format = CDROM_MSF; if (ioctl(p_env->gen.fd, CDROMREADTOCENTRY, - &p_env->tocent[p_env->gen.i_tracks]) == -1 ) { + &p_env->tocent[p_env->gen.i_tracks]) == -1 ) { cdio_warn("%s: %s\n", - "error in ioctl CDROMREADTOCENTRY for lead-out", + "error in ioctl CDROMREADTOCENTRY for lead-out", strerror(errno)); return false; } @@ -711,7 +711,7 @@ read_toc_bsdi (void *p_user_data) struct cdrom_msf0 *msf= &p_env->tocent[p_env->gen.i_tracks].cdte_addr.msf; fprintf (stdout, "--- track# %d (msf %2.2x:%2.2x:%2.2x)\n", - i, msf->minute, msf->second, msf->frame); + i, msf->minute, msf->second, msf->frame); */ p_env->gen.toc_init = true; @@ -917,7 +917,7 @@ cdio_get_devices_bsdi (void) while ( (fs = getfsent()) ) { if (strncmp(fs->fs_spec, "/dev/sr", 7)) - cdio_add_device_list(&drives, fs->fs_spec, &num_drives); + cdio_add_device_list(&drives, fs->fs_spec, &num_drives); } #endif @@ -956,7 +956,7 @@ cdio_open_am_bsdi (const char *psz_source_name, const char *psz_access_mode) { if (psz_access_mode != NULL) cdio_warn ("there is only one access mode for bsdi. Arg %s ignored", - psz_access_mode); + psz_access_mode); return cdio_open_bsdi(psz_source_name); } @@ -1023,15 +1023,20 @@ cdio_open_bsdi (const char *psz_orig_source) }; _data = calloc (1, sizeof (_img_private_t)); + _data->access_mode = _AM_IOCTL; - _data->gen.b_cdtext_error = false; _data->gen.init = false; - _data->gen.fd = -1; _data->gen.toc_init = false; + _data->gen.fd = -1; + _data->gen.b_cdtext_error = false; if (NULL == psz_orig_source) { psz_source=cdio_get_default_device_bsdi(); - if (NULL == psz_source) return NULL; + if (NULL == psz_source) { + free(_data); + return NULL; + } + _set_arg_bsdi(_data, "source", psz_source); free(psz_source); } else { @@ -1056,6 +1061,7 @@ cdio_open_bsdi (const char *psz_orig_source) return ret; else { cdio_generic_free (_data); + free(ret); return NULL; } diff --git a/lib/driver/netbsd.c b/lib/driver/netbsd.c index 987f5b2e..91139029 100644 --- a/lib/driver/netbsd.c +++ b/lib/driver/netbsd.c @@ -78,288 +78,288 @@ #include #define TOTAL_TRACKS (_obj->tochdr.ending_track \ - - _obj->tochdr.starting_track + 1) + - _obj->tochdr.starting_track + 1) #define FIRST_TRACK_NUM (_obj->tochdr.starting_track) typedef struct { - generic_img_private_t gen; + generic_img_private_t gen; - bool toc_valid; - struct ioc_toc_header tochdr; - struct cd_toc_entry tocent[100]; + bool toc_valid; + struct ioc_toc_header tochdr; + struct cd_toc_entry tocent[100]; - bool sessionformat_valid; - int sessionformat[100]; /* format of the session the track is in */ + bool sessionformat_valid; + int sessionformat[100]; /* format of the session the track is in */ } _img_private_t; static driver_return_code_t run_scsi_cmd_netbsd(void *p_user_data, unsigned int i_timeout_ms, - unsigned int i_cdb, const mmc_cdb_t *p_cdb, - cdio_mmc_direction_t e_direction, - unsigned int i_buf, void *p_buf ) + unsigned int i_cdb, const mmc_cdb_t *p_cdb, + cdio_mmc_direction_t e_direction, + unsigned int i_buf, void *p_buf ) { - const _img_private_t *_obj = p_user_data; - scsireq_t req; + const _img_private_t *_obj = p_user_data; + scsireq_t req; - memset(&req, 0, sizeof(req)); - memcpy(&req.cmd[0], p_cdb, i_cdb); - req.cmdlen = i_cdb; - req.datalen = i_buf; - req.databuf = p_buf; - req.timeout = i_timeout_ms; - req.flags = e_direction == SCSI_MMC_DATA_READ ? SCCMD_READ : SCCMD_WRITE; + memset(&req, 0, sizeof(req)); + memcpy(&req.cmd[0], p_cdb, i_cdb); + req.cmdlen = i_cdb; + req.datalen = i_buf; + req.databuf = p_buf; + req.timeout = i_timeout_ms; + req.flags = e_direction == SCSI_MMC_DATA_READ ? SCCMD_READ : SCCMD_WRITE; - if (ioctl(_obj->gen.fd, SCIOCCOMMAND, &req) < 0) { - perror("SCIOCCOMMAND"); - return -1; - } - if (req.retsts != SCCMD_OK) { - fprintf(stderr, "SCIOCCOMMAND cmd 0x%02x sts %d\n", req.cmd[0], req.retsts); - return -1; - } + if (ioctl(_obj->gen.fd, SCIOCCOMMAND, &req) < 0) { + perror("SCIOCCOMMAND"); + return -1; + } + if (req.retsts != SCCMD_OK) { + fprintf(stderr, "SCIOCCOMMAND cmd 0x%02x sts %d\n", req.cmd[0], req.retsts); + return -1; + } - return 0; + return 0; } static int read_audio_sectors_netbsd(void *user_data, void *data, lsn_t lsn, - unsigned int nblocks) + unsigned int nblocks) { - scsireq_t req; - _img_private_t *_obj = user_data; + scsireq_t req; + _img_private_t *_obj = user_data; - memset(&req, 0, sizeof(req)); - req.cmd[0] = 0xbe; - req.cmd[1] = 0; - req.cmd[2] = (lsn >> 24) & 0xff; - req.cmd[3] = (lsn >> 16) & 0xff; - req.cmd[4] = (lsn >> 8) & 0xff; - req.cmd[5] = (lsn >> 0) & 0xff; - req.cmd[6] = (nblocks >> 16) & 0xff; - req.cmd[7] = (nblocks >> 8) & 0xff; - req.cmd[8] = (nblocks >> 0) & 0xff; - req.cmd[9] = 0x78; - req.cmdlen = 10; + memset(&req, 0, sizeof(req)); + req.cmd[0] = 0xbe; + req.cmd[1] = 0; + req.cmd[2] = (lsn >> 24) & 0xff; + req.cmd[3] = (lsn >> 16) & 0xff; + req.cmd[4] = (lsn >> 8) & 0xff; + req.cmd[5] = (lsn >> 0) & 0xff; + req.cmd[6] = (nblocks >> 16) & 0xff; + req.cmd[7] = (nblocks >> 8) & 0xff; + req.cmd[8] = (nblocks >> 0) & 0xff; + req.cmd[9] = 0x78; + req.cmdlen = 10; - req.datalen = nblocks * CDIO_CD_FRAMESIZE_RAW; - req.databuf = data; - req.timeout = 10000; - req.flags = SCCMD_READ; + req.datalen = nblocks * CDIO_CD_FRAMESIZE_RAW; + req.databuf = data; + req.timeout = 10000; + req.flags = SCCMD_READ; - if (ioctl(_obj->gen.fd, SCIOCCOMMAND, &req) < 0) { - perror("SCIOCCOMMAND"); - return 1; - } - if (req.retsts != SCCMD_OK) { - fprintf(stderr, "SCIOCCOMMAND cmd 0xbe sts %d\n", req.retsts); - return 1; - } + if (ioctl(_obj->gen.fd, SCIOCCOMMAND, &req) < 0) { + perror("SCIOCCOMMAND"); + return 1; + } + if (req.retsts != SCCMD_OK) { + fprintf(stderr, "SCIOCCOMMAND cmd 0xbe sts %d\n", req.retsts); + return 1; + } - return 0; + return 0; } static int read_mode2_sector_netbsd(void *user_data, void *data, lsn_t lsn, - bool mode2_form2) + bool mode2_form2) { - scsireq_t req; - _img_private_t *_obj = user_data; - char buf[M2RAW_SECTOR_SIZE] = { 0, }; + scsireq_t req; + _img_private_t *_obj = user_data; + char buf[M2RAW_SECTOR_SIZE] = { 0, }; - memset(&req, 0, sizeof(req)); - req.cmd[0] = 0xbe; - req.cmd[1] = 0; - req.cmd[2] = (lsn >> 24) & 0xff; - req.cmd[3] = (lsn >> 16) & 0xff; - req.cmd[4] = (lsn >> 8) & 0xff; - req.cmd[5] = (lsn >> 0) & 0xff; - req.cmd[6] = 0; - req.cmd[7] = 0; - req.cmd[8] = 1; - req.cmd[9] = 0x58; /* subheader + userdata + ECC */ - req.cmdlen = 10; + memset(&req, 0, sizeof(req)); + req.cmd[0] = 0xbe; + req.cmd[1] = 0; + req.cmd[2] = (lsn >> 24) & 0xff; + req.cmd[3] = (lsn >> 16) & 0xff; + req.cmd[4] = (lsn >> 8) & 0xff; + req.cmd[5] = (lsn >> 0) & 0xff; + req.cmd[6] = 0; + req.cmd[7] = 0; + req.cmd[8] = 1; + req.cmd[9] = 0x58; /* subheader + userdata + ECC */ + req.cmdlen = 10; - req.datalen = M2RAW_SECTOR_SIZE; - req.databuf = buf; - req.timeout = 10000; - req.flags = SCCMD_READ; + req.datalen = M2RAW_SECTOR_SIZE; + req.databuf = buf; + req.timeout = 10000; + req.flags = SCCMD_READ; - if (ioctl(_obj->gen.fd, SCIOCCOMMAND, &req) < 0) { - perror("SCIOCCOMMAND"); - return 1; - } - if (req.retsts != SCCMD_OK) { - fprintf(stderr, "SCIOCCOMMAND cmd 0xbe sts %d\n", req.retsts); - return 1; - } + if (ioctl(_obj->gen.fd, SCIOCCOMMAND, &req) < 0) { + perror("SCIOCCOMMAND"); + return 1; + } + if (req.retsts != SCCMD_OK) { + fprintf(stderr, "SCIOCCOMMAND cmd 0xbe sts %d\n", req.retsts); + return 1; + } - if (mode2_form2) - memcpy(data, buf, M2RAW_SECTOR_SIZE); - else - memcpy(data, buf + CDIO_CD_SUBHEADER_SIZE, CDIO_CD_FRAMESIZE); + if (mode2_form2) + memcpy(data, buf, M2RAW_SECTOR_SIZE); + else + memcpy(data, buf + CDIO_CD_SUBHEADER_SIZE, CDIO_CD_FRAMESIZE); - return 0; + return 0; } static int read_mode2_sectors_netbsd(void *user_data, void *data, lsn_t lsn, - bool mode2_form2, unsigned int nblocks) + bool mode2_form2, unsigned int nblocks) { - int i, res; - char *buf = data; + int i, res; + char *buf = data; - for (i = 0; i < nblocks; i++) { - res = read_mode2_sector_netbsd(user_data, buf, lsn, mode2_form2); - if (res) - return res; + for (i = 0; i < nblocks; i++) { + res = read_mode2_sector_netbsd(user_data, buf, lsn, mode2_form2); + if (res) + return res; - buf += (mode2_form2 ? M2RAW_SECTOR_SIZE : CDIO_CD_FRAMESIZE); - lsn++; - } + buf += (mode2_form2 ? M2RAW_SECTOR_SIZE : CDIO_CD_FRAMESIZE); + lsn++; + } - return 0; + return 0; } static int set_arg_netbsd(void *user_data, const char key[], const char value[]) { - _img_private_t *_obj = user_data; + _img_private_t *_obj = user_data; - if (!strcmp(key, "source")) { - if (!value) - return -2; + if (!strcmp(key, "source")) { + if (!value) + return -2; - free(_obj->gen.source_name); - _obj->gen.source_name = strdup(value); - } else if (!strcmp(key, "access-mode")) { - if (strcmp(value, "READ_CD")) - cdio_error("unknown access type: %s ignored.", value); - } else - return -1; + free(_obj->gen.source_name); + _obj->gen.source_name = strdup(value); + } else if (!strcmp(key, "access-mode")) { + if (strcmp(value, "READ_CD")) + cdio_error("unknown access type: %s ignored.", value); + } else + return -1; - return 0; + return 0; } static bool _cdio_read_toc(_img_private_t *_obj) { - int res; - struct ioc_read_toc_entry req; + int res; + struct ioc_read_toc_entry req; - res = ioctl(_obj->gen.fd, CDIOREADTOCHEADER, &_obj->tochdr); - if (res < 0) { - cdio_error("error in ioctl(CDIOREADTOCHEADER): %s\n", - strerror(errno)); - return false; - } + res = ioctl(_obj->gen.fd, CDIOREADTOCHEADER, &_obj->tochdr); + if (res < 0) { + cdio_error("error in ioctl(CDIOREADTOCHEADER): %s\n", + strerror(errno)); + return false; + } - req.address_format = CD_MSF_FORMAT; - req.starting_track = FIRST_TRACK_NUM; - req.data_len = (TOTAL_TRACKS + 1) /* leadout! */ - * sizeof(struct cd_toc_entry); - req.data = _obj->tocent; + req.address_format = CD_MSF_FORMAT; + req.starting_track = FIRST_TRACK_NUM; + req.data_len = (TOTAL_TRACKS + 1) /* leadout! */ + * sizeof(struct cd_toc_entry); + req.data = _obj->tocent; - res = ioctl(_obj->gen.fd, CDIOREADTOCENTRIES, &req); - if (res < 0) { - cdio_error("error in ioctl(CDROMREADTOCENTRIES): %s\n", - strerror(errno)); - return false; - } + res = ioctl(_obj->gen.fd, CDIOREADTOCENTRIES, &req); + if (res < 0) { + cdio_error("error in ioctl(CDROMREADTOCENTRIES): %s\n", + strerror(errno)); + return false; + } - _obj->toc_valid = 1; - return true; + _obj->toc_valid = 1; + return true; } static bool read_toc_netbsd (void *p_user_data) { - return _cdio_read_toc(p_user_data); + return _cdio_read_toc(p_user_data); } static int _cdio_read_discinfo(_img_private_t *_obj) { - scsireq_t req; + scsireq_t req; #define FULLTOCBUF (4 + 1000*11) - unsigned char buf[FULLTOCBUF] = { 0, }; - int i, j; + unsigned char buf[FULLTOCBUF] = { 0, }; + int i, j; - memset(&req, 0, sizeof(req)); - req.cmd[0] = 0x43; /* READ TOC/PMA/ATIP */ - req.cmd[1] = 0x02; - req.cmd[2] = 0x02; /* full TOC */ - req.cmd[3] = 0; - req.cmd[4] = 0; - req.cmd[5] = 0; - req.cmd[6] = 0; - req.cmd[7] = FULLTOCBUF / 256; - req.cmd[8] = FULLTOCBUF % 256; - req.cmd[9] = 0; - req.cmdlen = 10; + memset(&req, 0, sizeof(req)); + req.cmd[0] = 0x43; /* READ TOC/PMA/ATIP */ + req.cmd[1] = 0x02; + req.cmd[2] = 0x02; /* full TOC */ + req.cmd[3] = 0; + req.cmd[4] = 0; + req.cmd[5] = 0; + req.cmd[6] = 0; + req.cmd[7] = FULLTOCBUF / 256; + req.cmd[8] = FULLTOCBUF % 256; + req.cmd[9] = 0; + req.cmdlen = 10; - req.datalen = FULLTOCBUF; - req.databuf = buf; - req.timeout = 10000; - req.flags = SCCMD_READ; + req.datalen = FULLTOCBUF; + req.databuf = buf; + req.timeout = 10000; + req.flags = SCCMD_READ; - if (ioctl(_obj->gen.fd, SCIOCCOMMAND, &req) < 0) { - perror("SCIOCCOMMAND"); - return 1; - } - if (req.retsts != SCCMD_OK) { - fprintf(stderr, "SCIOCCOMMAND cmd 0x43 sts %d\n", req.retsts); - return 1; - } + if (ioctl(_obj->gen.fd, SCIOCCOMMAND, &req) < 0) { + perror("SCIOCCOMMAND"); + return 1; + } + if (req.retsts != SCCMD_OK) { + fprintf(stderr, "SCIOCCOMMAND cmd 0x43 sts %d\n", req.retsts); + return 1; + } #if 1 - printf("discinfo:"); - for (i = 0; i < 4; i++) - printf(" %02x", buf[i]); - printf("\n"); - for (i = 0; i < buf[1] - 2; i++) { - printf(" %02x", buf[i + 4]); - if (!((i + 1) % 11)) - printf("\n"); - } + printf("discinfo:"); + for (i = 0; i < 4; i++) + printf(" %02x", buf[i]); + printf("\n"); + for (i = 0; i < buf[1] - 2; i++) { + printf(" %02x", buf[i + 4]); + if (!((i + 1) % 11)) + printf("\n"); + } #endif - for (i = 4; i < req.datalen_used; i += 11) { - if (buf[i + 3] == 0xa0) { /* POINT */ - /* XXX: assume entry 0xa1 follows */ - for (j = buf[i + 8] - 1; j <= buf[i + 11 + 8] - 1; j++) - _obj->sessionformat[j] = buf[i + 9]; - } - } + for (i = 4; i < req.datalen_used; i += 11) { + if (buf[i + 3] == 0xa0) { /* POINT */ + /* XXX: assume entry 0xa1 follows */ + for (j = buf[i + 8] - 1; j <= buf[i + 11 + 8] - 1; j++) + _obj->sessionformat[j] = buf[i + 9]; + } + } - _obj->sessionformat_valid = true; - return 0; + _obj->sessionformat_valid = true; + return 0; } static int eject_media_netbsd(void *user_data) { - _img_private_t *_obj = user_data; - int fd, res, ret = 0; + _img_private_t *_obj = user_data; + int fd, res, ret = 0; - fd = open(_obj->gen.source_name, O_RDONLY|O_NONBLOCK); - if (fd < 0) - return 2; + fd = open(_obj->gen.source_name, O_RDONLY|O_NONBLOCK); + if (fd < 0) + return 2; - res = ioctl(fd, CDIOCALLOW); - if (res < 0) { - cdio_error("ioctl(fd, CDIOCALLOW) failed: %s\n", - strerror(errno)); - /* go on... */ - } - res = ioctl(fd, CDIOCEJECT); - if (res < 0) { - cdio_error("ioctl(CDIOCEJECT) failed: %s\n", - strerror(errno)); - ret = 1; - } + res = ioctl(fd, CDIOCALLOW); + if (res < 0) { + cdio_error("ioctl(fd, CDIOCALLOW) failed: %s\n", + strerror(errno)); + /* go on... */ + } + res = ioctl(fd, CDIOCEJECT); + if (res < 0) { + cdio_error("ioctl(CDIOCEJECT) failed: %s\n", + strerror(errno)); + ret = 1; + } - close(fd); - return ret; + close(fd); + return ret; } /*! @@ -368,47 +368,47 @@ eject_media_netbsd(void *user_data) { static const char * get_arg_netbsd(void *user_data, const char key[]) { - _img_private_t *_obj = user_data; + _img_private_t *_obj = user_data; - if (!strcmp(key, "source")) { - return _obj->gen.source_name; - } else if (!strcmp(key, "access-mode")) { - return "READ_CD"; + if (!strcmp(key, "source")) { + return _obj->gen.source_name; + } else if (!strcmp(key, "access-mode")) { + return "READ_CD"; } else if (!strcmp (key, "mmc-supported?")) { return "true" ; - } + } - return NULL; + return NULL; } static track_t get_first_track_num_netbsd(void *user_data) { - _img_private_t *_obj = user_data; - int res; + _img_private_t *_obj = user_data; + int res; - if (!_obj->toc_valid) { - res = _cdio_read_toc(_obj); - if (!res) - return CDIO_INVALID_TRACK; - } + if (!_obj->toc_valid) { + res = _cdio_read_toc(_obj); + if (!res) + return CDIO_INVALID_TRACK; + } - return FIRST_TRACK_NUM; + return FIRST_TRACK_NUM; } static track_t get_num_tracks_netbsd(void *user_data) { - _img_private_t *_obj = user_data; - int res; + _img_private_t *_obj = user_data; + int res; - if (!_obj->toc_valid) { - res = _cdio_read_toc(_obj); - if (!res) - return CDIO_INVALID_TRACK; - } + if (!_obj->toc_valid) { + res = _cdio_read_toc(_obj); + if (!res) + return CDIO_INVALID_TRACK; + } - return TOTAL_TRACKS; + return TOTAL_TRACKS; } /*! @@ -417,33 +417,33 @@ get_num_tracks_netbsd(void *user_data) static track_format_t get_track_format_netbsd(void *user_data, track_t track_num) { - _img_private_t *_obj = user_data; - int res; + _img_private_t *_obj = user_data; + int res; - if (!_obj->toc_valid) { - res = _cdio_read_toc(_obj); - if (!res) - return CDIO_INVALID_TRACK; - } + if (!_obj->toc_valid) { + res = _cdio_read_toc(_obj); + if (!res) + return CDIO_INVALID_TRACK; + } - if (track_num > TOTAL_TRACKS || track_num == 0) - return TRACK_FORMAT_ERROR; + if (track_num > TOTAL_TRACKS || track_num == 0) + return TRACK_FORMAT_ERROR; - if (_obj->tocent[track_num - 1].control & 0x04) { - if (!_obj->sessionformat_valid) { - res = _cdio_read_discinfo(_obj); - if (res) - return CDIO_INVALID_TRACK; - } + if (_obj->tocent[track_num - 1].control & 0x04) { + if (!_obj->sessionformat_valid) { + res = _cdio_read_discinfo(_obj); + if (res) + return CDIO_INVALID_TRACK; + } - if (_obj->sessionformat[track_num - 1] == 0x10) - return TRACK_FORMAT_CDI; - else if (_obj->sessionformat[track_num - 1] == 0x20) - return TRACK_FORMAT_XA; - else - return TRACK_FORMAT_DATA; - } else - return TRACK_FORMAT_AUDIO; + if (_obj->sessionformat[track_num - 1] == 0x10) + return TRACK_FORMAT_CDI; + else if (_obj->sessionformat[track_num - 1] == 0x20) + return TRACK_FORMAT_XA; + else + return TRACK_FORMAT_DATA; + } else + return TRACK_FORMAT_AUDIO; } /*! @@ -458,8 +458,8 @@ static bool get_track_green_netbsd(void *user_data, track_t track_num) { - return (get_track_format_netbsd(user_data, track_num) - == TRACK_FORMAT_XA); + return (get_track_format_netbsd(user_data, track_num) + == TRACK_FORMAT_XA); } /*! @@ -474,29 +474,29 @@ get_track_green_netbsd(void *user_data, track_t track_num) static bool get_track_msf_netbsd(void *user_data, track_t track_num, msf_t *msf) { - _img_private_t *_obj = user_data; - int res; + _img_private_t *_obj = user_data; + int res; - if (!msf) - return false; + if (!msf) + return false; - if (!_obj->toc_valid) { - res = _cdio_read_toc(_obj); - if (!res) - return CDIO_INVALID_TRACK; - } + if (!_obj->toc_valid) { + res = _cdio_read_toc(_obj); + if (!res) + return CDIO_INVALID_TRACK; + } - if (track_num == CDIO_CDROM_LEADOUT_TRACK) - track_num = TOTAL_TRACKS + 1; + if (track_num == CDIO_CDROM_LEADOUT_TRACK) + track_num = TOTAL_TRACKS + 1; - if (track_num > TOTAL_TRACKS + 1 || track_num == 0) - return false; + if (track_num > TOTAL_TRACKS + 1 || track_num == 0) + return false; - msf->m = cdio_to_bcd8(_obj->tocent[track_num - 1].addr.msf.minute); - msf->s = cdio_to_bcd8(_obj->tocent[track_num - 1].addr.msf.second); - msf->f = cdio_to_bcd8(_obj->tocent[track_num - 1].addr.msf.frame); + msf->m = cdio_to_bcd8(_obj->tocent[track_num - 1].addr.msf.minute); + msf->s = cdio_to_bcd8(_obj->tocent[track_num - 1].addr.msf.second); + msf->f = cdio_to_bcd8(_obj->tocent[track_num - 1].addr.msf.frame); - return true; + return true; } /*! @@ -510,11 +510,11 @@ get_track_msf_netbsd(void *user_data, track_t track_num, msf_t *msf) static lsn_t get_disc_last_lsn_netbsd(void *user_data) { - msf_t msf; + msf_t msf; - get_track_msf_netbsd(user_data, CDIO_CDROM_LEADOUT_TRACK, &msf); + get_track_msf_netbsd(user_data, CDIO_CDROM_LEADOUT_TRACK, &msf); - return (((msf.m * 60) + msf.s) * CDIO_CD_FRAMES_PER_SEC + msf.f); + return (((msf.m * 60) + msf.s) * CDIO_CD_FRAMES_PER_SEC + msf.f); } #endif /* HAVE_NETBSD_CDROM */ @@ -601,35 +601,40 @@ CdIo_t * cdio_open_netbsd(const char *source_name) { #ifdef HAVE_NETBSD_CDROM - CdIo_t *ret; - _img_private_t *_data; + CdIo_t *ret; + _img_private_t *_data; + + _data = calloc(1, sizeof(_img_private_t)); - _data = calloc(1, sizeof(_img_private_t)); - _data->gen.b_cdtext_error = false; - _data->gen.init = false; - _data->gen.fd = -1; - _data->toc_valid = false; - _data->sessionformat_valid = false; + _data->gen.init = false; + _data->toc_valid = false; + _data->sessionformat_valid = false; + _data->gen.fd = -1; + _data->gen.b_cdtext_error = false; + + set_arg_netbsd(_data, "source", + (source_name ? source_name : DEFAULT_CDIO_DEVICE)); + + if (source_name && !cdio_is_device_generic(source_name)) + return (NULL); + + ret = cdio_new(&_data->gen, &_funcs); + if (ret == NULL) return NULL; + + ret->driver_id = DRIVER_NETBSD; - set_arg_netbsd(_data, "source", - (source_name ? source_name : DEFAULT_CDIO_DEVICE)); + if (cdio_generic_init(_data, O_RDONLY)) { + return ret; + } else { + cdio_generic_free(_data); + free(ret); + return NULL; + } - if (source_name && !cdio_is_device_generic(source_name)) - return (NULL); - - ret = cdio_new(&_data->gen, &_funcs); - if (!ret) - return NULL; - - if (cdio_generic_init(_data, O_RDONLY)) { - return ret; - } else { - cdio_generic_free(_data); - return NULL; - } #else return NULL; -#endif /* HAVE_BSDI_CDROM */ +#endif /* HAVE_NETBSD_CDROM */ + } /*! diff --git a/lib/driver/os2.c b/lib/driver/os2.c index 1c644a89..d8f9af44 100644 --- a/lib/driver/os2.c +++ b/lib/driver/os2.c @@ -1520,6 +1520,7 @@ cdio_open_os2 (const char *psz_orig_source) return ret; else { free_os2 (_data); + free(ret); return NULL; } #else diff --git a/lib/driver/osx.c b/lib/driver/osx.c index 9d52928a..839e0771 100644 --- a/lib/driver/osx.c +++ b/lib/driver/osx.c @@ -178,7 +178,7 @@ GetRegistryEntryProperties ( io_service_t service ) CFMutableDictionaryRef dict = 0; err = IORegistryEntryCreateCFProperties (service, &dict, - kCFAllocatorDefault, 0); + kCFAllocatorDefault, 0); if ( err != kIOReturnSuccess ) cdio_warn( "IORegistryEntryCreateCFProperties: 0x%08x", err ); @@ -295,7 +295,7 @@ init_osx(_img_private_t *p_env) { ret = IOServiceGetMatchingServices( kIOMasterPortDefault, IOBSDNameMatching(kIOMasterPortDefault, - 0, psz_devname), + 0, psz_devname), &iterator ); /* Get service iterator for the device. */ @@ -1400,20 +1400,20 @@ static void media_eject_callback(DADiskRef disk, DADissenterRef dissenter, void if ( dissenter ) { - CFStringRef status = DADissenterGetStatusString(dissenter); - if (status) - { - size_t cstr_size = CFStringGetLength(status); - char *cstr = malloc(cstr_size); - if ( CFStringGetCString( status, - cstr, cstr_size, - kCFStringEncodingASCII ) ) - CFRelease( status ); + CFStringRef status = DADissenterGetStatusString(dissenter); + if (status) + { + size_t cstr_size = CFStringGetLength(status); + char *cstr = malloc(cstr_size); + if ( CFStringGetCString( status, + cstr, cstr_size, + kCFStringEncodingASCII ) ) + CFRelease( status ); - cdio_warn("%s", cstr); + cdio_warn("%s", cstr); - free(cstr); - } + free(cstr); + } } dacontext->result = (dissenter ? DRIVER_OP_ERROR : DRIVER_OP_SUCCESS); @@ -1477,27 +1477,27 @@ _eject_media_osx (void *user_data) { if ((disk = DADiskCreateFromBSDName(kCFAllocatorDefault, dacontext.session, psz_drive)) != NULL) { if ((description = DADiskCopyDescription(disk)) != NULL) - { - /* Does the device need to be unmounted first? */ - DASessionScheduleWithRunLoop(dacontext.session, dacontext.runloop, kCFRunLoopDefaultMode); - CFRunLoopAddSource(dacontext.runloop, dacontext.cancel, kCFRunLoopDefaultMode); + { + /* Does the device need to be unmounted first? */ + DASessionScheduleWithRunLoop(dacontext.session, dacontext.runloop, kCFRunLoopDefaultMode); + CFRunLoopAddSource(dacontext.runloop, dacontext.cancel, kCFRunLoopDefaultMode); - if (CFDictionaryGetValueIfPresent(description, kDADiskDescriptionVolumePathKey, NULL)) - { - DADiskUnmount(disk, kDADiskUnmountOptionDefault, media_unmount_callback, &dacontext); + if (CFDictionaryGetValueIfPresent(description, kDADiskDescriptionVolumePathKey, NULL)) + { + DADiskUnmount(disk, kDADiskUnmountOptionDefault, media_unmount_callback, &dacontext); } - else - { - DADiskEject(disk, kDADiskEjectOptionDefault, media_eject_callback, &dacontext); - dacontext.result = dacontext.result == DRIVER_OP_UNINIT ? DRIVER_OP_SUCCESS : dacontext.result; + else + { + DADiskEject(disk, kDADiskEjectOptionDefault, media_eject_callback, &dacontext); + dacontext.result = dacontext.result == DRIVER_OP_UNINIT ? DRIVER_OP_SUCCESS : dacontext.result; } - if (!dacontext.completed) - { - CFRunLoopRunInMode(kCFRunLoopDefaultMode, 30.0, TRUE); /* timeout after 30 seconds */ + if (!dacontext.completed) + { + CFRunLoopRunInMode(kCFRunLoopDefaultMode, 30.0, TRUE); /* timeout after 30 seconds */ } - CFRunLoopRemoveSource(dacontext.runloop, dacontext.cancel, kCFRunLoopDefaultMode); - DASessionUnscheduleFromRunLoop(dacontext.session, dacontext.runloop, kCFRunLoopDefaultMode); - CFRelease(description); + CFRunLoopRemoveSource(dacontext.runloop, dacontext.cancel, kCFRunLoopDefaultMode); + DASessionUnscheduleFromRunLoop(dacontext.session, dacontext.runloop, kCFRunLoopDefaultMode); + CFRelease(description); } CFRelease(disk); } @@ -1944,13 +1944,15 @@ cdio_open_osx (const char *psz_orig_source) _data->gen.init = false; _data->gen.fd = -1; _data->gen.toc_init = false; + _data->gen.b_cdtext_error = false; if (NULL == psz_orig_source) { psz_source=cdio_get_default_device_osx(); if (NULL == psz_source) { - cdio_generic_free(_data); - return NULL; + free(_data); + return NULL; } + _set_arg_osx(_data, "source", psz_source); free(psz_source); } else { @@ -1961,21 +1963,21 @@ cdio_open_osx (const char *psz_orig_source) #if 0 cdio_info ("source %s is a not a device", psz_orig_source); #endif - cdio_generic_free(_data); + free(_data); return NULL; } } ret = cdio_new ((void *)_data, &_funcs); - if (ret == NULL) { - cdio_generic_free(_data); - return NULL; - } + if (ret == NULL) return NULL; + ret->driver_id = DRIVER_OSX; + if (cdio_generic_init(_data, O_RDONLY | O_NONBLOCK) && init_osx(_data)) return ret; else { cdio_generic_free (_data); + free(ret); return NULL; } diff --git a/lib/driver/solaris.c b/lib/driver/solaris.c index 32554e4d..ac951727 100644 --- a/lib/driver/solaris.c +++ b/lib/driver/solaris.c @@ -1420,7 +1420,11 @@ cdio_open_am_solaris (const char *psz_orig_source, const char *access_mode) if (NULL == psz_orig_source) { psz_source = cdio_get_default_device_solaris(); - if (NULL == psz_source) return NULL; + if (NULL == psz_source) { + free(_data); + return NULL; + } + _set_arg_solaris(_data, "source", psz_source); free(psz_source); } else { @@ -1445,6 +1449,7 @@ cdio_open_am_solaris (const char *psz_orig_source, const char *access_mode) return ret; else { cdio_generic_free (_data); + free(ret); return NULL; } diff --git a/src/Makefile.am b/src/Makefile.am index 62fe1fc7..3a1bf156 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -86,6 +86,6 @@ EXTRA_DIST = cd-drive.help2man cd-info.help2man cd-read.help2man \ if MAINTAINER_MODE $(man_MANS): %.1: %$(EXEEXT) %.help2man - -$(HELP2MAN) --opt-include=$(srcdir)/$(<:.exe=).help2man --no-info ./$< | @SED@ -re 's/[lL][tT]-//' >$@ + -$(HELP2MAN) --opt-include=$(srcdir)/$(<:.exe=).help2man --no-info ./$< | @SED@ @SED_EXTENDED_RE_FLAG@ -e 's/[lL][tT]-//' >$@ endif MAINTAINERCLEANFILES = $(man_MANS) *.rej *.orig