diff options
Diffstat (limited to 'audio/cdplay/files/patch-main.c')
-rw-r--r-- | audio/cdplay/files/patch-main.c | 85 |
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) |