static int Open( vlc_object_t *p_this )
{
access_t *p_access = (access_t*)p_this;
- access_sys_t *p_sys;
vcddev_t *vcddev;
char *psz_name;
if( psz_name[0] && psz_name[1] == ':' &&
psz_name[2] == '\\' && psz_name[3] == '\0' ) psz_name[2] = '\0';
#endif
- /* Set up p_access */
- STANDARD_BLOCK_ACCESS_INIT
- /* Open CDDA */
- if( (vcddev = ioctl_Open( VLC_OBJECT(p_access), psz_name ) ) == NULL )
+ access_sys_t *p_sys = calloc( 1, sizeof (*p_sys) );
+ if( unlikely(p_sys == NULL) )
{
- msg_Warn( p_access, "could not open %s", psz_name );
free( psz_name );
+ return VLC_ENOMEM;
+ }
+ p_access->p_sys = p_sys;
+
+ /* Open CDDA */
+ vcddev = ioctl_Open( VLC_OBJECT(p_access), psz_name );
+ if( vcddev == NULL )
+ msg_Warn( p_access, "could not open %s", psz_name );
+ free( psz_name );
+ if( vcddev == NULL )
+ {
free( p_sys );
return VLC_EGENERIC;
}
- free( psz_name );
+
p_sys->vcddev = vcddev;
/* Do we play a single track ? */
* (int64_t)CDDA_DATA_SIZE;
}
+ /* Set up p_access */
+ access_InitFields( p_access );
+ ACCESS_SET_CALLBACKS( NULL, Block, Control, Seek );
return VLC_SUCCESS;
error: