/[antiright]/antiright/src/arcd/arcd.c
ViewVC logotype

Diff of /antiright/src/arcd/arcd.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by jefbed, Wed Jul 14 23:42:30 2004 UTC revision 1.3 by jefbed, Mon Aug 23 01:15:56 2004 UTC
# Line 29  Line 29 
29  #include <linux/cdrom.h>  #include <linux/cdrom.h>
30  #endif  #endif
31    
32    #ifdef HAVE_LIBCDAUDIO
33    #include <cdaudio.h>
34    #endif /* HAVE_LIBCDAUDIO  */
35    
36  /* CD-ROM file descriptor id.  */  /* CD-ROM file descriptor id.  */
37  int arcd_file_descriptor;  int arcd_file_descriptor;
38  /* Track list structure.  */  /* Track list structure.  */
# Line 62  initialize_cdrom() Line 66  initialize_cdrom()
66  void  void
67  arcd_play()  arcd_play()
68  {  {
69    #ifdef HAVE_LIBCDAUDIO
70    #else
71      cd_play(arcd_file_descriptor, 1);
72  #ifdef HAVE_LINUX_CDROM_H  #ifdef HAVE_LINUX_CDROM_H
73    ioctl(arcd_file_descriptor, CDROMPLAYTRKIND, &arcd_tracks);    ioctl(arcd_file_descriptor, CDROMPLAYTRKIND, &arcd_tracks);
74  #endif /* HAVE_LINUX_CDROM_H  */  #endif /* HAVE_LINUX_CDROM_H  */
75    #endif /* HAVE_LIBCDAUDIO  */
76  }  }
77  void  void
78  arcd_initialized_command(int command)  arcd_initialized_command(int command)
# Line 82  void Line 90  void
90  arcd_start_play_at_track(int* counter_int,  arcd_start_play_at_track(int* counter_int,
91                           char** argv)                           char** argv)
92  {  {
93    #ifndef HAVE_LIBCDAUDIO
94    #ifdef HAVE_LINUX_CDROM_H
95    Boolean track_not_before_first_track, track_not_after_last_track;    Boolean track_not_before_first_track, track_not_after_last_track;
96    #endif /* HAVE_LINUX_CDROM_H  */
97    #endif /* not HAVE_LIBCDAUDIO  */
98    (*counter_int)++;    (*counter_int)++;
99    initialize_cdrom();    initialize_cdrom();
100    #ifdef HAVE_LIBCDAUDIO
101      cd_play(arcd_file_descriptor, atoi(argv[(*counter_int)]));
102    #else
103  #ifdef HAVE_LINUX_CDROM_H  #ifdef HAVE_LINUX_CDROM_H
104    track_not_before_first_track = (atoi(argv[(*counter_int)])    track_not_before_first_track = (atoi(argv[(*counter_int)])
105                                    >= arcd_track_list.cdth_trk0);                                    >= arcd_track_list.cdth_trk0);
# Line 102  arcd_start_play_at_track(int* counter_in Line 116  arcd_start_play_at_track(int* counter_in
116        arcd_usage();        arcd_usage();
117      }      }
118  #endif /* HAVE_LINUX_CDROM_H  */  #endif /* HAVE_LINUX_CDROM_H  */
119    #endif /* HAVE_LIBCDAUDIO  */
120  }  }
121    
122  void  void
# Line 109  arcd_print_number_of_tracks() Line 124  arcd_print_number_of_tracks()
124  {  {
125    /* This prints the number of tracks on the current CD.  */    /* This prints the number of tracks on the current CD.  */
126    initialize_cdrom();    initialize_cdrom();
127    #ifdef HAVE_LIBCDAUDIO
128      {
129        struct disc_info info;
130        cd_stat(arcd_file_descriptor, &info);
131        printf("%d", info.disc_total_tracks);
132      }
133    #else
134  #ifdef HAVE_LINUX_CDROM_H  #ifdef HAVE_LINUX_CDROM_H
135    printf("%d", arcd_track_list.cdth_trk1);    printf("%d", arcd_track_list.cdth_trk1);
136  #endif /* HAVE_LINUX_CDROM_H  */  #endif /* HAVE_LINUX_CDROM_H  */
137    #endif /* HAVE_LIBCDAUDIO  */
138    fflush(stdout);    fflush(stdout);
139  }  }
140    
141    #ifdef HAVE_LIBCDAUDIO
142    void
143    arcd_status()
144    {
145      //  struct disc_info info;
146      struct disc_status status;
147      char *action;
148      //initialize_cdrom();
149      //cd_stat(arcd_file_descriptor, &info);
150      cd_poll(arcd_file_descriptor, &status);
151      switch(status.status_mode)
152        {
153        case CDAUDIO_PLAYING:
154          action="Playing";
155          break;
156        case CDAUDIO_PAUSED:
157          action="Paused";
158          break;
159        case CDAUDIO_COMPLETED:
160          action="Finished";
161          break;
162        default:
163          action="Stopped";
164        }
165      printf("%d %d:%d %s", status.status_current_track,
166             status.status_track_time.minutes, status.status_track_time.seconds,
167             action);
168      fflush(stdout);
169    }
170    #endif /* HAVE_LIBCDAUDIO  */
171    
172  int  int
173  main(int argc, char** argv)      main(int argc, char** argv)    
174  {  {
# Line 124  main(int argc, char** argv) Line 179  main(int argc, char** argv)
179          switch(argv[counter_int][1])          switch(argv[counter_int][1])
180            {            {
181            case 'P': /* This pauses play.  */            case 'P': /* This pauses play.  */
182    #ifdef HAVE_LIBCDAUDIO
183                cd_pause(arcd_file_descriptor);
184    #else
185  #ifdef HAVE_LINUX_CDROM_H  #ifdef HAVE_LINUX_CDROM_H
186                initialize_cdrom();
187              arcd_initialized_command(CDROMPAUSE);              arcd_initialized_command(CDROMPAUSE);
188  #endif /* HAVE_LINUX_CDROM_H  */  #endif /* HAVE_LINUX_CDROM_H  */
189    #endif /* HAVE_LIBCDAUDIO  */
190              break;              break;
191            case 's': /* This stops the cdrom.  */            case 's': /* This stops the cdrom.  */
192    #ifdef HAVE_LIBCDAUDIO
193                initialize_cdrom();
194                cd_stop(arcd_file_descriptor);
195    #else
196  #ifdef HAVE_LINUX_CDROM_H  #ifdef HAVE_LINUX_CDROM_H
197              arcd_initialized_command(CDROMSTOP);              arcd_initialized_command(CDROMSTOP);
198  #endif /* HAVE_LINUX_CDROM_H  */  #endif /* HAVE_LINUX_CDROM_H  */
199    #endif /* HAVE_LIBCDAUDIO  */
200                break;
201              case 'S':
202                arcd_status();
203              break;              break;
204            case 'r': /* This resumes play.  */            case 'r': /* This resumes play.  */
205    #ifdef HAVE_LIBCDAUDIO
206                initialize_cdrom();
207                cd_resume(arcd_file_descriptor);
208    #else
209  #ifdef HAVE_LINUX_CDROM_H  #ifdef HAVE_LINUX_CDROM_H
210              arcd_initialized_command(CDROMRESUME);              arcd_initialized_command(CDROMRESUME);
211  #endif /* HAVE_LINUX_CDROM_H  */  #endif /* HAVE_LINUX_CDROM_H  */
212    #endif /* HAVE_LIBCDAUDIO  */
213              break;              break;
214            case 't': /* This starts play from a particular track.  */            case 't': /* This starts play from a particular track.  */
215              arcd_start_play_at_track(&counter_int, argv);              arcd_start_play_at_track(&counter_int, argv);
216                while(1)
217                  {
218                    sleep(1);
219                    arcd_status();
220                  }
221              break;              break;
222            case 'T':            case 'T':
223              arcd_print_number_of_tracks();              arcd_print_number_of_tracks();

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26