Changeset 806:01208d682d8e in roaraudio for libroaryiff
- Timestamp:
- 09/17/08 16:39:59 (16 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroaryiff/audiocd.c
r688 r806 25 25 #include <libroaryiff.h> 26 26 27 struct { 28 int fh; 29 int stream; 30 char * device; 31 } _g_roaryiff_cdrom = {-1, -1, NULL}; 32 27 33 int YEjectAudioCD(YConnection *con) { 34 YStopAudioCD(con); 28 35 return system("eject") == 0 ? 0 : -1; 29 36 } 30 37 38 int YPlayAudioCDTrack(YConnection *con, int track_number) { 39 struct roar_connection rcon; 40 int flags; 41 42 if ( con == NULL ) 43 return -1; 44 45 rcon.fh = con->fd; 46 47 48 if ( _g_roaryiff_cdrom.fh == -1 ) { 49 // ok, we need to open the cdrom device 50 if ( _g_roaryiff_cdrom.device == NULL ) { 51 _g_roaryiff_cdrom.device = roar_cdromdevice(); 52 if ( _g_roaryiff_cdrom.device == NULL ) 53 return -1; 54 } 55 if ( (_g_roaryiff_cdrom.fh = open(_g_roaryiff_cdrom.device, O_RDONLY, 0644)) == -1 ) 56 return -1; 57 58 if ( (flags = fcntl(_g_roaryiff_cdrom.fh, F_GETFL, 0)) == -1 ) { 59 close(_g_roaryiff_cdrom.fh); 60 _g_roaryiff_cdrom.fh = -1; 61 return -1; 62 } 63 64 flags |= FD_CLOEXEC; 65 66 if ( fcntl(_g_roaryiff_cdrom.fh, F_SETFL, flags) == -1 ) { 67 close(_g_roaryiff_cdrom.fh); 68 _g_roaryiff_cdrom.fh = -1; 69 return -1; 70 } 71 } 72 73 return -1; 74 } 75 76 int YStopAudioCD(YConnection *con) { 77 struct roar_connection rcon; 78 79 if ( con == NULL ) 80 return -1; 81 82 rcon.fh = con->fd; 83 84 if ( _g_roaryiff_cdrom.fh != -1 ) { 85 close(_g_roaryiff_cdrom.fh); 86 } 87 88 if ( _g_roaryiff_cdrom.stream != -1 ) { 89 roar_kick(&rcon, ROAR_OT_STREAM, _g_roaryiff_cdrom.stream); 90 } 91 92 return 0; 93 } 94 31 95 //ll
Note: See TracChangeset
for help on using the changeset viewer.