+ if((mode&RECORD) && (mode&PLAY)) {
+ FD_ZERO(&read_fds);
+ FD_ZERO(&write_fds);
+ /* read_fds */
+ FD_SET(0,&read_fds);
+ FD_SET(pfile_fd,&read_fds);
+ FD_SET(audio_fd,&read_fds);
+ /* write_fds */
+ FD_SET(sfile_fd,&write_fds);
+ FD_SET(audio_fd,&write_fds);
+ fds_tv.tv_sec=0;
+ fds_tv.tv_usec=1000;
+ while(c!='q') {
+ k=select(sfile_fd+1,&read_fds,&write_fds,NULL,&fds_tv);
+ if(k==0) printf("itz zZzero :p\n");
+ if(k) {
+ if(FD_ISSET(0,&read_fds)) {
+ puts("reading from stdin");
+ read(0,&c,1);
+ }
+ if(FD_ISSET(pfile_fd,&read_fds)) {
+ puts("read from sound file");
+ read(pfile_fd,buf2,set.bufsize);
+ }
+ if(FD_ISSET(audio_fd,&read_fds)) {
+ puts("reading from audio device");
+ read(audio_fd,buf,set.bufsize);
+ }
+ if(FD_ISSET(sfile_fd,&write_fds)) {
+ puts("writing to file");
+ write(sfile_fd,buf,set.bufsize);
+ }
+ if(FD_ISSET(audio_fd,&write_fds)) {
+ puts("writing to audio device");
+ write(audio_fd,buf2,set.bufsize);
+ }
+ }
+ }
+ }
+