.TH "SDL_CDOpen" "3" "Sun 10 Jun 2001, 19:40" "SDL" "SDL API Reference" 
.SH "NAME"
SDL_CDOpen\- Opens a CD-ROM drive for access\&.
.SH "SYNOPSIS"
.PP
\fB#include "SDL\&.h"
.sp
\fBSDL_CD *\fBSDL_CDOpen\fP\fR(\fBint drive\fR);
.SH "DESCRIPTION"
.PP
Opens a CD-ROM drive for access\&. It returns a \fI\fBSDL_CD\fR\fR structure on success, or \fBNULL\fP if the drive was invalid or busy\&. This newly opened CD-ROM becomes the default CD used when other CD functions are passed a \fBNULL\fP CD-ROM handle\&. 
.PP
Drives are numbered starting with 0\&. Drive 0 is the system default CD-ROM\&.
.SH "EXAMPLES"
.PP
.nf
\f(CWSDL_CD *cdrom;
int cur_track;
int min, sec, frame;
SDL_Init(SDL_INIT_CDROM);
atexit(SDL_Quit);

/* Check for CD drives */
if(!SDL_CDNumDrives()){
  /* None found */
  fprintf(stderr, "No CDROM devices available
");
  exit(-1);
}

/* Open the default drive */
cdrom=SDL_CDOpen(0);

/* Did if open? Check if cdrom is NULL */
if(!cdrom){
  fprintf(stderr, "Couldn\&'t open drive: %s
", SDL_GetError());
  exit(-1);
}

/* Print Volume info */
printf("Name: %s
", SDL_CDName(0));
printf("Tracks: %d
", cdrom->numtracks);
for(cur_track=0;cur_track < cdrom->numtracks; cur_track++){
  FRAMES_TO_MSF(cdrom->track[cur_track]\&.length, &min, &sec, &frame);
  printf("	Track %d: Length %d:%d
", cur_track, min, sec);
}

SDL_CDClose(cdrom);\fR
.fi
.PP
.SH "SEE ALSO"
.PP
\fI\fBSDL_CD\fR\fR, \fI\fBSDL_CDtrack\fR\fR, \fI\fBSDL_CDClose\fP\fR
...\" created by instant / docbook-to-man, Sun 10 Jun 2001, 19:40
