summaryrefslogtreecommitdiff
path: root/audio/cdplay/files/patch-main.c
diff options
context:
space:
mode:
Diffstat (limited to 'audio/cdplay/files/patch-main.c')
-rw-r--r--audio/cdplay/files/patch-main.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/audio/cdplay/files/patch-main.c b/audio/cdplay/files/patch-main.c
new file mode 100644
index 000000000000..d204d5834052
--- /dev/null
+++ b/audio/cdplay/files/patch-main.c
@@ -0,0 +1,85 @@
+
+$FreeBSD$
+
+--- ./main.c.orig Mon May 19 15:44:41 2003
++++ ./main.c Mon May 19 15:55:24 2003
+@@ -35,11 +35,14 @@
+ int main(int argc, char **argv)
+ {
+ char cmd[1];
++ int repetivity;
+ fd_set rset;
+ struct timeval stime;
+
+ /* Parse arguments */
+- cd_device=DEVICE;
++ cd_device=getenv("CDROM");
++ if (cd_device==NULL)
++ cd_device=DEVICE;
+ if(argc>1 && !strcmp(argv[1],"-d"))
+ cd_device=argv[2];
+ else if(argc>1)
+@@ -68,19 +71,20 @@
+
+ while(1){
+ if(select(1,&rset,(fd_set *) 0,(fd_set *) 0,&stime)>0) {
+- read(STDIN_FILENO,cmd,FD_SETSIZE);
+-
++ getcommand(&cmd[0], &repetivity);
++
+ if(cmd[0]=='p'){message="play";play_track(1);}
+ else if(cmd[0]=='F'){message="next";next();}
+ else if(cmd[0]=='R'){message="prev";prev();}
+- else if(cmd[0]=='f'){message="ff";ff();}
+- else if(cmd[0]=='r'){message="rew";rew();}
++ else if(cmd[0]=='f'){message="ff";ff(repetivity);}
++ else if(cmd[0]=='r'){message="rew";rew(repetivity);}
+ else if(cmd[0]=='s'){message="stop";stop();}
+- else if(cmd[0]=='e'){message="eject";eject();}
+- else if(cmd[0]==' ') cdpause();
++ else if(cmd[0]=='E'){message="eject";eject();}
++ else if(cmd[0]==' ') cdsoftpause();
+ else if(cmd[0]=='+'){message="more vol";more_vol();}
+ else if(cmd[0]=='-'){message="less vol";less_vol();}
+ else if(cmd[0]=='q'){message="bye!";do_exit(0);}
++ else if(cmd[0]=='P') cdpause();
+ }
+ update_cdinfo();
+ move_up(5);
+@@ -90,6 +94,36 @@
+ }
+
+ exit(0);
++}
++
++void getcommand(char *command, int *repetivity)
++{
++ static char stored_command;
++ int n;
++
++ fcntl(STDIN_FILENO, F_SETFL, O_NONBLOCK);
++
++ if (stored_command) {
++ *command=stored_command;
++ } else {
++ n=read(STDIN_FILENO,command,1);
++ if (n <= 0) {
++ *command='\0';
++ *repetivity=0;
++ return;
++ }
++ }
++
++ *repetivity=1;
++ while (read(STDIN_FILENO, &stored_command, 1) > 0) {
++ if (stored_command == *command) {
++ (*repetivity)++;
++ } else {
++ return;
++ }
++ }
++ stored_command='\0';
++ return;
+ }
+
+ void hs_cont(void)