@@ -3,45 +3,50 @@ package main
33
44import (
55 "bufio"
6+ "flag"
67 "fmt"
78 "io"
89 "io/ioutil"
910 "log"
1011 "os"
12+ "strings"
1113
1214 "golang.org/x/image/riff"
1315)
1416
1517var exitValue = 0
1618
1719func main () {
18- if len (os .Args ) < 3 {
19- fmt .Print ("Usage: vcodec riff_file codec1 codec2 ...\n codec name case DO matter\n " )
20+ flag .Parse ()
21+ if len (flag .Args ()) < 2 {
22+ fmt .Print ("Usage: vcodec riff_file codec1 codec2 ...\n codec name is case insensitive\n " )
2023 os .Exit (2 )
2124 }
25+ //A little trick to handle the "panic", os.Exit doesn't call deferred functions
2226 main2 ()
23- fmt .Printf ("Exitvalue : %d\n " , exitValue )
27+ fmt .Printf ("Exit Value : %d\n " , exitValue )
2428 os .Exit (exitValue )
2529}
2630
2731func main2 () {
28- f , err := os .Open (os . Args [ 1 ] )
32+ f , err := os .Open (flag . Arg ( 0 ) )
2933 if err != nil {
3034 log .Fatal (err )
3135 }
3236 defer f .Close ()
3337 defer func () {
3438 if r := recover (); r != nil {
3539 fmt .Printf ("Codec: %s\n " , r )
36- for _ , v := range os .Args [2 :] {
37- if r == v {
40+ codec := fmt .Sprintf ("%s" , r )
41+ for _ , v := range flag .Args ()[1 :] {
42+ if strings .EqualFold (codec , v ) {
3843 exitValue = 1
3944 break
4045 }
4146 }
4247 }
4348 }()
44- formType , r , err := riff .NewReader (bufio .NewReader (io .LimitReader (f , 16384 )))
49+ formType , r , err := riff .NewReader (bufio .NewReader (io .LimitReader (f , 8192 )))
4550 if err != nil {
4651 log .Fatal (err )
4752 }
0 commit comments