]> git.lizzy.rs Git - plan9front.git/blobdiff - rc/bin/play
play(1): handle file names containing consecutive spaces
[plan9front.git] / rc / bin / play
index 80ea396b0bcf478e99f50885d3a5c7bcd6f5f240..dfb05ed7f7a70db108403f1ceceb4e2284a8282c 100755 (executable)
@@ -1,6 +1,8 @@
 #!/bin/rc
 rfork e
 
+nl='
+'
 out=/dev/audio
 typ=()
 tmp=()
@@ -31,7 +33,7 @@ fn play1 {
        if not {
                switch($2){
                case *plain*
-                       sed 's/\r//g' | while(j=`{read}){
+                       sed 's/\r//g' | while(j=`$nl{read}){
                                echo $"j >[1=2]
                                if(~ $"j http:* https:* HTTP:* HTTPS:*){
                                        hget -r 'User-Agent: play' -r 'Icy-MetaData: 0' $"j | play1 $"j
@@ -54,6 +56,10 @@ fn play1 {
                        audio/flacdec
                case *audio/basic*
                        audio/sundec
+               case *audio/midi*
+                       games/midi -c
+               case *audio/mus*
+                       games/mus | games/midi -c
                case *pls*
                        awk 'BEGIN {FS="="} /^File/{print $2}' | play1 list plain
                case *
@@ -68,6 +74,10 @@ fn play1 {
                                audio/flacdec
                        case *.au *.AU
                                audio/sundec
+                       case *.mid *.MID
+                               games/midi -c
+                       case *.mus *.MUS
+                               games/mus | games/midi -c
                        case *
                                echo $argv0: $1: unknown format: $2 >[1=2]
                        }
@@ -76,7 +86,7 @@ fn play1 {
 }
 
 fn usage {
-       echo usage: $argv0 [ -o file ] [ file ... ] >[1=2]
+       echo usage: $argv0 '[ -o file ] [ file ... ]' >[1=2]
        exit usage
 }
 
@@ -96,5 +106,5 @@ while(~ $1 -*){
 
 >$out {
        if(~ $#* 0){play1 stdin; exit}
-       for(i){echo $i} | play1 args plain
+       for(i){echo $"i} | play1 args plain
 }