@@ -11,23 +11,42 @@ import (
1111 "golang.org/x/image/riff"
1212)
1313
14+ var exitValue = 0
15+
1416func main () {
17+ main2 ()
18+ fmt .Printf ("Exitvalue: %d\n " , exitValue )
19+ os .Exit (exitValue )
20+ }
21+
22+ func main2 () {
1523 f , err := os .Open (os .Args [1 ])
1624 if err != nil {
1725 log .Fatal (err )
1826 }
1927 defer f .Close ()
20- formType , r , err := riff .NewReader (bufio .NewReader (io .LimitReader (f , 65000 )))
28+ defer func () {
29+ if r := recover (); r != nil {
30+ fmt .Printf ("Codec: %s\n " , r )
31+ for _ , v := range os .Args [2 :] {
32+ if r == v {
33+ exitValue = 1
34+ break
35+ }
36+ }
37+ }
38+ }()
39+ formType , r , err := riff .NewReader (bufio .NewReader (io .LimitReader (f , 16384 )))
2140 if err != nil {
2241 log .Fatal (err )
2342 }
2443 fmt .Printf ("RIFF(%s)\n " , formType )
25- if err := dump ( r , ". \t " ); err != nil {
44+ if err := scanriff ( r ); err != nil {
2645 log .Fatal (err )
2746 }
2847}
2948
30- func dump (r * riff.Reader , indent string ) error {
49+ func scanriff (r * riff.Reader ) error {
3150 for {
3251 chunkID , chunkLen , chunkData , err := r .Next ()
3352 if err == io .EOF {
@@ -37,12 +56,11 @@ func dump(r *riff.Reader, indent string) error {
3756 return err
3857 }
3958 if chunkID == riff .LIST {
40- listType , list , err := riff .NewListReader (chunkLen , chunkData )
59+ _ , list , err := riff .NewListReader (chunkLen , chunkData )
4160 if err != nil {
4261 return err
4362 }
44- fmt .Printf ("%sLIST(%s)\n " , indent , listType )
45- if err := dump (list , indent + ".\t " ); err != nil {
63+ if err := scanriff (list ); err != nil {
4664 return err
4765 }
4866 continue
@@ -52,8 +70,7 @@ func dump(r *riff.Reader, indent string) error {
5270 return err
5371 }
5472 if string (b [0 :4 ]) == "vids" {
55- log . Printf ( "_%s_" , string (b [4 :8 ]))
73+ panic ( string (b [4 :8 ]))
5674 }
57- fmt .Printf ("%s%s %q\n " , indent , chunkID , b )
5875 }
5976}
0 commit comments